How to Win a Data Hackathon (Hacklytics 2021)
Юджин Ян рассказывает о закономерностях, которые он заметил у команд-победителей, когда выступал ментором и судьёй на Hacklytics 2021 — 36-часовом дататоне Georgia Tech. Проекты оценивались по пяти критериям: техническая сложность (20 баллов), инновационность (10), завершённость (10), дизайн и визуализация (20) и презентация (10). Главный вывод: обучение собственных ML-моделей не было решающим фактором — выигрывали те, кто экономил время за счёт готовых наборов данных (например, Kaggle-датасет из 40 тыс. новостей или твиты о вакцинах от COVID) и API (Reddit, Twitter). Сильные команды использовали готовые библиотеки и предобученные модели (Vader, afinn, text2emotion, BERT, 3D-оценка позы человека), строили простые интерфейсы (React, Streamlit, Plotly, Flask) и разворачивали прототипы для живого демо. Среди победителей — детектор фейковых новостей RealityCheck на BERT и GCP, Clinical Model Tuner для здравоохранения, Wolf of WallStreetBets с анализом тональности r/wallstreetbets и Voices of the Vaccine (абсолютный победитель). Автор подытоживает, что эти приёмы по сути совпадают с тем, как строят ML-системы в индустрии.
Как победить на дата-хакатоне (Hacklytics 2021)
[ datascience engineering misc ] · 6 мин чтения
На прошлой неделе я был ментором и судьёй на Hacklytics 2021 — 36-часовом дататоне Georgia Tech. Общаясь с командами во время сессий хакинга и оценки, я заметил у лучших команд общие закономерности, которые помогают им побеждать. Вот что я узнал о том, как хорошо выступить на дата-хакатоне в условиях ограниченного времени.
Если вам интересно, вот заранее заданные критерии, которые судьям выдали для оценки проектов.
Какие технологии были использованы или изучены? Мы хотим поощрять проекты, которые демонстрируют понимание, а также стремление углубиться в незнакомые навыки и освоить их. Здесь проверяется, работал ли проект с концепциями data science и понимает ли команда, что значит работать с наборами данных (статистика, инсайты, исследование, моделирование и т. д.).
Является ли проект чем-то новым или редко встречающимся? Привносит ли он новый поворот или угол зрения в известную область или тему? Что придаёт этому проекту «вау»-фактор?
Насколько команда достигла того, что планировала достичь? Развёрнут ли проект или готов к развёртыванию? Сколько ещё усилий понадобится, чтобы превратить проект в полноценное приложение или решение?
Выглядит ли проект визуально приятно? Можно ли потенциально увидеть и использовать его на публичной платформе? И самое важное: если это проект по визуализации, обосновывает ли он свои решения на основе сделанных визуализаций и предоставляет ли он какую-либо ценную информацию, которую искали?
Насколько хорошо проект представлен? Понятны ли его цель и мотивация? Что дальше ждёт проект? Есть ли у команды рабочее демо или прототип?
Минимизируйте сбор данных; используйте готовые наборы данных и API
Во время хакинга некоторые команды спрашивали, как спарсить данные с сайтов. Например, одна команда хотела спарсить IMDb, чтобы получить данные о названиях фильмов, актёрском составе, режиссёрах, рейтингах и т. д.
Я отговорил их от этого. Парсинг данных отнимает много времени и может быть непростым, когда речь идёт о динамически генерируемом контенте (например, через JavaScript). Точный разбор и извлечение полей из сырого HTML — это пожиратель времени. Вместо этого я указал им на публично доступные наборы данных, такие как данные, предоставляемые IMDb, или этот набор данных с Kaggle, в котором более 80 тыс. названий.
В противоположность этому большинство команд-победителей экономили время, используя готовые, чистые данные. Например, команда, создававшая детектор фейковых новостей, использовала набор данных с Kaggle из 40 тыс. настоящих и фейковых новостных статей. Аналогично, абсолютный победитель использовал набор данных с Kaggle с твитами о вакцинах от COVID. Организаторы также поделились списком публично доступных наборов данных, которые могли использовать участники.
А что, если командам нужны были свежие данные, для которых нет готового набора? В этом случае они использовали API. Команда-победитель (финансовая категория) использовала Reddit API, чтобы получить данные о постах в r/wallstreetbets, включая количество просмотров, комментарии, заголовок, текст и т. д. Абсолютный победитель использовал Twitter API, чтобы получить свежие твиты о вакцинах от COVID. Использование этих API позволило им сосредоточиться на других аспектах, таких как анализ тональности и создание пользовательских интерфейсов (UI).
Используйте библиотеки / предобученные модели, чтобы ускорить ML
Хотя это был дата-хакатон, относительно немногие команды обучали модели машинного обучения.
Многие команды использовали Vader для анализа тональности. Его простой API и отличные примеры сделали его лёгким для освоения новичками — три команды-победителя применили Vader к твитам и постам Reddit. Ещё одна команда-победитель использовала сочетание afinn и text2emotion.
Некоторые команды использовали предобученные модели. Команда, создававшая детектор фейковых новостей, начала с предобученного BERT и дообучила его на своём наборе данных с фейковыми новостями в течение трёх эпох. Команда-победитель в категории лёгкой атлетики (бег и прыжки) начала с предобученных моделей 3D-оценки позы человека, чтобы определять, когда спортсмены преодолевают барьеры.
Знакомство с фронтендом полезно
Большинство команд-победителей создали простые UI, которые сделали их идеи более конкретными.
Победитель в категории здравоохранения создал Clinical Model Tuner, чтобы врачи могли загружать существующие модели и дообучать их на дополнительных данных (то есть обратное федеративное обучение). Они создали React-приложение, которое хорошо это демонстрировало. Пользователи могли загружать предобученные модели, наборы данных и метки для дообучения моделей. После дообучения пользователи также могли видеть улучшения метрик оценки модели.
Пользовательский интерфейс Clinical Model Tuner (спасибо команде)
Ещё одна команда провела анализ тональности постов в r/wallstreetbets и визуализировала корреляцию между тональностью по акции и движением её цены. Они также создали React-приложение, которое позволяло пользователям видеть посты Reddit по каждой акции и связанную с ними тональность, а также движения цены.
Пользовательский интерфейс Wolf of WallStreetBets
Некоторые команды также использовали Python-библиотеки, чтобы быстро создавать интерактивные UI. Победитель в категории лёгкой атлетики (американский футбол) использовал Streamlit, чтобы создать дашборд, показывающий футбольную и социально-медийную статистику потенциальных новобранцев, помогающий командам принимать более удачные решения. Абсолютный победитель создал интерактивный дашборд на Plotly для визуализации общественной тональности к вакцинам от COVID на основе твитов.
Пользовательский интерфейс Voices of the Vaccine (источник)
Тем не менее использовать React или библиотеки было вовсе не обязательно. Команда TickerTrakr получила награду за лучшую визуализацию с помощью простого сочетания Flask, HTML, CSS и JavaScript.
Умение развёртывать полезно
У многих команд-победителей прототипы были развёрнуты. Это создавало разницу между офлайн-экспериментом и живым демо, которое ощущалось гораздо ближе к реальности.
Команда RealityCheck обернула Flask-приложение вокруг своей дообученной модели BERT и развернула его на Google Cloud Platform. Это позволило им продемонстрировать своё расширение для Chrome, которое давало пользователям возможность вводить фрагменты новостей и получать вероятность того, что это фейковая новость.
Некоторые команды даже сделали свои прототипы публично доступными, чтобы другие участники и судьи могли с ними взаимодействовать. Некоторые из этих демо до сих пор доступны (по состоянию на 2021-02-14):
The Wolf of WallStreetBets: тренды цены и тональности (на основе r/wallstreetbets) Hurdle Tracker: показатели прыжков через барьеры (например, дистанция, скорость) из видео
Пользовательский интерфейс Hurdle Tracker
Заключение
Обучение специально созданных моделей машинного обучения не было отличительным фактором на этом хакатоне. Вместо этого разницу создавало следующее:
Использование готовых данных через публичные наборы данных или API; использование библиотек / предобученных моделей для ускорения итераций ML; создание UI, чтобы машинное обучение и инсайты было легко воспринимать; развёртывание моделей и UI, чтобы люди могли ими пользоваться
Похоже на построение систем машинного обучения в индустрии, не правда ли?
Как победить на дата-хакатоне? Я увидел, как лучшие команды сделали это на Hacklytics 2021: • Используя готовые наборы данных и API • Используя ML-библиотеки и предобученные модели • Создавая простые UI для демо • Развёртывая прототипы, чтобы судьи могли попробовать Подробности ниже 👇https://t.co/f7vvuRCHCH— Eugene Yan (@eugeneyan) 17 февраля 2021
Спасибо Yang Xinyi за чтение черновиков этого текста.
Если вы нашли это полезным, пожалуйста, цитируйте эту заметку так:
Yan, Ziyou. (Feb 2021). How to Win a Data Hackathon (Hacklytics 2021). eugeneyan.com. https://eugeneyan.com/writing/how-to-win-data-hackathon/.
или
@article{yan2021hacklytics, title = {How to Win a Data Hackathon (Hacklytics 2021)}, author = {Yan, Ziyou}, journal = {eugeneyan.com}, year = {2021}, month = {Feb}, url = {https://eugeneyan.com/writing/how-to-win-data-hackathon/} }
Присоединяйтесь к 11 800+ читателей, получающих обновления о машинном обучении, RecSys, LLM и инженерии.