Краткое резюме:

Аналитика Видхья провела ML-хакатон на основе данных, предоставленных командой American Express. Этот конкурс проходил с сб 28 сентября 2019 года по вс 6 октября 2019 года. Я потратил некоторое время на решение этой задачи.

Постановка проблемы:

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

  • Демографические данные пользователя
  • Детали кампании и купона
  • Информация о продукте
  • Предыдущие транзакции

Основываясь на данных о предыдущей транзакции и эффективности из последних 18 кампаний, спрогнозируйте вероятность следующих 10 кампаний в тестовом наборе для каждой комбинации купона и клиента, будет ли покупатель использовать купон или нет? Описание набора данных и их отображение показано ниже.

Подход:

Данные поезда содержат около 78 тыс. Строк, а тестовые данные - около 50 тыс. Строк. Изучили данные, просмотрев описательную статистику каждой переменной в наборе поездов. redemption_status - целевая переменная. Распределение этой целевой переменной сильно несбалансировано.

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

Я попытался решить эту проблему, выведя метрики из следующих 4 частей.

а) Покупка совершена до даты начала кампании.

б) Покупка, совершенная до и после периода кампании.

c) Покупка произведена только по заявленному купону, то есть coupon_discount ‹0

г) Покупка, совершенная между датами начала и окончания кампании.

Показатели или поля, полученные мной из приведенных выше частей, агрегируются на уровне customer_id и coupon_id

i) количество приобретенных товаров

ii) Количество приобретенных товаров

iii) Общая продажная цена

iv) получена coupon_discount

v) Общее время, затраченное на покупку в днях после даты начала кампании.

vi) Количество предметов на уровне категории

vii) Топ-20 закупленных товаров брендами учитываются на каждом уровне кода бренда.

viii) # товар приобретен на уровне типа бренда.

ix) # товаров, приобретенных на объединенном уровне brand_type и категории

x) Целевое среднее кодирование в каждом столбце категории, то есть campaign_id, coupon_id, customer_id, age_range, family_size и доход_bracket.

xi) Частотные характеристики всех переменных категорий, упомянутых выше

Сборка модели:

Я использовал LightGBM с метрикой «auc» в качестве оптимизатора и перекрестной проверки 5 раз.

Это указанные выше параметры, которые лучше всего сработали для меня, чтобы достичь результата в общедоступной таблице лидеров как 0,9246039336 без какой-либо настройки гиперпараметров. Самые важные функции показаны ниже.

Другими опробованными и протестированными моделями являются XGboost и AutoML, но LightGBM дал мне лучший результат.

Проблемы:

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

Чему можно научиться у других конкурентов или путем самообучения

  1. Какова лучшая стратегия CV для проблемы классового дисбаланса
  2. Как получить лучшие характеристики от бизнес-задачи, которая в основном имеет переменные категории
  3. Как обрабатывать данные (например, данные о розничной торговле), которые отражают покупательское поведение клиентов по каждому товару (более 1000 уровней категорий), бренду и уровню категории.
  4. Каковы лучшие методы кодирования переменных категории
  5. Как подойти к проблеме, когда мы теряем все собранные идеи? (Это момент, когда вы чувствуете разочарование и беспомощность)

Дайте мне знать, что вы думаете, и любые комментарии и предложения с вашей стороны приветствуются. Рейтинг топперов составляет 0,945+. Я действительно с нетерпением жду возможности увидеть их подход и улучшить себя.

Весь мой код можно найти на моем github-адресе [здесь].

Результаты в таблице лидеров:

Всего зарегистрированных участников: ~ 6000

Всего подали заявки зарегистрированные участники: ~ 1000

Общедоступный: 0,92460 (Рейтинг-56)
Частный: 0,90856 (Рейтинг-67)