Часть 2: подход к машинному обучению

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

Содержание

  1. Подход машинного обучения - проблема классификации временных рядов
  2. Несбалансированные данные
  3. Результаты
  4. Заключение и дальнейшие действия

Подход машинного обучения - проблема классификации временных рядов

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

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

Также с осторожностью следует относиться к перекрестной проверке для модели временных рядов по той же причине. Я реализовал 10-кратную перекрестную проверку, и она использовалась для корректировки некоторых гиперпараметров.

Несбалансированные данные

Как известно интуитивно, цены в онлайн-супермаркете корректируются нечасто (по крайней мере, не каждый день). Да, эта интуиция верна, на самом деле цены корректировались только в 2% случаев. Это означает, что наша бинарная целевая переменная имеет серьезный дисбаланс классов. Сначала, когда я построил модель и запустил тест, yayyy, я получил точность 98%! Затем, когда я проверил матрицу путаницы, моя модель просто предсказывала только ложь. Чтобы сделать нашу модель более образованной, нам нужно обрабатывать несбалансированные данные, и есть несколько способов справиться с этим.

  1. Используйте древовидный алгоритм
  2. Повторная выборка
  3. Используйте соответствующие показатели

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

В своей диссертации я реализовал передискретизацию Randon, недостаточную выборку, технику передискретизации синтетического меньшинства (SMOTE), отредактированное правило ближайшего соседа (ENN), SMOTE + ENN, SMOTE + Tomek links и Adaptive Synthetic (ADASYN), и вот результаты.

Мы можем заметить, что некоторые шаблоны из этих рисунков выше, например, многие положительные классы были созданы с использованием алгоритма k-ближайшего соседа в методе SMOTE, а ENN не удалял многие отрицательные классы.

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

Случайная передискретизация:

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

Случайная недостаточная выборка:

Этот алгоритм случайным образом выбирает класс большинства и удаляет его, чтобы сбалансировать распределение классов. Главный недостаток этого метода в том, что из него можно удалить потенциально полезную информацию. Чтобы преодолеть этот недостаток, Wallace et al. (2011) предположили, что недостаточная выборка сочетается с упаковкой, чтобы с большой вероятностью можно было предотвратить удаление полезной информации (этот метод доступен в imblearn.ensamble). Однако на практике этот метод значительно увеличивает количество ложноположительных результатов из-за систематической ошибки выборки. Поццоло и др. (2105) предложили использовать теорию минимального риска Байеса, чтобы найти правильный порог для классификации.

Техника передискретизации синтетического меньшинства (SMOTE):

SMOTE предложен Chawla et al. (2002), чтобы преодолеть недостаток случайной передискретизации, и он неплохо работает в литературе (Chawla, 2003). SMOTE создает синтетические выборки меньшинства путем интерполяции случайно выбранного меньшинства и его k-ближайших соседей. Таким образом, проблема переобучения менее вероятна, и поскольку она генерирует k-ближайших соседей меньшинств, синтетические выборки могут быть распределены в класс большинства.

Правило отредактированного ближайшего соседа (ENN) - ENN также является одним из методов, применяющих алгоритм k-ближайшего соседа (Wilson, 1972). Удаление класса большинства осуществляется путем выбора любого наблюдения, которое отличается от класса по крайней мере двух из трех его ближайших соседей.

SMOTE + ENN:

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

Все эти методы передискретизации доступны в Python API под названием imblearn. Ниже приведен фрагмент примеров кодов.

from imblearn.over_sampling import RandomOverSampler
ros = RandomOverSampler(random_state=123)
x_resampled, y_resampled = ros.fit(x_tr, y_tr)

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

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

  1. Точность
  2. Отзывать
  3. Средняя оценка точности (AP)
  4. Каппа Коэна
  5. (F1-оценка)

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

Используя эти два показателя, вы можете рассчитать оценку AP.

где R - это отзыв, P - точность, а n - n -й порог. Остальные метрики, о которых я упоминал выше, также довольно удобны для использования, Cohen's Kappa учитывает часть учетной записи распределения классов, поэтому она может правильно измерить производительность несбалансированных данных. Я не использовал F1-оценку в своей диссертации, но это стандартные показатели, и они очень полезны.

Эти показатели можно рассчитать с помощью scikit-learn.

from sklearn.metrics import precision_score, recall_score, average_precision_score, cohen_kappa_score, f1_score
precision_score(y_true, y_predicted)
recall_score(y_true, y_predicted)

Полученные результаты

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

Левая часть - это результаты логистической регрессии, а другая - результаты модели дерева решений. С первого взгляда вы можете заметить, что модель дерева решений работает довольно хорошо с повторной выборкой или без нее, но в целом обучение на передискретизированном наборе данных улучшило свои оценки по сравнению с обучением на несбалансированном наборе данных. Также вы можете заметить, что оценки довольно низкие, они составляют около 0,03, даже лучший результат как для оценки AP, так и для Каппы Коэна. Это показывает сложность этой проблемы, а также есть много возможностей для улучшения этой модели.

В качестве примера я агрегировал набор данных по недельным данным. Таким образом, целевой переменной стало изменение цены товара в течение недели. В этом наборе данных дисбаланс классов был решен в некоторой степени (положительный класс составлял 30% от всех данных). Я применил SMOTE для повторной выборки и использовал Adaboost, тогда и точность, и отзывчивость были около 65%, оценка AP составила 0,55 и 0,42 для Каппы Коэна, что вполне прилично.

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

Заключение и следующие шаги

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

Для будущих исследований ожидается добавление еще нескольких переменных. Существующая литература демонстрирует некоторые факты, которые этот тезис не охватывает, например связь между изменениями цен и изменениями заработной платы (Klenow and Malin, 2010). Кроме того, поскольку цены на товары тесно связаны с некоторыми экономическими индексами, мы можем включить эти функции, чтобы фиксировать поведение в большей степени, зависящее от государства. Что касается метода машинного обучения, поскольку в этой диссертации не реализованы какие-либо сложные модели и даже не так много функций, есть много возможностей для улучшения. Лично я весьма заинтересован в использовании калибровки вероятности (теория минимального риска Байеса) в сочетании со случайной недостаточной выборкой, как Поццоло и др. (2015) предложили. Это может быть хорошей темой для следующего сообщения в блоге.

Заворачивать

В этом посте

  • представили, как работать с набором данных временных рядов
  • представили, как бороться с несбалансированным набором данных
  • показал мои результаты сравнения производительности модели с ресэмплингом и без него

Если вы нашли историю полезной, интересной или что-то еще, нажмите кнопку 👍 :) Также, если у вас есть какие-либо вопросы, отзывы или буквально что-то еще, не стесняйтесь оставлять комментарии ниже. Я был бы очень признателен. Также вы можете найти меня в LinkedIn.

Ссылка

Байрон К. Уоллес; Кевин Смолл; Карла Э. Бродли; Томас А. Трикалинос. (2011). Классовый дисбаланс, Редекс. 11-я Международная конференция по интеллектуальному анализу данных IEEE

Чавла, Н. В., Бойер, К. В., Холл, Л. О., и Кегельмейер, В. П. (2002). Смут: метод передискретизации синтетического меньшинства. Журнал исследований искусственного интеллекта, 16: 321–357.

Чавла, Н. В. (2003). C4. 5 и несбалансированные наборы данных: исследование влияния метода выборки, вероятностной оценки и древовидной структуры решений. In Proceedings of the ICML, volume 3, page 66.

Кленов П. Дж. И Малин Б. А. (2010). Микроэкономические данные о ценообразовании. В Справочнике по денежно-кредитной экономике, том 3, страницы 231–284. Эльзевир.

Поццоло, Андреа Даль., Оливье Келен, Рид А. Джонсон, Джанлука Бонтемпи. (2015). Калибровка вероятности с недовыборкой для несбалансированной классификации. Серия симпозиумов IEEE по вычислительному интеллекту

Уилсон, Д. Л. (1972). Асимптотические свойства правил ближайшего соседа по отредактированным данным. Транзакции IEEE по системам, человеку и кибернетике, (3): 408–421.