Найти тему
Николай Лазарев

ML проект. Восстановление золота из руды

Оглавление

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

Проект предоставленный компанией «Цифра» (https://www.zyfra.com/ru/) представляет собой реальную задачу Data Science из золотодобывающей отрасли. Необходимо подготовить прототип модели машинного обучения для «Цифры». Компания разрабатывает решения для эффективной работы промышленных предприятий. Модель должна предсказать коэффициент восстановления золота из золотосодержащей руды. Имеются данные с параметрами добычи и очистки. Модель должна помогать оптимизировать производство, чтобы не запускать предприятие с убыточными характеристиками.

Описание данных

Технологический процесс

• Rougher feed — исходное сырье
• Rougher additions (или reagent additions) — флотационные реагенты: Xanthate, Sulphate, Depressant
○ Xanthate **— ксантогенат (промотер, или активатор флотации);
○ Sulphate — сульфат (на данном производстве сульфид натрия);
○ Depressant — депрессант (силикат натрия).
• Rougher process (англ. «грубый процесс») — флотация
• Rougher tails — отвальные хвосты
• Float banks — флотационная установка
• Cleaner process — очистка
• Rougher Au — черновой концентрат золота
• Final Au — финальный концентрат золота

Параметры этапов

• air amount — объём воздуха
• fluid levels — уровень жидкости
• feed size — размер гранул сырья
• feed rate — скорость подачи

• rougher — флотация
• primary_cleaner — первичная очистка
• secondary_cleaner — вторичная очистка
• final — финальные характеристики

Возможные значения для блока [тип_параметра]:

• input — параметры сырья
• output — параметры продукта
• state — параметры, характеризующие текущее состояние этапа
• calculation — расчётные характеристики

Основные этапы проекта:

  • 1  Описание проекта Восстановление золота из руды¶
  • 1.1  Описание данных
  • 1.1.1  Расчёт эффективности
  • 1.1.2  Метрика качества
  • 2  Подготовка данных
  • 2.1  Откроем и изучим файлы
  • 2.2  Смотрим распределение данных
  • 2.3  Проверим, что эффективность обогащения рассчитана правильно.
  • 2.4  Проанализируем признаки, недоступные в тестовой выборке.
  • 2.5  Проверка на дубликаты
  • 2.6  Добавим недостающие данные в data_test
  • 2.7  Обработка пропусков
  • 2.8  Выводы по подготовке данных
  • 3  Анализ данных
  • 3.1  Концентрация металлов (Au, Ag, Pb) на различных этапах очистки
  • 3.2  Распределения размеров гранул сырья
  • 3.3  Суммарная концентрация всех веществ на разных стадиях
  • 3.4  Подготовим датафреймы для прогнозирования features, target
  • 3.5  Вывод по анализу данных
  • 4  Модель
  • 4.1  Напишем функцию для вычисления итоговой sMAPE.
  • 4.2  Линейная регрессия
  • 4.3  Дерево решений
  • 4.4  Случайный лес
  • 4.5  Расчёт по выбранной модели
  • 4.6  Проверка модели на адекватность
  • 5  Выводы
-2

Реализация проекта

В рамках предобработки данных проекта, изучены загруженные файлы.

Построены графики распределения значений по всем числовым полям. Большинство признаков имеют нормальное распределение, но вместе с тем встречаются и скошенные распределения. Также у некоторых признаков видно значимое число значений в области нуля. В дальнейшем эти выбросы были удалены.

-3

Проверен расчёт эффективности обогащения. Вычислено значение MAE между данными и расчётными значениями эффективности. Полученные значения МАЕ близки к 0. Это означаем, что эффективность обогащения рассчитана правильно.

-4

Проанализированы поля недоступные в тестовой выборке, где отсутствуют целевые признаки для моделей 'rougher.output.recovery', 'final.output.recovery', а также значения output по всем операциям по всем элементам. Это концентрации элементов после основных операций. Это фактические данные, которые мы можем получить только по факту реальных измерений. А задача ML-модели получение прогноза. Поэтому в реальности у нас и не должно быть этих данных в файле test.

Проведена проверка на дубликаты. Обработаны пропуски. Исключительно для проверки качества оценки модели поля 'rougher.output.recovery', 'final.output.recovery' добавлены в тестовый файл для формирования выборки target_test.

Заполнение пропусков ближайшими значениями. Метод bfill.
Заполнение пропусков ближайшими значениями. Метод bfill.

Анализ концентрации металлов показал, что концентрация золота значительно увеличивается на каждом этапе обработки сырья. Концентрация золота в отвалах тоже увеличивается, но при этом на порядок ниже чем в сырье. На всех графиках концентрации сырья видны значения равные нулю. Судя по распределению, это выбросы.

-6

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

-7

Исследована суммарная концентрация всех веществ на разных стадиях: в сырье, в черновом и финальном концентратах.

-8
-9

Бросается в глаза большой хвост выбросов для значений от левого уса до нуля. Для всех суммарных концентраций значения левого уса рассчитаны. Удалены выбросы попадающие в этот промежуток.

Подготовлены датафреймы для прогнозирования features, target.

-10

Описана функция для вычисления итогового показателя качества модели - sMAPE.

Формула показателя качества sMAPE
Формула показателя качества sMAPE
Метод расчёта показателя качества sMAPE
Метод расчёта показателя качества sMAPE
-13
Метод расчёта финального показателя качества sMAPE
Метод расчёта финального показателя качества sMAPE

На данных train обучены модели линейной регрессии, дерева решений, а также случайного леса. Проведена оценка каждой модели.

Модель линейной регрессии

Примечательна реализация оценки модели по особому показателю sMAPE.
Примечательна реализация оценки модели по особому показателю sMAPE.

Модель дерева решений

Подбор параметров для данной модели был реализован в виде цикла.

Пример расчёта модели для этапа финальной очистки
Пример расчёта модели для этапа финальной очистки

Модель случайного леса

Пример расчёта модели для этапа финальной очистки
Пример расчёта модели для этапа финальной очистки

В результате сравнения результатов, для дальнейшего прогнозирования выбрана модель случайного леса с параметрами:

1. для этапа rougher глубина 5, количество деревьев 150.
2. для этапа final глубина 5, количество деревьев 200.

Эти параметры позволяют получить на данных train показатель smape равный 7.8902

Итоговый расчёт на тестовых данных выбранной модели случайного леса позволил получить прогноз целевых признаков концентрации золота для этапа флотации и финальной очистки с показателем smape равным 9.17

Расчёт итоговой модели случайного леса на тестовых данных
Расчёт итоговой модели случайного леса на тестовых данных

Проведена проверка модели на адекватность. Итоговая оценка smape константной модели на тестовых данных равна 9.602

-19

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

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

Во-вторых было интересно поработать с особым, специфическим для компании-заказчика показателем качества sMAPE. Для его расчёта необходимо было реализовывать модели по двум этапам очистки, а в дальнейшем по двум результатам рассчитывать итоговый. Это было необычно и интересно!

Ссылка на мой код в GitHub

-20