Analytics Vidhya, сообщество профессионалов в области аналитики и специалистов по данным, провело хакатон по онлайн-аналитике 5 и 6 (выходные) сентября 2015 года. Я узнал об этом всего за пару дней до этого. на хакатон, и я быстро зарегистрировался и отменил все свои планы на выходные. Хотя до начала хакатона было много регистраций, было всего около 70 с лишним участников, которые приняли участие и представили решения.

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

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

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

В качестве первого шага я установил конвейер - чтение данных, извлечение нескольких основных функций, построение простого классификатора, создание файла прогнозов за пару часов, а затем извлечение функций по мере прохождения времени. Поскольку это был двухдневный хакатон, нам нужно было использовать лучшие доступные инструменты и вырвать лидерство. И снова линейные модели не принесли мне хороших результатов, а такие модели, как Random Forest, работали хорошо. Как и ожидалось, XGBoost снова показал феноменальные результаты с набором данных.

Ключевыми моментами, которые я отметил во время работы над этим набором данных, были:

  1. Когда задана категориальная переменная с высокой мощностью, например «город» или «штат», попробуйте использовать ее. Также объедините все редкие уровни. Действительно помогает!
  2. XGBoost может обрабатывать отсутствующие значения. Иногда лучше оставить пропущенные значения как есть и позволить алгоритму принять решение о том, что с ними делать.
  3. Для случайных лесов я обработал недостающие значения как -3,14, как и на каком-то другом уровне.
  4. Используйте даты, когда они есть. Вы можете извлечь день, день недели, месяц, квартал, год и для начала сделать прямой выбор подмножества!

Вначале я лидировал в таблице лидеров, но вскоре другие, такие как phani_srinath, заняли безумное лидерство в LB. Мне посчастливилось выяснить свою ошибку при настройке XGB, и я смог улучшить свой результат. Каким-то образом мне не удавалось заставить мой случайный лес хорошо работать, и у меня не было трюков. Затем наступил решающий момент. Я попробовал FTRL, линейную онлайн-модель (алгоритм, который Google использует в своей системе прогнозирования рекламы), и она сработала! Это стало шокирующим / приятным сюрпризом, и я сделал взвешенный ансамбль. Несмотря на все это, я занял 2-е место в частной таблице лидеров, проиграв крошечные 0,00032., однако, я был счастлив, что проиграл невероятно сильному сопернику.

К счастью, несколько участников попросили организаторов продлить конкурс еще на несколько дней, и они согласились и продлили его еще на 5 дней. На этот раз я хотел убедиться, что выкладываюсь наилучшим образом. Чтобы продемонстрировать, насколько близок был конкурс, организаторы показали только 2 лучших личных результата перед вторым этапом конкурса, и это дало мне и phani_srinath несправедливое преимущество. Итак, мы раздали свой подход всем участникам форума. И все это восприняли так хорошо, что я занял 10-е место в публичной таблице лидеров в недельном соревновании. На этот раз я построил модели 10XGB, 5 моделей RF, 5 моделей FTRL, усреднил их для стабильности и убедился, что я хорошо объединяю свои модели, и рискнул. К счастью, это сработало, и Ура! Я занял первое место в частной таблице лидеров недельного соревнования и занял первое место из ~ 60 с лишним участников! Я был уверен в этом только на 50%, потому что мои оценки по резюме были хорошими strong, и я слишком часто использовал ансамбль, чтобы эффективно бороться с дисперсией в наборе данных.

Я также дал небольшое руководство по эффективной перекрестной проверке с XGBoost. См. здесь!

Я счастлив, что обеспечил 2 подиума и 1 победу на этом хакатоне. Таким образом получается 2 приза в месяц. Предыдущее было это. Это были очень удачные 30 дней!

Для получения дополнительных сведений ознакомьтесь с моими кодами на github!

Надеюсь, я продолжу узнавать больше и больше и преуспею в будущих соревнованиях. Игра началась!

И наконец, привет УДИВИТЕЛЬНОЕ трио "Т",

  1. Tianqi - создатель XGBoost
  2. Трискелион - за блестящего гида по ансамблю.
  3. Тинртгу - он заслуживает оскара за свой красивый код FTRL для онлайн-lr!