ПРОБЛЕМА:
В золотодобывающей отрасли есть большие риски запуска предприятий с убыточными характеристиками.
Основная характеристика - низкий коэффициент восстановления золота
из золотосодержащей руды.
ЦЕЛЬ ПРОЕКТА:
Построить прототип модели машинного обучения, которая сможет предсказывать коэффициент обогащения
и поможет оптимизировать производство.
В нашем распоряжении различные параметры
с 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 |
Все поля имеют формат название_этапа.тип_параметра.название_параметра
и отражают состояние процесса в указанный момент времени.