ПРОБЛЕМА:
В золотодобывающей отрасли есть большие риски запуска предприятий с убыточными характеристиками.
Основная характеристика - низкий коэффициент восстановления золота из золотосодержащей руды.
ЦЕЛЬ ПРОЕКТА:
Построить прототип модели машинного обучения, которая сможет предсказывать коэффициент обогащения и поможет оптимизировать производство.
В нашем распоряжении различные параметры с 4-х последовательных этапов процесса извлечения золота из руды:
rougher— флотация
==> черновой концентрат
primary_cleaner— первичная очисткаsecondary_cleaner— вторичная очисткаfinal— финальные характеристики
==> финальный концентрат
ЛИЧНАЯ ЦЕЛЬ:
-
Попробовать свои силы в прикладных задачах для промышленности, разобраться в неизвестной
предметной областии провести детальный исследовательский анализEDA. -
Научиться строить модели для датасетов с
большим количеством признаков. -
Применить на практике подход с Feature Engineering и добиться более
высоких результатовпредсказаний с помощью несложных алгоритмов. -
Научиться использовать для оценки моделей пользовательские метрики
✔️ Исследовательский анализ предметной области ✔️ Временные интервалы
✔️ Большой набор атрибутов (> 80) ✔️ Пайплайны обработки данных
✔️ Матрицы корреляции ✔️ Feature Engineering для числовых признаков
✔️ Аутлайеры и доверительные интервалы ✔️ Skewness распределений
✔️ Кастомная метрика качества
-
Изучили параметры производственного процесса в исходных данных
-
Исследовали
концентрацию веществна разных стадиях ианомалии:- провели оценку skewness распределений
- удалили аутлайеры вне доверительных интервалов
-
Провели
корреляционный анализпараметров и целевых признаков -
Построили предсказания коэффициента обогащения золота на базе 3-х алгоритмов:
- LinearRegression
- DecisionTree
- RandomForest
-
Используя Feature Engineering улучшили результаты базовых моделей:
- подобрали ключевой
набор признаков(15 вместо 52) - создали пайплайн для удаления
аутлайеровпо графикам корреляции
- подобрали ключевой
Для предсказания коэффициента восстановления золота мы подготовили два прототипа моделей машинного обучения
- для чернового концентрата (rough) - Линейная Регрессия
- для финального концентрата (final) - Решающее Дерево
Качество оценивалось с помощью кастомной метрики sMAPE:
| base_models | final_test | |
|---|---|---|
| mscore_rough | 7.033982 | 4.434954 |
| mscore_final | 8.832535 | 7.619455 |
| mscore_total | 7.483620 | 5.231079 |
Возможности для улучшения:
- усложнить модель Случайного Леса и подобрать параметры с помощью
RandomizedSearch - построить модель с помощью
CatBoost
import pandas as pd
df = pd.read_csv("/datasets/gold_recovery_train_new.csv")
display(df.iloc[:, :6].head(3))
df.iloc[:, 84:].head(3)| date | final.output.concentrate_ag | final.output.concentrate_pb | final.output.concentrate_sol | final.output.concentrate_au | final.output.recovery | |
|---|---|---|---|---|---|---|
| 0 | 2016-01-15 00:00:00 | 6.055403 | 9.889648 | 5.507324 | 42.192020 | 70.541216 |
| 1 | 2016-01-15 01:00:00 | 6.029369 | 9.968944 | 5.257781 | 42.701629 | 69.266198 |
| 2 | 2016-01-15 02:00:00 | 6.055926 | 10.213995 | 5.383759 | 42.657501 | 68.116445 |
| secondary_cleaner.state.floatbank5_b_level | secondary_cleaner.state.floatbank6_a_air | secondary_cleaner.state.floatbank6_a_level | |
|---|---|---|---|
| 0 | -500.470978 | 14.151341 | -605.841980 |
| 1 | -500.582168 | 13.998353 | -599.787184 |
| 2 | -500.517572 | 14.028663 | -601.427363 |
Все поля имеют формат название_этапа.тип_параметра.название_параметра и отражают состояние процесса в указанный момент времени.