Skip to content

Добыча золота - предсказание коэффициента обогащения

Notifications You must be signed in to change notification settings

schatzederwelt/gold-recovery-prediction

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

Добыча золота - предсказание коэффициента обогащения

Описание проекта

ПРОБЛЕМА:

В золотодобывающей отрасли есть большие риски запуска предприятий с убыточными характеристиками.

Основная характеристика - низкий коэффициент восстановления золота из золотосодержащей руды.

ЦЕЛЬ ПРОЕКТА:

Построить прототип модели машинного обучения, которая сможет предсказывать коэффициент обогащения и поможет оптимизировать производство.

В нашем распоряжении различные параметры с 4-х последовательных этапов процесса извлечения золота из руды:

  1. rougher — флотация

==> черновой концентрат

  1. primary_cleaner — первичная очистка
  2. secondary_cleaner — вторичная очистка
  3. final — финальные характеристики

==> финальный концентрат


ЛИЧНАЯ ЦЕЛЬ:

  • Попробовать свои силы в прикладных задачах для промышленности, разобраться в неизвестной предметной области и провести детальный исследовательский анализ EDA.

  • Научиться строить модели для датасетов с большим количеством признаков.

  • Применить на практике подход с Feature Engineering и добиться более высоких результатов предсказаний с помощью несложных алгоритмов.

  • Научиться использовать для оценки моделей пользовательские метрики

Посмотреть проект

Новые навыки


✔️ Исследовательский анализ предметной области ✔️ Временные интервалы

✔️ Большой набор атрибутов (> 80) ✔️ Пайплайны обработки данных

✔️ Матрицы корреляции ✔️ Feature Engineering для числовых признаков

✔️ Аутлайеры и доверительные интервалы ✔️ Skewness распределений

✔️ Кастомная метрика качества

Этапы исследования

  1. Изучили параметры производственного процесса в исходных данных

  2. Исследовали концентрацию веществ на разных стадиях и аномалии:

    • провели оценку skewness распределений
    • удалили аутлайеры вне доверительных интервалов
  3. Провели корреляционный анализ параметров и целевых признаков

  4. Построили предсказания коэффициента обогащения золота на базе 3-х алгоритмов:

    • LinearRegression
    • DecisionTree
    • RandomForest
  5. Используя 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

Все поля имеют формат название_этапа.тип_параметра.название_параметра и отражают состояние процесса в указанный момент времени.