Задачи машинного обучения (ML) имеют несколько другую специфику, нежели инженерные задачи построения высоконагруженных систем.
Многие из ML-задач можно решить быстро и "на коленке". Хрестоматийный пример - хотим построить спам-фильтр и берем наивного байеса. Хороший масштабируемый алгоритм, но на реальных данных оказывается, что качество низкое. Возникает вопрос - что делать? Сдаваться и давать волю спамерам или перепробовать миллион модных современных методов текстовой аналитики за бесконечное время? Даже коллективу сделать это сложно. На выход и приходят конкурсы, где сотни команд за ограниченное время перебирают все возможные способы решения, и вы получаете лучшее. Важно даже не само решение, а факт того, что вы понимаете, какое предельное качество достижимо.
Тут возникает резонный вопрос: а про что тут еще рассказывать? Так вот, проблема в том, что подготавливать задачу к конкурсам намного сложнее, чем искать ее решение. Поэтому конкурсы так не распространены, а специализированные компании берут за подготовку конкурсов весьма солидные суммы. Мой доклад как раз про то, как готовить конкурсы.
Мы устраивали конкурсы на построение алгоритмов, работающих с совершенно различными типами и объемами данных:
- Выявление запрещенных объявлений.
- Прогнозирование вероятности клика на рекламное объявление.
- Обнаружение телефонов на изображениях.
- Прогнозирование инкрементального эффекта от скидочных акций.
Какие-то были более удачными, какие-то - менее. Расскажем про основные этапы подготовки задач к конкурсу, а также про основные трюки, используемые для победы в таких конкурсах.