Выбор функций и моделирование данных

Перемотка назад

В этом проекте мы следовали подходу к управлению CRISP-DM, чтобы создать комплексную структуру проекта ML. Некоторые из затронутых тем из предыдущих частей проиллюстрированы следующим образом:

✅Понимание бизнеса

✅ Понимание данных

✅ Подготовка данных

❌ Моделирование

❌ Оценка

❌ Развертывание

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

Обзор предыдущих частей —





Репозиторий кода GitHub —



Техника выбора функций (FST)

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

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

Некоторые преимущества использования выбора признаков в машинном обучении:

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

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

Подробнее о методе FST — Wrapper

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

Функции добавляются или вычитаются на основе выходных данных модели, и модель снова обучается с этим набором функций.

Некоторые методы методов-оболочек:

  • Прямой выбор. Прямой выбор — это итеративный процесс, который начинается с пустого набора функций. После каждой итерации он продолжает добавлять функцию и оценивает производительность, чтобы проверить, улучшает ли она производительность или нет. Процесс продолжается до тех пор, пока добавление новой переменной/функции не улучшит производительность модели.
  • Обратное исключение. Обратное исключение также является итеративным подходом, но он противоположен прямому выбору. Этот метод начинает процесс с рассмотрения всех признаков и удаления наименее значимого признака. Этот процесс исключения продолжается до тех пор, пока удаление функций не улучшит производительность модели.
  • Исчерпывающий выбор признаков. Исчерпывающий выбор признаков – один из лучших методов выбора признаков, при котором каждый набор признаков оценивается как грубая сила. Это означает, что этот метод пытается создать каждую возможную комбинацию функций и вернуть наиболее эффективный набор функций.
  • Рекурсивное исключение функций.Рекурсивное исключение функций — это рекурсивный подход к жадной оптимизации, при котором функции выбираются путем рекурсивного отбора все меньшего и меньшего подмножества функций. Теперь оценщик обучается с каждым набором функций, а важность каждой функции определяется с помощью coef_attribute или с помощью feature_importances_attribute.

Моделирование

Объем этого проекта состоит из 2 областей моделирования ML:

  • Подбор базовой модели —разработка модели линейной регрессии с месячным_количеством в качестве цели для industry = 1 и location = 1.
  • Расширенная подгонка модели —разработка модели линейной регрессии с целевым значением month_amount для всех отраслей и местоположений.

Подгонка базовой модели

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

Модель 1 — Полная модель

Во-первых, я начинаю с полной модели, которая представляет собой модель со всеми возможными ковариантами или предикторами, а затем я буду отбрасывать переменные по одной, пока не будет достигнута экономичная модель. Отмечено, что, хотя мы начинаем модель со всеми переменными, я буду исключать location, industry и year, поскольку мы фильтруем только по местоположению 1, отрасли 1 и 2013–2015 годам, что может соответствовать нашей модели MLR.

Переменная номера месяца введена для учета сезонности объема продаж. Как показано в линейной модели с формулой formula = monthly_amount ~ date + month_number, эта модель работает весьма впечатляюще со скорректированным R-квадратом, эквивалентным 0,7457. Другими словами, это указывает на то, что примерно 74,57% наблюдений в обучающей выборке объясняются моделью.

Модель 2 — Подберите модель с переменной month_number

Основываясь на множественном значении R-квадрата, наша модель 2 может учитывать только примерно 54% ​​дисперсии. Это указывает на то, что подбор только month_number обеспечивает умеренный предиктор monthly_amount, который работает хуже, чем первая модель. Мы также можем получить подтверждение, взглянув на значение p, равное 0,02583, которое говорит нам о том, что предикторы месяца вряд ли будут хорошо соответствовать данным.

Модель 3: Подберите модель с переменной date

С третьим, где мы подгоняем только переменную date к модели, она даже получает худшую производительность, поскольку только 36% изменчивости в среднемесячном объеме продаж объясняется ею, оставляя колоссальную необъяснимую дисперсию в 64%.

В заключение следует отметить, что модель 1 на данный момент обеспечивает наилучшее соответствие по сравнению с двумя другими комбинациями. Таким образом, я буду использовать эту модель для прогноза на monthly_amount в декабре 2016 года.

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

Я проверю, является ли наш прогноз на декабрь 2016 года разумным, построив линейный график с прогнозируемыми данными.

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

  • Среднеквадратическая ошибка (MSE): среднее квадратов различий между прогнозируемыми и фактическими значениями. Это дает относительную метрику, в которой чем меньше значение, тем лучше подходит модель.
  • Среднеквадратическая ошибка (RMSE): квадратный корень из MSE. Это дает абсолютную метрику в тех же единицах, что и метка. Чем меньше значение, тем лучше модель.
  • Коэффициент детерминации (обычно известный как R-квадрат или R2): относительный показатель, в котором чем выше значение, тем лучше подходит модель. По сути, эта метрика показывает, какую часть расхождений между прогнозируемыми и фактическими значениями меток модель способна объяснить.

Производительность прогнозирования значительно ниже, чем производительность модели на данных поезда. R2 на 0,55 ниже, чем 0,83, что указывает на его низкое соответствие фактическим данным. RMSE ошибки прогнозирования составляет 11293, что соответствует частоте ошибок ~ 6%, что все еще хорошо.

Расширенная подгонка модели

Мы хотим применить нашу модель (средняя сумма + дата + номер месяца) во всех отраслях и географических регионах. Для этого я создам циклическую функцию как calculate_predictions, чтобы выполнить все.

Чтобы быть более конкретным, функция цикла будет выполнять следующие задачи:

  1. Обучите модель для каждой отрасли и местоположения.
  2. Включите в таблицу столбец за декабрь 2016 года.
  3. Рассчитайте среднеквадратичную ошибку (MSE) и среднеквадратичную ошибку (RMSE).
  4. Сделайте прогноз на декабрь 2016 года.
  5. Объедините все данные в фрейм данных.

Мы управляли всеми локациями и отраслями по следующей модели:

  • mean_monthly ~ time_number

При этом time_number представляют порядок дат.

Среди наборов данных мы выбрали две отрасли и места с наихудшими показателями по наивысшему среднеквадратическому отклонению:

  • Отрасль 6 и местоположение 1
  • Отрасль 10 и местоположение 8

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

Давайте посмотрим на графики диагностики для этих двух компонентов:

Мы видим, что обе модели имеют записи выбросов. Для отрасли 6 и местоположения 1 имеются 1 и 2 точки, которые находятся далеко, сверху и снизу от модели соответственно. Для отрасли 10 и местоположения 8 над линией графика существуют 3 выброса.

Чтобы подтвердить нашу теорию, я построил еще один график линейной модели для отрасли 10 и местоположения 8 и отрасли 6 и местоположения 1.

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

Код проекта и соответствующие файлы-