Ликбез: как поставить задачу по Data Science на хакатон. Какие они бывают, как правильно составить и какой выхлоп ожидать

На связи Russian Hackers, и мы решили подготовить материал, который поможет как участникам, так и компаниям-партнерам хакатонов собрать комплексное представление о том какие задачи можно встретить на хакатонах и собственно чем они могут быть полезны компаниям. Но прежде небольшое пояснение про DS, AI, ML:

Data Science включает в себя задачи по искусственному интеллекту (AI), которые в свою очередь решаются с помощью машинного обучения - ML, а также другими методами, например, статистикой

Содержание статьи:

Общие вводные

Задачи связанные с DS бывают следующих типов:

  • вот датасет (набор данных), придумайте сервис - продуктовые задачи
  • вот датасет, вот задача, побейте скор (достигнутая ранее точность предсказания) - Kaggle (общепринятое обозначение подобных соревнований)
  • вот “ничего”, соберите дата-сет - data-mining
  • вот продукт, придумайте с чем интегрироваться (поиск API): задача не в самих алгоритмах, а в задачах использовать существующие AI решения, например, Yandex Speech2Text,  Clarifai

В большинстве случаев решение будет сводится к следующим вариантам:

  • классификация: ответ алгоритма – 0 или 1, прикладной пример: есть дефект на производственной ленте или нет
  • регрессия: ответ алгоритма – вероятность от 0 до 1, прикладной пример: с какой вероятностью есть дефект на производстве)
  • CV: задачи по компьютерному зрению, прикладной пример – есть данные с камер, нужно определить: что за сущность на камере (классификация), какое действие совершено, и т.п.
  • NLP: задачи по обработке языка, информации в текстовом виде, прикладной пример: есть отзывы банков, надо определить они написаны с негативом или позитивом
  • explainable AI: задачи по интерпретации результатов. По-умолчанию модель - это черная коробка, которая выдает результат, но не выдает причины, которые стоят за ним. Алгоритмов, которые умеют обосновать работы, достаточно мало, но это одно из самых трендовых направлений. Прикладные примеры: подобные алгоритмы крайне важны в банкинге: скоринге кандидатов на кредит, на производствах, где необходимо узнать причину брака.

Также есть и другие менее популярные виды задач, и никто не отменял возможность комбинировать несколько задач в одной.

Что необходимо предоставить для решения задач

Железо

Для ряда задач нужно “железо” - серьезные вычислительные мощности:

  • для всего похожего на изображения (видео и т.п.) нужны GPU (графические ускорители) – они ускоряют обучение моделей в 30-60 раз;
  • для некоторых алгоритмов NLP и классических алгоритмов ML чаще нужно много CPU (процессорные мощности)

Датасеты

Это очень больная тема, так как данные чаще всего находятся под NDA. Что желательно подготовить для участников:

  • чистые данные, на основе которых нужно предсказывать (Х) и
  • цель обучения – что предсказываем (Y)

Здесь действует правило: чем больше данных, тем лучше. В случае с хакатоном должно быть ограничение на то, чтобы датасеты помещались в оперативную память компьютера объемом до 8 Gb (если предоставляются достаточные облачные мощности, то это ограничение может быть снято).

Оптимально, если это табличка с данными, следующего вида:
x_1 x_2 x_3 x_4 x_5 … x_n; y_1, … y_k …,
где с помощью x_i предсказывается y_k.

Данные могут быть анонимные или нет. Анонимность - мы не знаем что означает x_1 или x_2.

Анонимизация данных полезна:

  • против NDA,
  • против использования алгоритмов у конкурентов,
  • когда хотим получить инсайд из машинного обучения, а не из интерпретации конкретного человека. Если данные не анонимные, люди выдумывают продуктовые фичи, а не инженерные и это часто хуже по качеству

Анонимизация данных плоха:

  • в продуктовых кейсах

Важно обратить внимание на следующее:

  • чтобы не было прямой зависимости X от Y, либо Y в прямом виде есть в X. Это называется leak в данных – это очень-очень-очень плохо;
  • чтобы в Y не было перекосов по классам, например, данных, что все хорошо -  много, что есть ошибка – единицы. Особенно это актуально, если речь идет о дефектах производства;
  • чтобы в X были разные значения: если задача «отличить кошку от собаки», а в обучающей выборке только кошки сфинксы и Голден Ретриверы, то алгоритм на Хаски будет работать плохо;
  • строк в датасете лучше иметь 10^5 - 10^7 – это оптимально. По объему – если это таблица с числами, то до 50Мб. Если картинки, видео и т.п. – отдельный архив;
  • не всегда большее количество данных приводят к лучшему результату. Часто алгоритмы дают больший разброс, если они знают слишком много о данных, поэтому на хакатонах часто дают подзадачу “узнать, какие факторы самые важные”.

На практике сырые данные приводят к более плотным факторам. Например, были данные с сенсора пожарной безопасности и с датчика огня. На основе них сделали фактор “Начался пожар” = (огонь усилился И датчик сработал).

Какая польза от DS задачи на хакатон

Для дата-сентистов

  • получить новые факторы для продакшна,
  • убрать те факторы, которые не вносят вклад в модель,
  • получить корреляцию ответов и данных,
  • узнать какие внешние данные можно использовать для их работы,
  • поиск актуальных статей, работающих в их сфере - опытные команды на практике имплементируют “state of the art” подходы из статей и протестируют их на ваших данных,
  • трансфер похожих алгоритмов из других областей: например, алгоритмы МЛ диагностики ЭКГ сделали прорыв в нефтянке.

Для менеджмента

  • генерация продуктовых фичей и их реализация,
  • поиск команд для коллаборации/найма,
  • технологический скаутинг — какие технологии можно использовать для решения задач,
  • 20-40 прототипов за хакатон,
  • поиск обоснования (explainable ai): почему произошла та или иная вещь,поиск утечек в данных.

Примеры задач

Первый пример

Bosch дали датасет с производства – сварки деталей.  Датасет состоял из тысяч сенсоров, снимающих данные на ленте с течением времени. Задача – объяснить какие события влияют на дефекты производства (Explainable AI).

Кто курирует:

  • Data Scientist,
  • Инженер производства, ответственный за данные,
  • Менеджер, уточняющий вопросы по производству,
  • Ивентщик, волонтеры, собирающие обратную связь от команд по данным.

Результат:
Сервис – помощник для производства, уменьшающий количество дефектов на производстве. https://stable-ai.github.io

Как работает

1) Predict. Классификация 99.4% дефектов на производстве

2) Explain. Ансамбль из разных алгоритмов предсказывает дефекты. Каждый из алгоритмов выдает наиболее приоритетные фичи для производства и их вклад, а также общий разброс всех алгоритмов. Ансамбль алгоритмов уверен в предсказании в 83% случаев, а значит эти дефекты можно автоматизировать и экономить до 83% времени на Quality Assurance

3) Prevent. Знание по ошибкам позволяют устранять их. По исследованию McKinsey http://bit.ly/mckinsey_stableai до 30% затрат производства полупроводников тратят на поиск брака.

Второй пример

CET MIPT, BCG, Газпромнефть дали задачи Найти нефть и Добыть нефть. Опишу первую задачу: найти нефть.

Дали данные со скважин. Данные были на основе результатов  исследований (каротажей). Каждое исследование стоит денег. Нужно максимизировать предсказание алгоритма по поиску нефти и минимизировать суммарную стоимость исследований. Бонусом была задача предсказания пород почвы

Вот хороший пример как оформлялись данные и задача: https://drive.google.com/drive/u/0/folders/1P9TzqcxfQW5cnmTealPwD8DNQFKoE8z3

Ожидания от команд на хакатоне

Что участники будут делать

  • изучать существующие решения,
  • пилить модели,
  • делать новые алгоритмы,
  • разворачивать на инстансе машину: использовать облачные вычисления для ускорения работы над проектом.

Что участники не будут делать

  • слишком много работать на вашем стеке технологий,
  • чистить данные,
  • снимать дорогие сервера,
  • придумывать данные за вас,
  • MVP, так как результат хакатона - это Proof of Concept,
  • деплой в облаке, продакшн реди.

Портрет участников

Уровень участников будет очень сильно зависеть от организации процесса привлечения команд и их последующего отбора. Здесь важно понимать, что даже если задача внешне выглядит сложной и интересной, на нее могут прийти как участники,

  • для которых все заканчивается использованием самых простых готовых алгоритмов,
  • так и специалисты, например, из передовых исследовательских  отделов по DS IT компаний, которым интересно попробовать новые алгоритмы, или профессиональные участники Kaggle соревнований, чей интерес - получить еще одну “медаль”.

Как участники выигрывают:

  • нашли лик в данных и “заабузили” его,
  • ИЛИ сделали ансамбль из алгоритмов градиентного бустинга,
  • засунули туда фичей побольше,
  • еще больше фичей,
  • нашли внешние датасеты и еще улучшили качество.

Какие следующие шаги чтобы это было продуктом


Что необходимо делать, чтобы решения доживали до продакшена:

  • нужно упаковывать решение с хакатона в условный докер,
  • давать доступ к данным под NDA и сохранять результаты работы,
  • обсуждать интеграцию с текущей архитектурой компании;

Потребуется как работа со стороны команды, так и со стороны компании. Одним из простых вариантов решения будет пригласить команду доделать это как аутсорс разработчикам или нанять их в штат.

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