Я делюсь своим решением, которое поможет вам начать свое путешествие по хакатону

Недавно я участвовал в программе MachineHack Buyer’s Time Prediction Challenge и хотел бы поделиться с вами своим подходом. Итак, давайте начнем с краткого наброска:

  • Постановка задачи
  • Понимание данных
  • Решение: а) преобразование целевой переменной, б) удаление выбросов, в) проектирование признаков и г) моделирование
  • Учиться у сверстников

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

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

Оценочный показатель: среднеквадратичная логарифмическая ошибка.

Целевая переменная: «затраченное время»

Позвольте нам быстро понять данные:

Всего у нас есть 9 функций, как показано ниже:

Решение:

Теперь, когда мы знаем, с какими данными мы будем работать, давайте посмотрим на решение ниже:

  1. Удаление выбросов:

Сначала я начал с удаления тех 55 записей, в которых time_spent больше 99 процентилей. Это было сделано при условии, что алгоритм сможет изучить статистические зависимости для большой части данных при отсутствии таких записей:

2. Преобразование целевой переменной:

Исходное распределение целевой переменной выглядит следующим образом:

Преобразование журнала сообщений:

Я взял журнал целевой переменной, и получившееся распределение выглядит следующим образом:

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

Как мы видим в разделе «понимание данных», есть 3 особенности типа объекта, запрещающие session_id (он будет удален из входных данных модели). Это функции client_agent, device_details и date.

Вот как я над ними работал:

1) client_agent: я создал из него функции с помощью tfidf, но это не улучшило оценку, поэтому не включил его как часть отправленного мной решения.

2) device_details: я произвел горячее кодирование на device_details и в итоге создал такие функции:

3) дата: я преобразовал его в объект datetime и создал из него обширный набор функций, таких как неделя года, день месяца, месяц года, день недели. , так далее.

Я также создал такие функции, как «week_end» и «month_end» со следующей интуицией:

  • Покупатель может проводить много времени на веб-сайтах, пытаясь понять, что он в конечном итоге купит, когда получит зарплату в "month_end".
  • Покупатель может проводить больше времени в нерабочие дни.

4) Моделирование: я использовал регрессию лассо. Я пробовал другие алгоритмы, такие как Decision Tree, Random Forest, Light GBM, catboost и Xgboost среди других.

Обратите внимание на обратное преобразование целевой переменной во время прогнозирования и вычисления показателя_valuation_metric.

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

  • Создание одной комбинированной функции связанных переменных: «куплено», «добавлено_в_ корзине» и «проверил_аут».
  • Создание дополнительных функций из client_agent, таких как классификация клиентских агентов на карманные устройства и настольные компьютеры, а также извлечение версии браузера.

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

Спасибо за прочтение!!!