Kaggle Days - (почти) официально самое интересное мероприятие для встреч, обучения и соревнований с самыми талантливыми специалистами по данным со всего мира. И вот как мы его выиграли.

В январе этого года (2019 г.) в Париже прошло второе мероприятие Kaggle Days. Более 200 специалистов по данным со всего мира собрались, чтобы учиться, делиться знаниями и, в конечном итоге, соревноваться друг с другом в 11-часовом классном соревновании Kaggle, которое проходило во время конференции. В этом сообщении в блоге описывается наше решение конкурса, в результате которого мы заняли 3-е место.

Прогнозирование продаж роскошных товаров LMVH

Претендентам были предоставлены данные о первых семи днях выпуска товаров Louis Vuitton после их запуска на www.louisvuitton.com. Цель заключалась в прогнозировании продаж на каждый из трех месяцев после запуска. Дополнительные данные включали описания продуктов, статистику продаж, данные о социальных сетях, навигации по веб-сайту и изображения.

Стратегия

Как и во многих наших прошлых соревнованиях Kaggle, мы следовали простой тактике:

  1. Глупые особенности сложных моделей - создавайте простые функции и позвольте моделям машинного обучения «понять» сложное взаимодействие между ними.
  2. Примите разнообразие. Обучите множество моделей и составьте лучшие модели из списка лидеров с наименьшим совпадением ошибок.
  3. Командная работа - у каждого члена команды есть четко определенные обязанности: Feature-Extractor, Modeler и Integrator.

Исходный уровень

Прежде чем даже взглянуть на данные, мы встали на плечи гигантов и использовали базовый сценарий команды Kaggle Days, который включал в себя множество функций. Мы запустили простую модель Случайный лес из не более 100 деревьев на всех данных поезда, просто чтобы увидеть важность каждой функции. Результаты стали абсолютной неожиданностью, поскольку журнал продаж за первые 7 дней получил на 20 баллов более высокий балл важности по сравнению со всеми другими функциями. Эта информация позволила нам в некоторой степени контролировать дисперсию сгенерированных моделей.

Формулировка бизнес-вопроса

Погрузившись в данные, мы обнаружили, что кто-то проделал хорошую работу по их разделению. Обучающие данные состояли из ~ 1700 уникальных продуктов, в то время как тест включал почти такое же количество разных продуктов. Это заставило нас задуматься о проблеме следующим образом: если предположить, что конкретный продукт, скажем, женский браслет, был продан x раз в первую неделю после его запуска и некоторое количество m1, m2, m3 в последующие месяцы, сколько будет продано с учетом подобный предмет?

Игнорирование тенденций - поскольку данные относились к первой неделе запуска и не включали григорианский месяц, мы пренебрегли сезонными тенденциями и уделяли меньше внимания тенденциям в социальных сетях. В основном все сводилось к вопросу о схожести продуктов. Стоит отметить, что Микелю Боберу-Иризару удалось оценить относительное сокращение продаж в течение периода тестирования, таким образом улучшив оценку с помощью метода, который мы называем MLE - оценка максимальной таблицы лидеров.

Как смоделировать сходство продуктов

  1. Категории: эксперты сгруппировали товары по разным типам, например изделия из кожи и повседневные сумки. Эти особенности были чрезвычайно ценными для понимания сходства продаж разных продуктов. Эти функции не только отражают то, как человек будет воспринимать эти товары пассивным образом, но также активно влияют на продажи, поскольку они определяют положение товара на веб-сайте и то, как он представлен покупателям.
  2. Текст - характеризует объект с помощью его текста, применяя TF-IDF и PCA к объектам.
  3. Векторы изображений - элементы изображения были извлечены с помощью Google Vision API. Этот API использует нейронные сети, обученные на очень общих наборах данных, таких как ImageNet, что совершенно бесполезно для различения двух роскошных повседневных сумок. Следовательно, мы проигнорировали эти особенности.
  4. CTR. Данные о посещаемости веб-сайтов включают просмотры страниц и клики по элементам. из этого мы извлекли средний рейтинг кликов и использовали его как функцию.

Модели

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

Итак, почему мы говорим, что это переоснащение?

Если бы мы консультировались с LMVH о том, как увеличить продажи, мы применили бы несколько иной подход. Например, LMHV может провести A / B-тестирование наиболее важных функций, таких как категоризация или текстовые описания продуктов, чтобы проверить, повлияет ли их увеличение на продажи. Тем не менее, когда мы стремимся выиграть соревнование Kaggle, наша единственная цель - наилучшим образом подогнать наши прогнозы к тестовой выборке.

Машины и окружающая среда

Весь код выполнялся на вытесняемой виртуальной машине глубокого обучения Google Cloud с экземпляром n1-highmem-8 (8 виртуальных ЦП, 52 ГБ ОЗУ, 0,1 доллара США в час). Машина была расположена в центральной части США, поэтому она была доступна в часы соревнований, так как мы были в Европе.

Опыт

В то время как Kaggle - прекрасная платформа для обмена знаниями и соревнований в очень разнообразных и сложных соревнованиях, Kaggle days добавляет важный слой в это сообщество: личное общение. Мы фантастически провели время, встретившись с коллегами по анализу данных со всего мира, и узнали, что все мы разделяем общую мечту: Совершенствовать тестовые данные.

Код записной книжки здесь на Github | Профиль Kaggle: Гад Бенрам