Очередной мощный проект. На этот раз в сфере промышленности.
Задача проекта
Чтобы оптимизировать производственные расходы, металлургическому комбинату (компании - заказчику) необходимо уменьшить потребление электроэнергии на этапе обработки стали. Необходимо построить модель машинного обучения, которая предскажет температуру стали.
Оглавление
1 Описание проекта
1.1 Задача проекта
1.2 Описание этапа обработки
1.3 Описание данных
2 Анализ данных
2.1 Импорт необходимых библиотек
2.2 Загрузка данных, первичный анализ
2.3 Пропуски в данных
2.4 Распределение данных
2.5 Выбросы
2.6 Выводы по анализу данных
3 Подготовка данных
3.1 Подготовка общего датасета
3.2 Обработка пропусков
3.3 Определение значимости признаков - матрица корреляций
3.4 Разбивка данных на тренировочные и тестовые
3.5 Масштабирование признаков - стандартизация данных
3.6 Вывод
4 Обучение моделей
4.1 Модель CatBoost
4.2 Модель случайного леса
4.3 Модель LightGBM
4.4 Линейная регрессия
4.5 Анализ моделей
5 Выводы по проекту
5.1 Анализ входных данных
5.2 Подготовка общего датасета, матрица корреляции признаков
5.3 Модели машинного обучения
Описание этапа обработки
Сталь обрабатывают в металлическом ковше вместимостью около 100 тонн. Чтобы ковш выдерживал высокие температуры, изнутри его облицовывают огнеупорным кирпичом. Расплавленную сталь заливают в ковш и подогревают до нужной температуры графитовыми электродами. Они установлены в крышке ковша. Из сплава выводится сера (десульфурация), добавлением примесей корректируется химический состав и отбираются пробы. Сталь легируют — изменяют её состав — подавая куски сплава из бункера для сыпучих материалов или проволоку через специальный трайб-аппарат (англ. tribe, «масса»). Перед тем как первый раз ввести легирующие добавки, измеряют температуру стали и производят её химический анализ. Потом температуру на несколько минут повышают, добавляют легирующие материалы и продувают сплав инертным газом. Затем его перемешивают и снова проводят измерения. Такой цикл повторяется до достижения целевого химического состава и оптимальной температуры плавки. Тогда расплавленная сталь отправляется на доводку металла или поступает в машину непрерывной разливки. Оттуда готовый продукт выходит в виде заготовок-слябов (англ. slab, «плита»).
Описание данных
Данные состоят из файлов, полученных из разных источников:
• data_arc.csv — данные об электродах;
• data_bulk.csv — данные о подаче сыпучих материалов (объём);
• data_bulk_time.csv — данные о подаче сыпучих материалов (время);
• data_gas.csv — данные о продувке сплава газом;
• data_temp.csv — результаты измерения температуры;
• data_wire.csv — данные о проволочных материалах (объём);
• data_wire_time.csv — данные о проволочных материалах (время).
Во всех файлах столбец key содержит номер партии. В файлах может быть несколько строк с одинаковым значением key: они соответствуют разным итерациям обработки.
Реализация проекта
В проекте были использованы следующие библиотеки.
В рамках анализа исходных данных загружены семь файлов . Выведены размеры, примеры таблиц, основная статистическая информация. Явно видны пропуски.
Оценено количество пропусков в каждом поле всех таблиц. В данных об электродах пропусков не обнаружено. Пропуски в файлах data_bulk и data_bulk_time идентичны. Такая же ситуация и в файлах data_wire и data_wire_time. Это подсказывает нам логику данных. Что по одному и тому же событию передаются величины объёма и времени в разных таблицах. Логично в дальнейшем будет объединить эти файлы. Все пропуски нужно будет заменить нулевыми значениями.
Подмеченная особенность. В файле data_temp почти пятая часть строк с пропусками (2901). Для многих партий указана только температура первого измерения, Необходимо задать вопрос заказчику и выявить причину этих пропусков. Возможно данные по этим партиям придется удалить.
Есть предположение, что в поле реактивной мощности есть отрицательный выброс в районе -700.
Активная и реактивные мощности имеют нормальное распределение со скошенностью влево.
Далеко не все сыпучие добавки имеют нормальное распределение. Для большинства характерны доминанты определенных значений с характерными пиками на графиках распределения. Нормальное распределение характерно для Bulk_4 и Bulk_6. Для Bulk_3 и Bulk_5 характерно нормальное распределение со сдвигом влево.
Данные по времени не визуализируются. Поэтому строить диаграммы распределения по таблицам со временем не имеет смысла. В дальнейшем данные по времени нам не нужны за исключением определения очередности цикла производственного процесса.
Значения использования газа имеют выраженное нормальное распределение со скошенностью влево.
Значения замеренной температуры имеют выраженное нормальное распределение.
Также были проведены дополнительные исследования на нормальность по методу Шапиро и Колмогорова-Смирнова.
Характерное нормальное распределение имеют признаки Wire 1, Wire 2, Wire 6. Остальные фичи имеют эпизодические пики.
Есть выброс в данных по реактивной мощности, отрицательное значение в районе -700. Явная ошибка.
На диаграмме размаха температуры видны явные статистические выбросы ниже 1550 градусов. Но поскольку мы не получили от заказчика данные по химсоставу, допускаем, что выбросы по температуре могут быть реальными измерениями расплавов легкоплавких и среднеплавких сталей.
Так например, обработка легкоплавких сталей может производиться даже без специального оборудования. Температура плавления стали в градусах Цельсия составляет 600. К числу легкоплавких металлов относятся свинец, олово и цинк.
Температура плавления среднеплавких сталей находится в пределах 600°С-1600°С. К этой категории относятся алюминий, медь, олово, некоторые виды нержавейки и различные сплавы с небольшим содержанием хрома. Среднеплавкие соединения получили наибольшее распространение в промышленности.
Тугоплавкие соединения способны переходить из твердого состояния в жидкое при нагреве свыше 1600°С. Это высоколегированные металлы, в состав которых входят вольфрам, титан и хром. Благодаря этим добавкам металл приобретает повышенную прочность, устойчивость к коррозии и химическим воздействиям. В частности, к тугоплавким сплавам относится нержавейка.
Исходя из вышесказанного, статистические выбросы по температуре не удаляем.
Единственный выброс который требует корректировки или удаления данных - это отрицательное значение по реактивной мощности. Остальные крайние значения хоть и являются выбросами с точки зрения статистики, но по факту их нельзя удалять. Поскольку в производственном процессе указанные значения ко объему легирующего материала, газа или температуры вполне допустимы.
По выбросам получил важные рекомендации на будущее. Бывает, что выброс - это реальная бизнес-практика. И если удалить их, то мы получим модель, так скажем, работающую не во всех диапазонах входящих в неё факторов. Т.е. по метрикам модель будет хорошая. А вот по бизнесу - не совсем применимая. А бывают выбросы - точно выбросы - ошибки учёта данных, например. В таких проектах, также лучше использовать такую философию анализа выбросов:
Ящик с усами - даёт пищу для размышлений (не более того, не воспринимаем его как сигнал к действию).
А потом смотрим то явление, что изучаем. Данные значения - могут быть в реальности или нет?
Вот, например, в случае с температурой плавления: по справочнику она у металла = около 1400+-, т.е. 1200 - действиетльно кажется очень странным значением. А 1450 и выше выглядит вполне рабочим, не смотря на статистические границы.
Подготовка общего датасета, матрица корреляции признаков
Подготовлен общий датасет для моделей машинного обучения. Были рассмотрены два варианта соединения таблиц. По номеру цикла в каждой партии и только по номеру партии.
При проработки первого варианта столкнулся с проблемой, в некоторых партиях разное количество циклов в таблице с мощностью и температурой. Проведено сравнение по времени. В разных циклах нагрева температура могла измеряться неоднократно. Чтобы понять что делать дальше с этой неточностью проанализировали в скольких партиях не совпали количество циклов в разных файлах. В итоге, несоответствия выявлены у 2241 партий из 3241,это составляет 69%.
Поэтому принято решение использовать второй вариант соединения таблиц - агрегировать данные по всей партии. А в качестве целевого признака оставить только конечную температуру.
Таблицы соединены по принципу "inner". Т.е. взяты только те партии, информация о которых есть во всех таблицах. В таблицах с добавками nan заменены на 0. В таблицах с температурой и газом строки с nan удалены. Т.к. строки с отсутствующими данными по температуре и газу не нужны для прогнозирования.
Проанализируем количество пропущенных значений, заменённых на 0 в таблице df_merge
Поле wire_5 не имеет данных после удаления пропусков целевом признаке. Данное поле удалено.
Также было выявлено большое количество пропусков в полях bulk_2, bulk_5, bulk_7-11, bulk_13, wire_3-9. Значения этих столбцов объединены в отдельных признаках - поле редкие добавки bulk_rare и wire_rare.
Также для эксперимента созданы поля с общим количеством добавок, для сыпучих и проволочных в отдельности и вместе.
Преобразован тип данных в полях с сыпучими добавками в целочисленные значения.
Построена матрица корреляций признаков.
В рамках проверки на мультиколлиниарность удалён один из признаков в каждой паре, с взаимной зависимостью более 0.9. Особенно это важно для линейных моделей.
Из пары 'active_energy', 'reactive_energy' оставляем 'active_energy'.
Из пары 'bulk_9', 'wire_8' оставляем 'bulk_9'.
Из пары 'bulk_sum', 'wire_sum' оставляем 'bulk_sum'.
Из пары 'wire_3', 'wire_rare' оставляем 'wire_rare'.
Также удалены малозначимые факторы по добавкам, где было зафиксировано большое количество пропусков bulk_2, bulk_5, bulk_7-11, bulk_13, wire_3-9. А также удалены поля 'wire_rare', 'gas_1', 'bulk_1', 'bulk_3', показавшие нулевую зависимость от целевого признака.
Данные разделены на тренировочную и тестовую выборки, а также на features и target.
Проведено масштабирование признаков features (стандартизация данных) для линейной модели.
Модели машинного обучения
В проекте были применены модели линейной регрессии, случайного леса, CatBoost и LightGBM. Все модели (кроме LightGBM) были оценены с помощью кросс-валидации. В моделях случайного леса и CatBoost проведен автоматизированный подбор параметров с помощью GridSearchCV.
Итоговые результаты моделей:
Линейная регрессия МАЕ = 6.45.
CatBoost МАЕ = 5.9 Лучшие параметры 'depth': 4, 'n_estimators': 500.
RandomForest МАЕ = 6.1 Лучшие параметры 'depth': 10, 'n_estimators': 150.
Модель LightGBM позволяет достичь MAE 6.24 при параметрах 'n_estimators': 150, 'max_depth': 15.
В качестве лучшей была выбрана модель CatBoost. На тестовых данных она показала МАЕ = 6.27
Наиболее значимыми признаками являются 'first_temp', 'heating_time_in_hours', 'active_energy'.
Финальный отчёт
В рамках реализации проекта все пункты плана были выполнены.
Изначально сложности возникли с пониманием того, в каком виде нужно подготовить итоговый файл для моделирования. Сначала строили предположения, что данные должны быть сгруппированы по каждой операции. Но в последствии, анализ показал, что это невозможно без дополнительных уточнений. В некоторых партиях разное количество циклов в таблице с мощностью и температурой. Проведено сравнение по времени. В разных циклах нагрева температура могла измеряться неоднократно. Чтобы понять, что делать дальше с этой неточностью проанализировали в скольких партиях не совпали количество циклов в разных файлах. В итоге, несоответствия выявлены у 2241 партий из 3241,это составляет 69%. Поэтому было принято решение группировать данные по операциям.
Второй значимой сложностью стало большое количество Nan в данных по легирующим добавкам. Здесь помогло понимание производственного процесса - в разных партиях разные добавки, и не обязательно все. Поэтому, после понимания данного вопроса было принято решение заменить Nan нулевое значение.
Также понимание процесса позволило добавить такие новые признаки как активная и реактивная энергия, коэффициент мощности, время нагрева в часах, редкие сыпучие добавки, редкие проволочные добавки, суммарные сыпучие добавки, суммарные проволочные добавки, суммарные общие добавки.
Ещё одним непростым и важным решением стал отбор для итогового файла начальной и конечной температуры.
Безусловно данный проект, имея в плане реализации стандартные шаги (анализ данных, подготовка данных, обучение моделей), отличался от других бОльшей сложностью этапа подготовки данных. В рамках анализа пришлось потратить время на проработку гипотез и понимания структуры итогового файла.
Также данных проект отличился более осознанной проработкой значимости признаков. В результате чего была удалена примерно половина признаков, которые не содержали в себе значимой информации или дублировали друг друга.
Все перечисленные решения позволили сформировать итоговый файл со следующими полями 'key', 'active_energy', 'heating_time_in_hours', 'power_coeff', 'active_power_middle', 'bulk_4', 'bulk_6', 'bulk_12', 'bulk_14', 'bulk_15', 'bulk_rare', 'wire_1', 'wire_2', 'first_temp', 'last_temp'. Подробное описание формирования данного файла, генерации новых фич и все нюансы предобработки даны в пункте 5.2.
В качестве лучшей была выбрана модель CatBoost. Гиперпараметры n_estimators=500, depth=4, random_state=270223 (дата начала проекта). На тестовых лучшая модель показала МАЕ = 6.27
Для дальнейшего улучшения моделей можно рекомендовать дальнейшую работу по отсеиванию признаков с низкой важностью, а также поиск новых важных фич. Кроме того, можно задать более широкий спектр гипер параметров для автоматизированного подбора.
На будущее получил следующие рекомендации.
Цель заказчика - экономия энергоресурсов.
И в этом проекте искали как раз способ точно предсказывать температуру. И круто использовали для этого весь арсенал.
А если рассуждать с такой позиции : а что нужно сделать, чтобы снизить энергопотребление?
Судя по модели, самым важным фактором является первая температура. Это значит, что управляя ею, мы сможем управлять энергозатратами. Вывод понятен. Теперь надо разработать мероприятия для этого решения. И тут вопрос возникает сам собой: а так ли это на самом деле? Мы можем управлять первой температурой? В общем, наша модель - только начало работы над энергоэффективностью.
Так же есть ещё одна идея, которую можно предложить на обсуждение.
Дело касается принципиально иного подхода к поиску решения для снижения энергопотребления на производстве. Создание данной модели (таково было задание) двигалось по пути "угадывания" температуры
Но мы же знаем жизнь)) лёгкие колебания температур есть всегда. Более того - будут всегда! И нам что, стараться угадывать их? Не угонимся! Для подобных проектов можно подумать вот в какую сторону. Итак, разброс в измерениях - есть, был и будет!! (т.к. этому благоприятствует разнообразие факторов самого производства)
Тогда задачу можно поставить так: надо уменьшить разброс в измерениях. В данном случае в температуре.
Один из подходов такой: Наверняка есть границы, в пределах которых колебания температур - дело нормальное.
А что, если фиксировать случаи, когда температура выходит за эти границы?
Скажем, как "1". И тогда для таких моментов времени собирать инфо по производству:
а что был за материал (химия материала), что был за газ (химический состав газа), какая бригада работала,
что там было с электродами, ограничения только в фантазиях ну и в знаниях самого производства.....
И вот тут можем реально находить причины (через корреляции, проверки гипотез, разные модельки...), фиксировать эти причины.
Ну и разрабатывать энергосберегательные мероприятия.
Т.е. можно просто фиксировать случаи выхода за границы, и просто анализировать их с целью выявления причин и их устранения. Есть специальный раздел - Статистический контроль качества SPC.
Можно сказать, что пройден весь алгоритм моделирования от анализа исходной инфо до анализа важности факторов.
Если говорить о развитии дополнительных компетенций, можно ещё глянуть такие области знаний:
1) Организация проектов по проведению моделирования (например Методология CRISP-DM (Cross-Industry Standard Process)
2) Умения системно подходить к решению аналитической задачи. (например методология ТРИЗ, системный анализ)
3) Если в промышленности будут проекты, то рекоммендовал бы освоить "Статистический контроль качества (SPC)"
4) Ещё важный навык: перевод результатов моделирования на язык бизнеса. Т.е. понимание, как целевые показатели моделей влияют на финансовую выгоду заказчика.
5) Если говорить о модельных рекоммендациях, то есть ещё такие способы как блендинг и стакинг разных моделей.
Каждого из нас можно оценивать с нескольких сторон, как специалиста.
1) Умение анализировать, "вгрызание" в данные, в задачу.
2) Знание мат.части: методы, подходы к решению - всё, что по программе заложено.
3) Кодовая часть: умение писать эффективный код.
4) Работа с графикой (умение хорошо визуализировать).
И при рабочей деятельности (устраивание на работу/ улучшение карьеры) важно понимать свои слабые/сильные стороны по этим направлениям. И опираться на них при ведении переговоров и выстраивании дальнейшего совершенствования.
Общие размышления
Что касается подходов ML в производстве. Прочитал одну статью 2018 года "Зачем заводам машинное обучение" https://habr.com/ru/company/smileexpo/blog/429940/. Обратил внимание на то, что они дополняют статистические ML-модели, расчётными моделями по физическим и химическим принципам. Вот это был бы высший пилотаж. Мечтаю реализовать такой совмещенный подход. И кроме того, такой подход используется в Лаборатории наноматериалов Артёма Органова. Они прогнозируют свойства материалов. И добились значимых результатов. Даже ПО разработали (УСПЕХ называется).