Мы в Авито часто сталкиваемся с ситуацией, когда нужно быстро придумать алгоритм, решающий некоторую бизнес задачу на основе анализа больших объёмов данных. Придумать какой-то алгоритм не сложно, но каждый раз возникает вопрос — а вдруг можно решить эту же задачу в разы более качественно. Исследования можно вести годами, но это рискованно — лучшего решения может и не быть, и будет затрачено много времени.
На помощь приходят конкурсы по анализу данных. Мы устраивали конкурсы на построение алгоритмов, работающих с совершенно различными типами и объемами данных:
+ Выявление запрещенных объявлений.
+ Прогнозирование вероятности клика на рекламное объявление.
+ Обнаружение телефонов на изображениях.
+ Прогнозирование инкрементального эффекта от скидочных акций.
Какие-то были более удачными, какие-то — менее. Расскажем про основные этапы подготовки задач к конкурсу, а также про основные трюки, используемые для победы в таких конкурсах
4. Зачем нужны конкурсы
Big Data Swamp
Конкурс
• Определение предельно достижимого качества
решения задачи за короткое время
• Получение методики решения или хотя бы идей
за короткое время
5. Должна быть экспоненциальная сложность! Откуда?
Сырые данные
- Поведенческие/статические данные
- Неструктурированная информация:
тексты, изображения, видео
Признаковое описание
- Осмысленные признаки
- Автоматические признаки
Алгоритм
- Любая функция:
F(признаковое описание) -> Прогноз
Критерии задач для конкурсов
Бесконечно
много
вариантов!
Бесконечно
функций!
6. CTR Prediction
Где экспоненциальная сложность?
Что влияет на вероятность клика?
История просмотров? Похожесть поискового запроса и
заголовка объявления? Соседние объявления? День недели?
• 40 GB данных
• 414 команд
• Улучшение
LogLoss:
0.057 -> 0.040
7. Советы 1:Данные
• Не бойтесь выдавать максимум имеющихся у вас
сырых данных
Сигнал может быть в самых неожиданных для вас местах
• Выдайте упрощенную выборку с базовыми
признаками для понижения порога входа
Big Data Swamp
8. Совет 2: Train / Test
Train
Test Public (70%)
Test Private (30%)
Обучаемся
• Известны ответы
Промежуточный рейтинг:
• Обратная связь
• Стимулируем конкуренцию
• Не допустить утечек из Train в Test
• Test Private и Public брать из одной
генеральной совокупности
• Дать много репрезентативных данных на
Test, Private чтобы исключить переобучение
Финальный рейтинг:
• Определяем победителей
9. Борьба с утечками:
CTR prediction
User 1
User 2
User 3
Время
User 1
User 2
User 3
Test EventTrain Event
Утечка!
12. Этапы конкурса
Train – 40K картинок
Test Public – 10K картинок
Test Private –
10K картинок
Время
Изначально скрыт
Обучаем модели
и соревнуемся
Замораживаем
модели
Скорим
Test Private
• Выиграла Deep Learning модель: Public/Private AUC 0.85/0.95
• Плохое разбиение на Public/Private Test
• Переобучилась под фрагменты изображений => плохая постановка
14. Совет 3:Организация
• Предоставьте участникам код baseline
модели и как ее построить
– Это позволит им не терять время на
изобретение велосипеда
• Не устраивайте конкурсы длиннее чем 2 мес
– Слишком много времени приводит к созданию
чрезмерно сложных решений
– Лучшие чрезмерно сложные решения зачастую
эквивалентны по качеству. Победителя будет
определять случай
• Ограничивайте количество сабмитов. Не
более 2х раз в день.
– Иначе можно использовать обратную связь от
тестовой выборки для повышения качества
модели (переобучение)
15. Совет 4: Когда проводить конкурсы?
Конкурс
Конкурс
Формируем требования
к инфраструктуре
Конкурс
17. С чего начинается соревнование
•Конкурс — это данные + метрика + правила
•Участники должны
•оптимизировать метрику
•на фиксированном наборе данных
•с учетом правил
Нет ограничений на вычислительные мощности, время или
«разумность» решения!
18. Данные
Начинать всегда следует с осмотра данных
Часто бывают баги в описании, ошибки в самих
данных, может отсутствовать кусок
«Все врут»
•нужно критично относиться к тому, что
известно про датасет
В данных порой бывают «утечки»
•это искусственные зависимости, которых
не должно было быть, и которые приводят
к нереалистичному результату
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. Mетрика
Метрика составляет половину задачи!
Для организатора:
промах с выбором метрики = промах с постановкой задачи
Для участника:
важно понимать ее особенности
Пример:
RMSLE (root mean squared log error)
следует сразу перейти от y к log(y+1)
21. Валидация
Основная идея:
•несколько раз бьем выборку на обучениеконтроль
•смотрим на среднеедисперсию метрики на контроле
Дьявол в мелочах: как именно производить разбиение?
Важно иметь локальный надежный механизм оценки качества
решения!
22. Валидация
Типичный пример:
•если есть временная ось — делить выборку «допосле», а
не перемешивать данные
При разбиении важно как можно точнее смоделировать
«боевые» условия для контрольного множества!
23. Что дальше?
Ок, построили цикл валидации, что дальше?
Начать с простого решения — и итеративно его усложнять
•за счет алгоритмов
• но на одних алгоритмах далеко не уедешь
•за счет новых признаков/идей
• хороший признак полезнее крутого алгоритма
24. Feature engineering
•Придумывание признаков — почти искусство
•Есть ряд стандартных приемов (логарифм, степень,
произведенияразности,…)
•Полезно иметь богатое воображение
•Можно почерпнуть идеи из научных статей по теме задачи
•Будьте готовы, что 90% идей не взлетят
28. Библиотеки
Название Что реализует? python only
sklearn Набор классических алгоритмов Да
xgboost Градинтный бустинг над решающими
деревьями и логистическими регрессиями
Нет
vowpal wabbit Множество линейных и почти линейных
моделей
Нет
LibFM, LibFFM Факторизационные машины Нет
liblinear Набор линейных методов (в том числе
линейный SVM)
Нет
Theano Вычислительный граф Да
Lasange
(надстройка
над Theano)
Набор блоков для построения нейросетей Да
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. Коротко о главном
Хотите выиграть?
• Внимательно смотрите на данные
• Осознайте метрику
• Посмотрите на задачу с разных сторон,
попробуйте разные идеи
• Смешайте все идеи и наработки
Тут также рассказываем про то, что есть одна из целей – выкладка задачи для разработки принципиально нового мат апарата.
История про deep learning и Alex Net
Тут говорим про конкурс CTR – где выдали много данных. Возможно много лишнего.