Обзор

  1. Введение
  2. Бизнес-проблема
  3. Сопоставление с проблемой ML
  4. Обзор данных
  5. Исследовательский анализ данных
  6. Подход к первому разрезу
  7. Разработка функций
  8. Моделирование
  9. Представление на Kaggle
  10. Развертывание модели
  11. Заключение и будущие ссылки
  12. Ссылки и ссылки

Введение

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

Бизнес-проблема

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

Сопоставление с проблемой машинного обучения

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

Обзор данных

Источник данных: https://www.kaggle.com/c/elo-merchant-category-recommendation/data

Они предоставили 5 CSV-файлов, названных ниже

  1. Train.csv и Test.csv: - Он содержит информацию о картах, а также содержит целевое значение, которое необходимо предсказать.

2. Historical_transactions.csv и New_merchant_transactions.csv: содержит информацию об исторических транзакциях для каждого пользователя карты. Он имеет 15 функций. Historical_transactions.csv довольно громоздкий, так как его размер указан в ГБ.

3. Merchants.csv: содержит дополнительную информацию обо всех продавцах. Он имеет 22 уникальные функции.

Исследовательский анализ данных

Обучайте и тестируйте файлы: -

  1. Изучение целевой переменной: -

Большинство значений находится в диапазоне от -10 до 10. Значение -33,218750 кажется выбросом или каким-то значением, присваиваемым держателям карт определенного типа. Итак, мы должны удалить их. Всего имеется 2207 точек выброса, и это значительное число.

2. Категориальные характеристики: -

Мы можем ясно видеть, что эти анонимные переменные носят категориальный характер. Elo не предоставила никакой конкретной информации об этих категориях. Feature_1 принимает 5 значений, т.е. [1,2,3,4,5], и максимальное количество клиентов относится к категории 3. Feature_2 принимает 3 значения, т.е. [1,2,3], и максимальное количество клиентов относится к категории 2. Feature_3 является двоичной переменной либо принимает 0 0r 1. максимальное количество клиентов принадлежит 1. Все эти переменные должны быть закодированы категориально.

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

3. Изучение функции даты: -

На приведенном выше графике показано, что данные относятся к 6 разным годам, т. е. 2012, 2013, 2014, 2015, 2016, 2017. Максимальные данные относятся к 2016 и 2017 годам. Все распределения перекрываются, поэтому нам нужно разработать некоторые дополнительные функции на основе дат. Даты указаны в формате «ГГГГ-ММ», мы конвертируем их в формат даты и времени с помощью pandas.

3. Проверка корреляции между признаками.

Feature_1 и Feature_2, кажется, коррелируют друг с другом. Другие функции довольно независимы.

Файл исторических транзакций: -

  1. Проверка отсутствующих значений

10.2 Отсутствует процент данных в наборе данных, что является довольно большим числом, поэтому его необходимо условно вычислить.

2.Изучение категорийных признаков:-

Мы можем ясно видеть, что эти анонимные переменные носят категориальный характер. Эло не предоставил никакой конкретной информации. об этих категориях. Категория_1 принимает 2 значения, т.е. [Y,N], и максимальное количество клиентов принадлежит N. Категория_3 принимает 3 значения, т.е. [A,B,C], и максимальное количество клиентов принадлежит A. Категория_2 принимает 3 значения, т.е. [1,2,3,4, 5] и максимальное количество клиентов принадлежит 1. Категория_4 принимает 3 значения, т.е. [Y,N] и максимальное количество клиентов принадлежит Y. Все эти переменные должны быть закодированы по категориям.

3. Изучение функций идентификатора:-

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

4. Изучение рассрочки:-

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

5. Изучение суммы покупки:-

Значения 100-го процентиля кажутся выбросами, поэтому их необходимо удалить.

6 . Анализ влияния некоторых функций на цель лояльности :-

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

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

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

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

Новые файлы категорий продавцов: -

  1. Проверка отсутствующих значений:-

9,87 % данных отсутствуют, что является значительным числом, поэтому его необходимо условно вычислить.

2. Категориальные характеристики:-

Мы можем ясно видеть, что эти анонимные переменные носят категориальный характер. Эло не предоставил никакой конкретной информации. об этих категориях. Категория_1 принимает 2 значения, т.е. [Y,N], и максимальное количество клиентов принадлежит N. Категория_3 принимает 3 значения, т.е. [A,B,C], и максимальное количество клиентов принадлежит A и B. Категория_2 принимает 5 значений, т.е. [1,2,3, 4,5] и максимальное количество клиентов принадлежит 1. Категория_4 имеет только одно значение Y, поэтому нам не нужен этот столбец. Итак, нам нужно удалить этот столбец. Все эти переменные должны быть закодированы по категориям.

3. Изучение Id-функций :-

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

4. Изучение рассрочки:-

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

5. Изучение суммы покупки:-

Значения 100-го процентиля кажутся выбросами, поэтому их необходимо удалить.

6. Анализ влияния некоторых функций с целью лояльности:-

Мы ясно видим, что лояльность снижается с увеличением количества транзакций.

Мы ясно видим, что лояльность растет с увеличением количества покупок.

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

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

Категория продавца :-

1.Изучение числовых признаков:-

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

2. Изучение категориальных функций:-

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

3. Изучение других функций id:-

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

4. Посмотрите на взаимосвязь между функциями:-

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

Подход первого разреза

  1. Загрузка данных непосредственно в Colab с помощью Kaggle Api и их распаковка.
  2. Затем используйте функцию уменьшения использования памяти, как обсуждалось в приведенной выше статье, чтобы уменьшить использование памяти. Это поможет снизить вычислительную мощность, необходимую для разработки функций и моделирования.
  3. Исследуйте данные и извлекайте из них ценную информацию с помощью исследовательского анализа данных. Удаление выбросов с использованием базовой статистики и EDA. Найдите значения nan, inf в наборе данных и вычислите их, используя подходящий метод. Выше обсуждались различные методы, такие как мода, медиана, использование самой модели мл. Замена его на нулевую технику с треском провалилась.
  4. Основная задача этого исследования состоит в том, чтобы найти новые функции. Как мы видели, было найдено около 250 новых функций. Функции даты играют важную роль в разработке функций. Агрегация приводит к множеству новых функций. Следующий шаг – выбор характеристик. Поскольку извлекается множество функций, многие из них могут быть коллинеарными, что снижает производительность модели. Таким образом, мы можем использовать один из методов, обсуждавшихся выше, для решения этой проблемы.
  5. Затем следующая часть — моделирование. Сначала я попробую базовые модели ML, такие как линейная регрессия, SVM, деревья решений, алгоритмы повышения.

Разработка функций: -

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

Это функции, рассчитанные из файла Train. То же самое можно сделать и для тестовых файлов.

Как обсуждалось ранее, большинство функций, которые я получил, были получены от агрегирования, как показано. Я использовал простые агрегации, такие как max, min, nunique, mean.

Я объединил функции из исторических транзакций и новых транзакций продавца, сгруппировав их по идентификатору карты.

Некоторые функции были вдохновлены источником, упомянутым ниже. Здесь новые функции разрабатываются на основе ранее агрегированных функций. https://www.kaggle.com/mfjwr1/simple-lightgbm-without-blending

Всего было извлечено более 230 признаков с использованием заданных признаков. Затем эти особенности использовались для моделирования.

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

Я пробовал различные базовые регрессионные модели и повышающие модели. Я также пробовал некоторые индивидуальные модели ансамбля. Даже я пробовал как глубокие, так и поверхностные модели MLP. Но лучший результат, который я получил, — это объединение двух моделей lgbm с использованием байесовского гребня. Подробнее о моделях LGBM можно прочитать здесь. Первые модели lgbm были основаны на стратифицированной k-кратности, а другая — на повторяющихся k-кратностях.

В приведенном ниже фрагменте показано, как использовать Байесовский хребет для объединения моделей.

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

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

Представление на Kaggle

Этот результат ставит меня в топ-22 процентиля в таблице лидеров.

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

Я использовал флягу для развертывания моей модели.

Заключение и ссылки на будущее

  1. Feature Engineering является одной из наиболее важных задач в этой проблеме. Я многое узнал о разработке функций и о том, как делать это эффективно и действенно, чтобы получить хорошие результаты.
  2. Очистка данных является одним из важных шагов. Я научился обрабатывать выбросы и удалять их, так как они плохо влияют на модель.
  3. Большинство функций были анонимными. Elo не предоставила соответствующей информации об этих функциях. Таким образом, мы можем действительно интерпретировать, что функции хорошо, некоторые знания предметной области в этой области также могут улучшить результаты, разработав больше хороших функций.
  4. Я не добавлял функции Merchant.csv в свои данные о поездах, так как это снижало мой балл. Но добавление некоторых хороших хаков для обработки этих данных определенно может улучшить оценку.
  5. Что касается нейронной сети, мы можем попробовать разные архитектуры, чтобы повысить производительность модели.

Надеюсь, вам понравилось читать опыт моего первого тематического исследования.

Вы можете найти полный код в моем GitHub Repo

Профиль LinkedIn:https://www.linkedin.com/in/ayush-pattiwar-4344571b1/

Ссылки и ссылки:

  1. https://www.kaggle.com/mfjwr1/simple-lightgbm-без-смешивания
  2. https://aiaspirant.com/elo-merchant-category-recommendation-kaggle/
  3. https://www.kaggle.com/roydatascience/elo-stack-with-goss-boosting
  4. https://chandureddyvari.com/posts/elo-merchant-feature/
  5. https://towardsdatascience.com/elo-merchant-category-recommendation-a-case-study-33e84b8465c7

Вычислительная платформа: https://colab.research.google.com

Курс : appliedaicourse.com