Интересно, почему модель машинного обучения иногда дает сбой?

Введение

Было бы легкой прогулкой, если бы мы ссылались на реальный проект, обсуждая важные вещи во время построения модели машинного обучения. Мы благодарны Udacity за предоставление нам проекта Starbucks, который представляет собой Capstone Challenge для специалиста по данным Udacity Nanodegree в сотрудничестве со Starbucks, где нам были предоставлены смоделированные данные, имитирующие поведение клиентов в мобильном приложении Starbucks Rewards. Более подробную информацию можно найти здесь.

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

  1. Определение и понимание постановки задачи
  2. Выбор показателей производительности
  3. Визуализация и исследование данных
  4. Предварительная обработка исследуемых данных
  5. Уточнение и надежность модели

Давайте исследовать!

1. Определение и понимание «постановки задачи»

Постановка проблемы является ядром любой проблемы. Это может помочь вам понять важность и влияние проблемы. Даже если он вам хорошо известен, его переопределение с точки зрения производительности, конечной цели и влияния на реальный мир очень важно. Например, из полученных нами данных следует, что Starbucks отправила своим клиентам 10 различных предложений по различным каналам. Таким образом, постановка задачи звучит так: «Предсказать, выполнит ли пользователь предложение, на основе переменных, полученных от пользователя и предложения». Итак, мы переопределяем его, как показано:

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

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

2. Выбор показателей производительности

Метрики, используемые для анализа производительности модели, очень важны. Иногда результаты нашей модели нас не радуют, а с другой стороны, если ей удается оправдать наши ожидания, она плохо работает в производственной среде. Источником этой путаницы является плохой выбор метрик. Итак, «Это должно быть обосновано на основе характеристик постановки задачи». В нашем примере во время переопределения постановки задачи мы получили доступ к конечной цели проблемы и ее влиянию на реальный мир. что послужило основной идеей минимизировать ложноотрицательные результаты, в результате чего в нашем примере мы выберем Recall, Precision, f1-score и матрицу путаницы. Дальнейшее исследование может быть выполнено в соответствии с набором данных, с которым вы имеете дело.

3. Визуализация и исследование данных

Без EDA мы вряд ли продвинемся вперед в нашем подходе к построению модели. Но анализ только базовых визуализаций может неправильно объяснить тенденции или закономерности. Например: здесь мы проверили распределение offer_id относительно того, является ли предложение успешным или нет. И переменная «успешное предложение» вычисляется математически, как показано на рисунке ниже, за которым следует EDA. Кроме того, проверены и обработаны несбалансированные данные целевой переменной.

Пример 1:

sns.countplot(x='offer_id',hue='successful offer',data=overall_df,palette='Blues');
plt.legend(['Unsuccessful','Successful'],frameon=False)
plt.title('Count of Offer Type')
plt.xticks(rotation=45);

Пример 2:

Кроме того, если кто-то пропустит визуальное исследование данных, существует высокая вероятность того, что они не смогут обнаружить аномалии/выбросы. Графическое представление помогает нам решить, сохранять их или нет. Примечание. Выбросы не всегда следует удалять. Изучение одних и тех же данных под другим углом поможет определить сильные переменные и их отношения. Здесь для этого набора данных есть гораздо больше общих EDA.

4. Предварительная обработка исследуемых данных

Предварительная обработка данных не менее важна, если вы хотите, чтобы ваша модель стала популярной. Недостаточно изменить все категориальные переменные на числовые. Эту область нельзя контролировать, но исследовать как можно больше. Например, здесь мы создали функцию clean_transcript (расшифровка), transform_transcript (расшифровка), которые показаны ниже. Есть еще множество функций, созданных для предварительно обработанных данных Starbucks, которые можно найти здесь.

Пример 1:

Пример 2:

5. Уточнение и надежность модели

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

Затем мы выполнили GridSearch для классификации случайного леса, чтобы обеспечить надежность модели.

Заключение

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