Можете ли вы сократить время, которое Mercedes-Benz проводит на испытательном стенде?

Примечание автора: Это отчет о завершении моего прикладного курса [1] Capstone Project. Все работы оригинальны и не стесняйтесь использовать / расширять / распространять. [Цифры в скобках - это ссылки на источники, перечисленные в разделе литературы].

Вид на проект с высоты птичьего полета:

  • Интуиция по отношению к данной бизнес-проблеме и практические примеры использования этого решения.
  • Использование ML / DL для решения проблемы, загрузка / извлечение / извлечение данных из источника.
  • Описание данных и улучшения существующих подходов.
  • Исследовательский анализ данных с наблюдениями, графиками и проектированием функций: который состоит из 10 шагов, как описано ниже:

(a, b, c): загрузка данных, преобразование категориальных данных в числовые, анализ отсутствующих значений.

(d, e): Визуализация данных, анализ данных.

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

(g): Реализация метода Гавиша-Донохо для поиска оптимального значения «k» и построение кривых сингулярных значений для практической визуализации концепции.

(h): Выявление наиболее важных характеристик методами RFECV и RFE.

(i): добавление новых функций с помощью методов уменьшения размерности.

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

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

1. Объяснение бизнес-проблемы:

Начиная с первого автомобиля, Benz Patent Motor Car в 1886 году, Mercedes-Benz олицетворяет важные автомобильные инновации. К ним относятся, например, ячейка безопасности пассажира с зоной деформации, подушка безопасности и интеллектуальные вспомогательные системы. Mercedes-Benz подает почти 2000 патентов в год, что делает бренд европейским лидером среди производителей автомобилей премиум-класса. Автомобили Mercedes-Benz, выпускаемые Daimler, являются лидерами в автомобильной промышленности премиум-класса. Благодаря огромному выбору функций и опций клиенты могут выбрать индивидуализированный Mercedes-Benz своей мечты.

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

Daimler предлагает Kagglers преодолеть проклятие размерности и сократить время, которое автомобили проводят на испытательном стенде. Участники будут работать с набором данных, представляющим различные варианты характеристик автомобилей Mercedes-Benz, чтобы предсказать время, необходимое для прохождения испытаний. Алгоритмы-победители будут способствовать более быстрому тестированию, что приведет к снижению выбросов углекислого газа без снижения стандартов Daimler.

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

Примеры кастомных функций: полный привод, добавленная пневмоподвеска, проекционный дисплей и т. Д.

2. Использование ML / DL:

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

3. Источник данных:

Данные загружаются по этой ссылке Mercedes-Benz Greener Manufacturing, Kaggle Competition [2] и распаковываются.

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

Но если набор данных слишком велик, для импорта данных лучше использовать CurlWget (расширение chrome).

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

Этот набор данных содержит анонимный набор переменных, каждая из которых представляет индивидуальную функцию автомобиля Mercedes. Например, переменной может быть 4WD, добавленная пневмоподвеска или проекционный дисплей.

Абсолютная истина помечена как «y» и представляет время (в секундах), которое потребовалось автомобилю, чтобы пройти тестирование по каждой переменной.

Замечательные улучшения существующих подходов:

  1. Обнаружение мультиколлинеарности с помощью VIF (коэффициент инфляции дисперсии).
  2. Нахождение оптимального значения k в TSVD со ссылкой [3] на статью, опубликованную Гавишем и Донохо [4] Оптимальный жесткий порог для сингулярных значений составляет 4 / \ sqrt {3} .

5. Исследовательский анализ данных (E.D.A) и разработка функций:

(а). Загрузка набора данных:

  • Набор данных загружается в фрейм данных pandas.
  • Набор данных Train имеет размер (4209, 378), набор данных Test имеет размер (4209, 377).
  • Из них 8 являются категориальными функциями, 1 функция - идентификатором, а 368 - двоичными.
  • Один дополнительный столбец в наборе обучающих данных называется «y», это метка класса.

(б). Преобразование категориальных в числовые функции и выравнивание кадров данных и фреймов тестовых данных:

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

  • Может быть разное количество уникальных категорий: столбец обучающего и тестового кадра данных.
  • Из-за чего существует разница в формах фреймов данных.

вывод: {‘X0_aa’, ‘X0_ab’, ‘X0_ac’, ‘X0_q’, ‘X2_aa’, ‘X2_ar’, ‘X2_c’, ‘X2_l’, ‘X2_o’, ‘X5_u’, ‘y’}

  • В приведенном выше коде мы определяем необычные особенности

вывод: (4209, 554) (4209, 554)

  • Мы выровняли фреймы данных, сделав внутреннее соединение фреймов данных.

(с). Анализ нулевого / отсутствующего значения:

  • Из-за неправильной обработки отсутствующих значений полученные результаты будут отличаться от результатов, в которых отсутствующие значения отсутствуют.
  • Строки с отсутствующими данными могут быть удалены или заполнены с использованием методов имитации данных, как указано в этой ссылке. [5]
  • В случае многомерного анализа, если количество пропущенных значений больше, может быть лучше отказаться от этих случаев (вместо того, чтобы выполнять условное исчисление и заменять их).
  • С другой стороны, в одномерном анализе вменение может уменьшить количество систематической ошибки в данных, если значения отсутствуют случайно. [6]
  • Но в нашем наборе данных нет пропущенных значений.

(г). Визуализация данных:

Во-первых, возьмем только переменную Class и построим ее по оси y_axis, а ее восстановленные индексы - по оси x_axis.

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

  • Из приведенной выше диаграммы мы видим, что метка класса (y-время) выглядит как линия, за исключением небольшой части точек на концах, которые не находятся на линии.
  • а также есть только одна точка, время которой превышает 250, которая является выбросом.
  • Поскольку все метки классов не лежат на одной линии, квадрат Metric R² не будет иметь больших значений, он очень чувствителен к выбросам при увеличении SSres.

  • Наилучшее возможное значение R² Square - 1,0.

Построение PDF, CDF и BoxPlot переменной класса:

Из PDF и CDF мы видим, что:

  • Почти все точки данных имеют переменную класса ниже 140.
  • поэтому точки, имеющие метку класса более 140, могут рассматриваться как выбросы.

  • BoxPlot, нарисованный относительно метки класса, очень красиво показывает распределение данных на основе пяти пронумерованных сводок («минимум», первый квартиль (Q1), медиана, третий квартиль (Q3) и «максимум»), и здесь мы можем рассмотреть значения, которые наверняка больше максимального значения как выбросы.
  • Точки с выбросами отбрасываются.

(е). Удаление столбцов с уникальными значениями:

  • Функции с уникальными значениями не предоставляют никакой ценной информации, вместо этого они увеличивают количество измерений, поэтому мы отказываемся от таких функций.
  • ['X11', 'X93', 'X107', 'X233', 'X235', 'X268', 'X289', 'X290', 'X293', 'X297', 'X330', 'X347'], эти функции содержат только нули, поэтому они опускаются.

(е). Обнаружение мультиколлинеарности с использованием коэффициента инфляции дисперсии (VIF):

  • Мультиколлинеарность возникает, когда две или более независимых переменных сильно коррелируют друг с другом в регрессионной модели. [7] [8]
  • Это означает, что одну независимую переменную можно предсказать на основе другой независимой переменной в регрессионной модели.
  • Это может быть проблемой в регрессионной модели, потому что мы не сможем различить отдельные эффекты независимых переменных на зависимую переменную.
  • Мультиколлинеарность может не так сильно повлиять на точность модели. Но мы можем потерять надежность при определении влияния отдельных функций на модель. и это может быть проблемой, когда дело доходит до интерпретируемости
  • Это двумерный анализ.
  • VIF определяет силу корреляции между независимыми переменными. Для его прогноза берется переменная и сравнивается с каждой другой переменной (или). Оценка VIF независимой переменной показывает, насколько хорошо переменная объясняется другими независимыми переменными.
  • VIF - Заключение: 1 = мультиколлинеарность отсутствует, 4–5 = умеренная, 10 или выше = серьезная.

  • Как правило, значение VIF больше 10 считается серьезным, тогда как в нашем наборе данных у нас даже есть функции с бесконечным значением VIF и даже трехзначными числами.
  • Мы отбросили все функции, которые имеют бесконечную оценку VIF, за исключением top_20_features (подробности top_20_features будут объяснены в 7-м разделе).

( грамм ). Нахождение оптимального значения ‘k’ в усеченной SVD, метод Гавиша-Донохо [3] [4] [9]

Почему метод Гавиша-Донохо? что в нем объяснено? какие подтвержденные выводы сделаны из этой статьи?

  • Усеченный SVD - это метод матричной факторизации, при котором матрица W делится на три матрицы U, S, VT. Обычно он используется для поиска главных компонентов матрицы.
  • Усеченный СВД отличается от обычного СВД. Учитывая матрицу n * n, SVD будет создавать матрицы с n столбцами, тогда как Truncated SVD будет создавать матрицы с указанным количеством столбцов.
  • Нам нужно усечь SVD, потому что нам нужна матрица оптимальных столбцов «k», которая могла бы вместить максимум информации. Например, если у нас есть ранг 'k' = n, максимум он может быть (выше), тогда полная информация будет сохранена (также шум), а точность может быть больше, а может и не быть, но сложность модели будет высокий; Если у нас очень низкий рейтинг «k», информация может быть потеряна, и модель может быть менее точной, а модель не будет слишком сложной.
  • Итак, нам нужно найти золотую середину, оптимальное «k», при котором мы получаем большую часть информации в W, но без переобучения, шума или некоторых мелких функций, которые нам не интересны.
  • Это можно сделать разными способами, проанализировав сингулярные значения и определив локоть или колено, но они не работают, если у вас нет резкого спада сингулярных значений. Следовательно, метод Гавиша и Донохо - лучший метод для определения оптимального ранга «k» с учетом некоторых предположений о данных.

  • Как написано в приведенном выше уравнении, наши данные X могут быть записаны как сумма истинного сигнала данных низкого ранга (Xtrue) и Xnoise, который, как предполагается, имеет нормальное распределение с нулевым средним и дисперсией = 1, также называемым гауссовским шумом и он может быть большим или маленьким в зависимости от величины гаммы.

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

Случай 1. X - квадратная матрица и известна гамма.

  • Обрезать все значения ниже порогового (тау) значения

  • здесь n = размеры квадратной матрицы X, гамма = количество шума (известное)

Случай 2: X - прямоугольная матрица, гамма неизвестна.

  • В этом случае все, что у нас есть, это измерения распределения сингулярных значений.

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

Вывод:

  • У нас есть данные, которые имеют структуру и шум, даже если мы не знаем, сколько шума добавлено, мы можем оценить его по среднему сингулярному значению, а затем мы можем вывести Оптимальный тау (порог), чтобы усечь сингулярные значения ниже тау. дать оптимальный ранг 'r'

Код:

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

  • При построении мы получили указанные выше кривые и горизонтальную линию при y = tau
  • Следовательно, мы решили усечь значение «k» равным 2.

(з). Нахождение top_20_features:

  • Здесь мы нашли важные функции с помощью рекурсивного исключения функции.
  • RFECV sklearn автоматически генерирует оптимальное количество важных функций, а RFE генерирует самые популярные n функций в соответствии с нашими требованиями.

вывод: Индекс ([‘X314’], dtype = ’object’)

  • RFECV с использованием RandomForestRegressor с лучшими параметрами, которые можно получить, настроив его на наборе данных.

вывод: Индекс ([‘X29’, ‘X314’, ‘X315’], dtype = ’object’)

  • RFECV с использованием XGBRegressor по умолчанию

вывод: Индекс ([‘X314’], dtype = ’object’)

  • RFECV с использованием DecisionTreeRegressor с использованием наилучшего max_depth, который определяется путем настройки модели в наборе данных.
  • Из выходных данных трех вышеупомянутых ячеек мы узнали, что X314, X315 и X29 являются наиболее важными функциями, а X314 более важен, чем X315 и X29.
  • Используя рекурсивное исключение функций, мы найдем 20 самых важных функций и проведем для них двумерный анализ.

вывод: Index (['ID', 'X29', 'X48', 'X54', 'X64', 'X76', 'X118', 'X119', 'X127', 'X136', 'X189', ' X232 ',' X263 ',' X279 ',' X311 ',' X314 ',' X315 ',' X1_aa ',' X6_g ',' X6_j '], dtype =' объект ')

  • RFE с использованием RandomForestRegressor для вывода top_20_features
  • Этот набор top_20_features является надмножеством важных функций, полученных RFECV.

(i). Добавление новых функций с использованием методов уменьшения размерности:

ЦВД:

  • Согласно методу Гавиша и Донохо, мы используем 2 компонента усеченного SVD.

вывод: (4194, 2)

  • Также генерируются 2 функции из PCA и ICA, доступные методы сокращения функций на sklearn.decompositon, и давайте посмотрим, полезны они или нет.

PCA:

вывод: (4194, 2)

ICA:

вывод: (4194, 2)

  • Добавление всех новых функций, созданных с помощью методов уменьшения размерности, во фреймы данных

вывод: (4194, 127) (4209, 127)

(j). Создание новых функций с использованием двустороннего и трехстороннего взаимодействия функций top_20_important

6. Моделирование:

(а). RandomForestRegressor.

  • Давайте выполним настройку гиперпараметров
  • Инициализация всех параметров
  • Подгонка модели RandomSearchCV

вывод: {‘bootstrap’: True, ‘max_depth’: 70, ‘max_features’: ‘auto’, ‘min_samples_leaf’: 40, ‘min_samples_split’: 110, ‘n_estimators’: 500}

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

  • Как мы видим, функция «X314 + X315», сгенерированная двусторонним взаимодействием функций, сыграла важную роль в прогнозировании метки класса.
  • Как и RandomForestRegressor, для других моделей, представленных ниже, выполняется та же процедура, посмотрите код в моем GitHub.

(б). XGBoostRegressor.

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

  • Даже в этой модели функция «X314 + X315» имеет наивысшую относительную важность по сравнению с другими функциями, но индекс относительной важности ниже, чем у RandomForestRegressor.

(с). DecisionTreeRegressor.

  • Даже в этой модели функция «X314 + X315» имеет наивысшую относительную важность по сравнению с другими функциями.

Результаты всех моделей приведены в таблице ниже, а код можно найти на GitHub.

7. Сравнение всех моделей:

  • Из всех моделей наивысший публичный рейтинг получил RandomForestRegressor.

8. Будущая работа

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

9. Ссылки

  1. Https://www.appliedaicourse.com/course/11/Applied-Machine-learning-course
  2. Https://www.kaggle.com/c/mercedes-benz-greener-manufacturing/data
  3. Https://arxiv.org/pdf/1305.5870.pdf
  4. Https://ieeexplore.ieee.org/document/6846297
  5. Https://medium.com/r/?url=https%3A%2F%2Ftowardsdatascience.com%2F6-different-ways-to-compensate-for-missing-values-data-imputation-with-examples-6022d9ca0779
  6. Https://medium.com/r/?url=https%3A%2F%2Fweb.stanford.edu%2Fclass%2Fstats202%2Fcontent%2Flec25-cond.pdf
  7. Https://medium.com/r/?url=https%3A%2F%2Fwww.sigmamagic.com%2Fblogs%2Fwhat-is-variance-inflation-factor%2F%23%3A~%3Atext%3DIf%2520there % 2520is% 2520perfect% 2520correlation% 2Cto% 2520the% 2520presence% 2520of% 2520multicollinearity
  8. Https://medium.com/r/?url=https%3A%2F%2Fwww.analyticsvidhya.com%2Fblog%2F2020%2F03%2Fwhat-is-multicollinearity%2F
  9. Https://medium.com/r/?url=http%3A%2F%2Fwww.pyrunner.com%2Fweblog%2F2016%2F08%2F01%2Foptimal-svht%2F

10. GitHub и LinkedIn