Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван Гуз, Михаил Трофимов (Avito)

727 views

Published on

Мы в Авито часто сталкиваемся с ситуацией, когда нужно быстро придумать алгоритм, решающий некоторую бизнес задачу на основе анализа больших объёмов данных. Придумать какой-то алгоритм не сложно, но каждый раз возникает вопрос — а вдруг можно решить эту же задачу в разы более качественно. Исследования можно вести годами, но это рискованно — лучшего решения может и не быть, и будет затрачено много времени.

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

Какие-то были более удачными, какие-то — менее. Расскажем про основные этапы подготовки задач к конкурсу, а также про основные трюки, используемые для победы в таких конкурсах

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван Гуз, Михаил Трофимов (Avito)

  1. 1. Ускорение исследований за счет организации конкурсов Иван Гуз Михаил Трофимов
  2. 2. Кто-то реально проводит конкурсы? • Netflix (2009) – 1M $ – Прогноз рейтингов кинофильмов • Heritage Provider Network (2012) – 3M $ – Прогноз времени госпитализации • Top3 наиболее популярные платформы: • Конкурсы устраивают известные компании: Avito, Yandex, …, Facebook, Amazon, Microsoft Платформа Год запуска #Решателей #Конкурсов Сумма призов Kaggle 2010 396 K 199 3.5M $ CrowdANALYTIX 2011 9.5 K 99 310K $ DrivenData 2014 < 1K 7 22K $
  3. 3. Конкурсы Содержит ли объявление запрещенный товар? Какова вероятность клика на объявлении? Есть ли телефон на изображении? Кому давать скидку?
  4. 4. Зачем нужны конкурсы Big Data Swamp Конкурс • Определение предельно достижимого качества решения задачи за короткое время • Получение методики решения или хотя бы идей за короткое время
  5. 5. Должна быть экспоненциальная сложность! Откуда? Сырые данные - Поведенческие/статические данные - Неструктурированная информация: тексты, изображения, видео Признаковое описание - Осмысленные признаки - Автоматические признаки Алгоритм - Любая функция: F(признаковое описание) -> Прогноз Критерии задач для конкурсов Бесконечно много вариантов! Бесконечно функций!
  6. 6. CTR Prediction Где экспоненциальная сложность? Что влияет на вероятность клика? История просмотров? Похожесть поискового запроса и заголовка объявления? Соседние объявления? День недели? • 40 GB данных • 414 команд • Улучшение LogLoss: 0.057 -> 0.040
  7. 7. Советы 1:Данные • Не бойтесь выдавать максимум имеющихся у вас сырых данных Сигнал может быть в самых неожиданных для вас местах • Выдайте упрощенную выборку с базовыми признаками для понижения порога входа Big Data Swamp
  8. 8. Совет 2: Train / Test Train Test Public (70%) Test Private (30%) Обучаемся • Известны ответы Промежуточный рейтинг: • Обратная связь • Стимулируем конкуренцию • Не допустить утечек из Train в Test • Test Private и Public брать из одной генеральной совокупности • Дать много репрезентативных данных на Test, Private чтобы исключить переобучение Финальный рейтинг: • Определяем победителей
  9. 9. Борьба с утечками: CTR prediction User 1 User 2 User 3 Время User 1 User 2 User 3 Test EventTrain Event Утечка!
  10. 10. Конкурс - Телефоны на фото Fake! Fake! Подача объявления
  11. 11. Данные - изображения ПростоСложно Есть контакты Нет контактов
  12. 12. Этапы конкурса Train – 40K картинок Test Public – 10K картинок Test Private – 10K картинок Время Изначально скрыт Обучаем модели и соревнуемся Замораживаем модели Скорим Test Private • Выиграла Deep Learning модель: Public/Private AUC 0.85/0.95 • Плохое разбиение на Public/Private Test • Переобучилась под фрагменты изображений => плохая постановка
  13. 13. Конкурс: Обнаружение запрещенного товара по тексту • 4 GB текста • 285 команд • Улучшение AP@K: 0.927 -> 0.987
  14. 14. Совет 3:Организация • Предоставьте участникам код baseline модели и как ее построить – Это позволит им не терять время на изобретение велосипеда • Не устраивайте конкурсы длиннее чем 2 мес – Слишком много времени приводит к созданию чрезмерно сложных решений – Лучшие чрезмерно сложные решения зачастую эквивалентны по качеству. Победителя будет определять случай • Ограничивайте количество сабмитов. Не более 2х раз в день. – Иначе можно использовать обратную связь от тестовой выборки для повышения качества модели (переобучение)
  15. 15. Совет 4: Когда проводить конкурсы? Конкурс Конкурс Формируем требования к инфраструктуре Конкурс
  16. 16. Спортивный анализ данных: ошибки, трюки, тактика Михаил Трофимов
  17. 17. С чего начинается соревнование •Конкурс — это данные + метрика + правила •Участники должны •оптимизировать метрику •на фиксированном наборе данных •с учетом правил Нет ограничений на вычислительные мощности, время или «разумность» решения!
  18. 18. Данные Начинать всегда следует с осмотра данных Часто бывают баги в описании, ошибки в самих данных, может отсутствовать кусок «Все врут» •нужно критично относиться к тому, что известно про датасет В данных порой бывают «утечки» •это искусственные зависимости, которых не должно было быть, и которые приводят к нереалистичному результату
  19. 19. Примеры утечек «Truly Native?» (kaggle, 2015) •бинарная классификация веб-страниц •признак «дата создания файла»: >0.998 (AUC) «Predict Exacerbation in patients with Respiratory Diseases» (crowdanalytix, 2014) •бинарная классификация пациентов •признак «id объекта»: >0.8 (AUC) «Интернет-олимпиада Викимарта», 3я задача (2013) •бинарная классификация пользовательской сессии (завершит ли сессию в следующий момент) •в описании сессии был признак «pageviews» •признак «длина сессии == pageview»: >0.999 (accuracy)
  20. 20. Mетрика Метрика составляет половину задачи! Для организатора: промах с выбором метрики = промах с постановкой задачи Для участника: важно понимать ее особенности Пример: RMSLE (root mean squared log error) следует сразу перейти от y к log(y+1)
  21. 21. Валидация Основная идея: •несколько раз бьем выборку на обучениеконтроль •смотрим на среднеедисперсию метрики на контроле Дьявол в мелочах: как именно производить разбиение? Важно иметь локальный надежный механизм оценки качества решения!
  22. 22. Валидация Типичный пример: •если есть временная ось — делить выборку «допосле», а не перемешивать данные При разбиении важно как можно точнее смоделировать «боевые» условия для контрольного множества!
  23. 23. Что дальше? Ок, построили цикл валидации, что дальше? Начать с простого решения — и итеративно его усложнять •за счет алгоритмов • но на одних алгоритмах далеко не уедешь •за счет новых признаков/идей • хороший признак полезнее крутого алгоритма
  24. 24. Feature engineering •Придумывание признаков — почти искусство •Есть ряд стандартных приемов (логарифм, степень, произведенияразности,…) •Полезно иметь богатое воображение •Можно почерпнуть идеи из научных статей по теме задачи •Будьте готовы, что 90% идей не взлетят
  25. 25. Ансамбли Полезнее инвестировать время в признакиидеи. Но если идеи совсем кончились — используйте ансамбли!
  26. 26. Ансамбли • Характерное увеличение качества: 1-3% • Цена — в разы большая вычислительная сложность • Ансамбли могут быть монструозными
  27. 27. Базовый стек
  28. 28. Библиотеки Название Что реализует? python only sklearn Набор классических алгоритмов Да xgboost Градинтный бустинг над решающими деревьями и логистическими регрессиями Нет vowpal wabbit Множество линейных и почти линейных моделей Нет LibFM, LibFFM Факторизационные машины Нет liblinear Набор линейных методов (в том числе линейный SVM) Нет Theano Вычислительный граф Да Lasange (надстройка над Theano) Набор блоков для построения нейросетей Да
  29. 29. GIGO MLDA — не магия и не серебряная пуля Иногда лучшее решение немногим лучше тривиального (случайного) •«The Big Data Combine Engineered by BattleFin»(kaggle) • прогнозирование многомерных временных рядов • лучшее решение ~ последнее значение * 1.014 •«Acquire Valued Shoppers Challenge»(kaggle) • предсказание возвращения покупателя • лучшее решение: 0.62 AUC Garbage In -> Garbage Out
  30. 30. Коротко о главном Хотите выиграть? • Внимательно смотрите на данные • Осознайте метрику • Посмотрите на задачу с разных сторон, попробуйте разные идеи • Смешайте все идеи и наработки
  31. 31. Правильные ожидания от конкурсов НЕ ждите от конкурсов готового решения!
  32. 32. Правильные ожидания от конкурсов Используйте конкурсы как возможность найти и познакомиться с экспертами
  33. 33. Правильные ожидания от конкурсов Результат конкурса – идеи, которые нужно проверять на новых данных, и на их основе строить промышленное решение
  34. 34. Спасибо за внимание! Вопросы?

×