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

Позвольте мне объяснить вам, «почему» фактор этой бизнес-проблемы, так что, возможно, у вас возник вопрос, почему грузовая компания хочет проводить профилактическое обслуживание сверх обычного графика? Каковы преимущества ? Профилактическое обслуживание предсказывает отказ, и действия могут включать в себя корректирующие действия, замену системы или даже запланированный отказ. Это может привести к значительной экономии средств, большей предсказуемости и повышению доступности систем.

Экономия на профилактическом обслуживании бывает трех видов:

  • Избегайте или минимизируйте простои. Это позволит избежать недовольства покупателя, сэкономить деньги за счет предотвращения поздней доставки, а иногда и спасти жизни.
  • Оптимизируйте операции периодического обслуживания.
  • Стоимость остановки грузовика перед доставкой ниже, чем Отказ грузовика на пути к доставке.

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

Будучи инженером-механиком и младшим специалистом по обработке данных, я был в восторге от выполнения этого проекта. Я попытался подробно объяснить общий подход к обучению, что является довольно длинным способом, но надеюсь, вам, ребята, он понравится!

Давайте углубимся в данные!

Первые библиотеки импорта:

1. Описание: первые несколько строк и столбцов данных

Во-первых, эти данные не являются отметкой времени, так как компания записала только дату работы устройства и сбоя устройства. Вторая строка относится к типу устройства, а третья - к сбоям, которые классифицируются по двум категориям (No Fail = 0 & Fail = 1) в основном это проблема классификации, относящаяся к Машинное обучение с учителем.

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

Общее количество строк: 124494, Общее количество столбцов: 12,

Целевая переменная = Отказ - это категориальная переменная со значениями 0 и 1. Независимая переменная = Остальные все столбцы ожидают, что Отказ является независимой переменной.

2. Наблюдайте за шаблоном данных и аналитическими данными

  • Всего в данных 124494 строки. Но уникальных устройств всего 1168, и компания предоставила данные за 324 дня.

  • Так как сбоев много = 0. Мы проверим, сколько устройств не работает, а сколько нет.
  • Он показывает, что по умолчанию установлено 106. У остальных 1062 устройств не было никаких дефектов в течение этого периода времени наблюдения, то есть коэффициент составляет около 0,08%. Каждое устройство имеет не более одного отказа = 1.

Мозговой штурм

Когда мы делаем какой-либо проект, знания в предметной области будут играть большую роль вместе с нашими техническими навыками (инструмент + опыт). Здесь, поскольку функции обслуживания скрыты, поэтому тот, кто обладает знаниями в предметной области, также не поможет с точки зрения данных, поэтому, как специалист по данным, мы можем сосредоточиться на фундаментальных методах, которые мы использовали для применения в любом проекте, например:

  • Проверьте взаимосвязь между элементами (столбцы атрибут1 с атрибутом9).
  • Наблюдайте за шаблоном данных для каждого столбца функций и попытайтесь найти аномалии, если они есть.
  • Проверить типы данных функций (непрерывный или категориальный)
  • Чтобы справиться с несбалансированными данными, лучше подойдет проверка перед выборкой или недостаточной выборкой?

Сложите все бизнес-вопросы и попытайтесь найти на них ответ в таких данных, как:

  1. Есть ли сезонность в выходе грузовика из строя?
  2. Каковы максимальные параметры, возникающие при сбое?
  3. Сколько поездок требуется до отказа и сколько дней до отказа?
  4. Есть ли какое-то конкретное устройство из строя?

3. Разработка данных / Разработка функций

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

Функция даты (столбец): из функции даты извлеките дни и месяц, сделайте для них отдельный столбец, чтобы мы могли наблюдать сезонность сбоев по месяцам, если они есть. любой.

Май, июль и октябрь имеют пиковое значение для большинства отказов, это может быть хорошей особенностью.

Функция Attribute7 и Attribute8 (столбец): если вы видите корреляционную матрицу всех функций, эти две функции сильно коррелированы друг с другом, и обе функции имеют одинаковое значение для каждой строки данных.

«Когда функции сильно коррелированы друг с другом, как правило, мы опускаем одну функцию из обеих, чтобы избежать мультиколлинеарности, которая влияет на алгоритм регрессии, для алгоритма на основе дерева мультиколлинеарность не влияет на результат, но делает вычисления дорогостоящими»

Функция устройства (столбец): В столбце «Устройство» всего 1168 устройств, и их названия состоят из букв и цифр, поэтому мы попытались понять, как мы можем разделить эти устройства и какой тип устройства это может быть? Насколько я понимаю, это один из параметров обслуживания грузовика, поэтому это может быть «Номер двигателя» или («Номер батареи» - в случае гибридного автомобиля) потому что это единственная опора и главная сила грузовика. Итак, извлекли первые три последних имени устройства для каждого уникального устройства и выяснили, что всего существует три типа: S1F, W1F, Z1F и вызов новой функции device_type.

Атрибут2 (столбец): при сортировке значений в столбце attribute2 он отображается как геометрическая последовательность из 2, поэтому разделите все значения на 2 и создайте новое имя столбца атрибута ‘att2’.

Attribute6 (столбец): для любого устройства, когда мы наблюдаем значение атрибута 6 от начальной даты устройства до конечной даты устройства, похоже, что он записывает пробег грузовика. поэтому мы создадим новый вызов функции "общий_ пробег".

Атрибут7 и Атрибут8 (столбец): мы видели в корреляционной матрице, что оба атрибута сильно коррелированы друг с другом, поскольку значения обоих столбцов одинаковы, поэтому, чтобы избежать дорогостоящих вычислений, удалите один столбец и сделайте квадрат из другой столбец и создайте новое имя столбца 'att78'.

Атрибут1 (столбец): все значения в столбце кратны «8», поэтому разделите все значения на «8» и создайте столбец с новой функцией «att1».

Атрибут3 и атрибут9 (столбец): если мы видим корреляционную матрицу, атрибут3 и атрибут9 на 53% коррелированны друг с другом, и когда мы будем наблюдать значения обеих этих функций для условий сбоя устройства и отсутствия сбоя устройства, тогда это остаются одинаковыми для всех устройств, поэтому, создавая новую функцию, покупайте, добавляя оба (attribute3 и attribute9) вместе с именем 'att39'.

Атрибут4 и Атрибут5 (столбец): сохранение обоих столбцов функций без изменений.

Давайте уменьшим количество строк, сгруппировав их по «устройству» с помощью функции .max ().

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

total_mile, work_days и att1 - это переменные продолжения, поэтому сохраните их тип данных как int и масштабирование.

« Зачем нам масштабирование функций ? »-Лучший ответ для чтения

Теперь выполните быстрое кодирование для категориальной функции (attribute4, attribute5, device_type, att39, att78, att2, month).

Что такое горячая кодировка и почему мы делаем это для категориальных переменных? -лучший ответ для чтения

Здесь мы можем видеть, что после категориальной переменной однократного горячего кодирования теперь общий столбец становится 321 и исключена целевая переменная из этого фрейма данных «data_scaled», поэтому все столбцы являются нашей независимой переменной, а зависимая переменная - столбцом ошибок, поэтому теперь давайте приступим к моделированию.

4. Разработка и развертывание модели машинного обучения.

Разработка и развертывание моделей машинного обучения включает в себя серию шагов, которые почти аналогичны прогрессу статистического моделирования, поэтому для разработки и внедрения моделей машинного обучения мы должны рассмотреть следующие шаги:

  1. Сбор данных: данные для машинного обучения собираются непосредственно из структурированных исходных данных, веб-скрапинга, API, взаимодействия в чате и т. д., поскольку машинное обучение может работать как со структурированными, так и с неструктурированными данными (голос, изображение и текст. ).
  2. Подготовка данных и отсутствующие / выбросы: данные должны быть отформатированы в соответствии с выбранным алгоритмом машинного обучения, так как у нас нет отсутствующих значений в наших данных, но наши данные были несбалансированными, как мы обсуждали ранее, поэтому мы сделали это балансировка с использованием передискретизации.
  3. Анализ данных и разработка функций: данные необходимо проанализировать, чтобы найти скрытые закономерности и связи между переменными и т. д. Правильная разработка функций с соответствующим пониманием бизнеса решит 70 процентов проблем. Кроме того, на практике 60% времени специалиста по данным тратится на задачу разработки функций.
  4. Обучить алгоритм на обучающих и тестовых данных: после разработки функции данные будут разделены на два блока (обучающие и тестовые данные).

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

Данные обучения должны содержать правильный ответ, который известен как целевой или целевой атрибут (столбец "Ошибка"). Алгоритм обучения находит шаблоны в обучающих данных, которые сопоставляют атрибуты входных данных с целью (ответ, который мы хотим предсказать), и выводит модель машинного обучения, которая фиксирует эти шаблоны.

Мы должны использовать модель машинного обучения, чтобы получать прогнозы для новых данных (тестовых данных), для которых мы не знаем цель. Например, предположим, что в нашем случае мы хотим обучить модель машинного обучения предсказывать, выйдет из строя грузовик или нет. Компания предоставила данные, для которых мы знаем цель (то есть метку, которая сообщает, вышел из строя грузовик или нет, то есть столбец «Неудача»). Мы бы обучили модель машинного обучения, используя эти данные, в результате получилась бы модель, которая пытается предсказать, выйдет ли из строя грузовик или нет.

5. Разверните алгоритм. Обученный алгоритм машинного обучения будет применен к потоковым данным в реальном времени для классификации результатов.

Приступим к моделированию,

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

  1. Передискретизация - правильный способ использовать передискретизацию - лучший ответ для чтения
  2. Недостаточная выборка

Перед передискретизацией нам нужно разделить наши данные на данные тестирования (тест) и данные обучения (поезд).

На практике данные обычно случайным образом разделяются на 70–30 или 80–20 на обучающие и тестовые наборы данных соответственно при статистическом моделировании, в котором обучающие данные, используемые для построения модели, и ее эффективность будут проверяться на тестовых данных в следующем коде: мы разделяем исходные данные на обучающие и тестовые данные на 80–20 процентов.

Здесь важно учитывать то, что мы устанавливаем начальные значения для случайных чисел, чтобы повторять случайную выборку каждый раз, когда мы создаем одни и те же наблюдения в данных обучения и тестирования. Повторяемость очень необходима для воспроизведения результатов, и мы также используем stratify, направленный на разбиение одного набора данных так, чтобы каждое разбиение было схожим в чем-то. При настройке классификации часто выбирается так, чтобы набор для поезда и тестирования содержал примерно такой же процент образцов каждого целевого класса, что и полный набор.

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

Теперь сделаем передискретизацию на x_train и y_train, используя функцию SMOTE. Есть две наиболее эффективных функции:

  1. SMOTE (Техника передискретизации синтетических меньшинств)
  2. ADASYN (подход адаптивной синтетической выборки)

Как показано на рисунке выше, значение y_train для fail (1) было 85 до передискретизации, но после передискретизации функция, которая сделала его равным (849,849), поэтому оба (0 и 1) значения в y_train теперь пропорциональны, поэтому теперь мы можем сказать, что данные сбалансирован.

Теперь эти X_train_res и Y_train_res сбалансированы с точки зрения пропорциональности в классе, и мы можем обучить модель на этом наборе данных и применить эту модель ML к тестовым данным x_val и y_val, которые мы создали перед передискретизацией в разделе разделения тестового поезда.

Как решить, какой алгоритм машинного обучения использовать?

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

  1. Возможности классификации, регрессии и кластеризации:

Алгоритм регрессии предсказывает непрерывную переменную, такую ​​как продажи, сделанные в день, или предсказывает температуру в городе. Всего существует три типа случаев регрессии: линейная регрессия, линейная регрессия с несколькими переменными (более одной независимой переменной) и полиномиальная регрессия (нелинейная комбинация характеристик).

Алгоритмы обучения на основе дерева считаются одними из лучших и наиболее часто используемых методов контролируемого обучения. Древовидные методы позволяют прогнозным моделям обеспечивать высокую точность, стабильность и простоту интерпретации. В отличие от линейных моделей, они довольно хорошо отображают нелинейные отношения. Они адаптируются при решении любых задач (классификации или регрессии) и используются, когда зависимая переменная является категориальной.

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

2. Совместимость данных и качество данных:

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

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

3. Вычислительная сложность:

Алгоритмы регрессии часто не требуют больших вычислительных затрат по сравнению с деревьями решений и алгоритмами кластеризации. Порядок сложности для N обучающих примеров и X функций обычно попадает в a (X2), a (XN) или a (C3).

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

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

4. Понятно и прозрачно:

Алгоритмы регрессии легко понятны и прозрачны по своей природе. Они могут быть представлены кому угодно в более простых математических обозначениях, и их легко понять.

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

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

Случайный лес:

Здесь мы использовали древовидный алгоритм Randomforest и нашли точность модели, оценку отзыва, оценку точности, оценку F1 и матрицу путаницы. Итак, давайте обсудим, каковы характеристики этих параметров и как мы можем судить о нашей модели на основе этих параметров.

1. Матрица недоразумений. Это матрица фактического и прогнозируемого. Эту концепцию лучше пояснить на примере отказа грузовика при прогнозировании отсутствия отказов с использованием модели.

Истинно-положительный (TP): Истинно-положительный - это случаи, когда мы прогнозируем, что грузовик получит Неисправность, когда грузовик действительно получил Сбой во время доставки.

Истинно-отрицательный (TN): Истинно-отрицательный - это случаи, когда мы прогнозируем, что грузовик будет без сбоев, тогда как грузовик на самом деле не отказал во время доставки.

Ложно-положительный результат (FP): когда мы прогнозируем, что грузовик будет неисправен, но на самом деле грузовик не отказал во время доставки. FP также считаются ошибкой типа 1.

Ложноотрицательный (FN): когда мы прогнозируем грузовик как Нет отказа, но на самом деле грузовик получил отказ во время доставки. FN также считаются ошибкой 2-го типа.

2. Напомним: способность модели находить все соответствующие случаи в наборе данных. Точное определение отзыва - это количество истинных положительных результатов, деленное на количество истинных положительных результатов плюс количество ложных отрицательных результатов. Истинно положительные результаты - это точки данных, классифицированные моделью как положительные, которые на самом деле являются положительными (что означает, что они верны), а ложно отрицательные - это точки данных, которые модель определяет как отрицательные, которые на самом деле являются положительными (что означает, что они неверны).

3. Точность: способность модели классификации идентифицировать только соответствующие точки данных. Точное определение точности - количество истинных положительных результатов, деленное на количество истинных положительных результатов плюс количество ложных срабатываний. Ложные срабатывания - это случаи, когда модель неправильно помечает как положительные, а на самом деле отрицательные.

«Отзыв выражает способность найти все релевантные экземпляры в наборе данных, точность выражает долю точек данных, которые, по мнению нашей модели, были релевантными, на самом деле были релевантными».

В данном случае компания, занимающаяся грузовыми автомобилями, ожидала от нас достижения точности отзыва и точности в диапазоне от 70 до 80 процентов, чтобы максимизировать оценку F1 до 75 процентов. Теперь здесь отражается стоимость бизнеса, которую мы свяжем с нашими параметрами.

По стоимости для грузовой компании есть два варианта:

  1. Стоимость остановки автотранспорта утром перед выходом на доставку
  2. Стоимость вышедшего из строя грузовика в пути к доставке или в промежутке.

Если 1-й случай имеет более высокую стоимость, то количество грузовиков, которые классифицируются по моделям как «Отказавшие», которые на самом деле не отказали, должно быть очень меньше, что означает, что мы хотим уменьшить количество ложных срабатываний (FP), что в основном означает нам нужна более высокая точность в нашей модели, чтобы снизить эту стоимость. В этом случае компания будет ожидать от вас достижения более высокой точности как можно дольше.

Если 2-й случай имеет большую стоимость, то количество Fail truck, которое неправильно идентифицировано как Not Fail по модели, должно быть очень меньше, что означает, что мы хотим уменьшить False Negative (FN), что в основном означает, что мы хотим большего Напомним в нашу модель , чтобы снизить эту стоимость. В этом случае компания будет ожидать от вас максимального отзыва.

4. Оценка F1:

В случаях, когда мы хотим найти оптимальное сочетание точности и отзывчивости, мы можем объединить две метрики, используя так называемый показатель F1. Оценка F1 представляет собой гармоническое среднее значение точности и запоминания с учетом обоих показателей в следующем уравнении:

Мы используем гармоническое среднее вместо простого среднего, потому что оно наказывает экстремальные значения. Существуют и другие метрики для объединения точности и отзывчивости, такие как Среднее геометрическое значение точности и отзывчивости, но чаще всего используется оценка F1. Если мы хотим создать сбалансированную модель классификации с оптимальным балансом запоминания и точности, мы стараемся максимизировать оценку F1.

Здесь мы достигли показателя F1-76% с помощью алгоритма случайного леса, теперь компания будет заинтересована в детализации функций, имеющих более высокий вес и играющих важную роль, из общего числа 324 столбцов функций, с помощью параметра важности функций в случайном лесу найдет из десяти лучших характеристик.

Здесь мы можем заметить, что total_mile, att2, att1, work_days и att78 - это дополнительные функции, которые были созданы в функции инженерии, чтобы добавить значения в результат, и это работает для нас. С другой стороны, мы видим, что month_7 & month_5 также выскочили, поскольку они показывают сезонность с точки зрения сбоя, которую мы проверили ранее при разработке функций.

Подобный подход мы проверим в алгоритме Gradient Boosting,

Здесь мы достигли показателя F1-79% с помощью алгоритма Gradient Boosting, и если мы будем наблюдать за десятью первыми функциями, то снова появятся те же функции, что и случайный лес. Это означает, что наша модель почти идеальна для обоих алгоритмов, и она также не переоснащается, поэтому мы можем выбрать Gradient Boosting для развертывания на данных в реальном времени, так как он также имеет более высокий балл F1.

Дальнейшая работа

Чтобы в большей степени подчеркнуть отзыв и точность, мы могли бы использовать GridSerachCV, Weighted ensemble & Stacking и получить лучший результат F1 с соответствующими функциями.

Почему матрица точности не подходит для решения проблем классификации, особенно для проблемы дисбаланса.

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

Вы бы поверили кому-то, кто утверждал, что создал модель полностью в своей голове, чтобы идентифицировать обнаружение болезни, когда уровень заболеваемости среди населения очень низок, а кто-то придумал с точностью более 99%? Когда мы используем точность, мы назначаем ложные срабатывания и ложные отрицания равной стоимости. Когда набор данных несбалансирован - скажем, 99% экземпляров одного класса (Здоровые пациенты) и только 1% (Пациенты с заболеваниями) - другого - возникает отличный способ снизить стоимость. Предскажите, что каждый экземпляр принадлежит к классу большинства (Здоровые пациенты), получите точность 99% и отправляйтесь домой пораньше.

В том же случае проекта отказа грузовика всего 1168 грузовиков, из которых только 106 вышли из строя, поэтому у нас есть 99,9% данных о том, что не отказал. В обоих случаях положительный класс - болезнь или Failed Trucks - сильно уступает по численности отрицательному классу. Эти типы проблем являются примерами довольно распространенного случая в науке о данных, когда точность не является хорошим показателем для оценки производительности модели.

Заключение

В общем, лучшей матрицы нет. Лучшая матрица / мера определяется вашими потребностями. В некотором смысле, чтобы решить бизнес-вопрос, мы используем параметры машинного обучения, чтобы сделать лучшее суждение и решение на основе наших данных, поэтому конечная бизнес-цель будет определять, какие параметры мы должны учитывать в нашем проекте.

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