Привет, Хабр! В этом посте расскажу вам про один из самых классных хакатонов с DS-треком, проходившем недавно в Питере. Под катом — общий обзор, кейсы, которые мы решали, и, конечно, о том, как сразу обе команды АУ смогли стать победителями.
Это уже третий пост из нашей серии по обзору хакатонов (первые два читайте тут: WSSH, MunHack), и поэтому сразу хочется сказать, что этот хакатон был несомненно более масштабным и также больше походил на хакатон в классическом понимании. То есть тут были как команды, решающие ML-задачи на предоставленных данных, так и участники, пришедшие за финансированием своих стартапов. Впрочем, подробнее о предложенных треках я расскажу позже.
Хакатон проходил в начале марта, в новом офисе Газпром Нефти в Санкт-Петербурге. Но можно было участвовать и онлайн, представляя свои результаты по скайпу.
После регистрации была презентация треков, а потом формирование команд. Конечно, лучше всегда приходить заранее сформировавшись. Как минимум потому, что все понимают, в каком темпе работает человек и что умеет, и не рискуют нарваться на подводные камни.
В идеале, стоит еще и заранее договориться о распределении ролей и структуре проекта. Например, для DS-задач есть популярный туториал по структуре. Пока что мы им еще не пользовались, но однозначно планируем. Потому что каждый раз уже через пару часов после начала хакатона общий репозиторий превращается в свалку недокументированных скриптов, в которых разбираться потом очень и очень сложно.
После представления задач и сбора команд, начался непосредственно процесс разработки. Стоит отметить, что этот хакатон отличался от других наличием чекпоинтов и лекций в течение всех двух дней.
Хотя чекпоинт больше был знакомством с менторами и жюри, нежели докладом о текущих успехах, это было очень полезно в конце. На презентациях время представления результатов было жестко ограничено тремя минутами, но поскольку жюри уже имело представление о командах, было хорошо всем. С одной стороны, во время хакатона участники отвлекались на разговоры и получали новые идеи от экспертов в области. С другой — в конце не было нудных получасовых презентаций, когда докладчик решил внезапно начать со своей биографии. В общем, все было по делу, за что большое спасибо организаторам.
Организаторы придумали шесть треков для участия, среди которых было две номинации за лучшее решение по kaggle-соревнованиям на датасетах Газпром Нефти и компании РобоМед, было также просто по кейсу от Газпром Нефти и Центра Речевых Технологий, еще команды могли представить свой проект в сфере ИИ, и последнее — если решение в каком-то из kaggle-соревнований не набрало лучший скор, можно было придумать, как его монетизировать и победить таким образом в номинации за лучшее продуктовое решение с использованием предоставленного датасета.
Как я уже упомянула, в этом хакатоне от Академического Университета приняли участие сразу две команды. Наша команда взялась сразу за оба kaggle-трека, а наши одногруппники решали один из них, от РобоМеда.
РобоМед предложил участникам по полу, возрасту, диагнозу и анамнезу (жалобы пациента) решить задачу по прогнозированию оттока клиентов. Некоторое время наша команда держалась первой на лидерборде из пятнадцати команд, но потом одногруппники нас обогнали.
Если вдаваться в технические детали, то сложнее всего было работать с анамнезом. Не учитывать его совсем было нельзя, потому что в остальных признаках было много пропусков и мнение пациента, которое как раз и описывает анамнез, необходимо учитывать. Особенно, при предсказании того, вернется пациент в клинику или нет.
Проблемы возникали в основном из-за свободной формы заполнения анамнеза. Например, было много опечаток, с которыми мы боролись регулярными выражениями. Далее исправленная строчка проходила через стемминг (можно думать об этом как о приведении к начальной форме каждого слова). Полученная строка векторизовалась с помощью TF-IDF или Bag-of-words. Но, например, мы не сделали такую киллер-фичу как длина строки. Наши одногруппники до этого додумались и она оказалась достаточно важной. Кроме того, анализировали и окраску анамнеза (положительная/отрицательная), и категорию риска болезни в диагнозе.
В качестве моделей для предсказания использовались деревья (CatBoost и LightGBM) и метод ближайших соседей. А также блендинг, то есть усреднение результатов предсказания нескольких моделей.
Про задачу на данных Газпром Нефти я, к сожалению, не расскажу, потому что ей занималась другая часть команды.
К концу соревнования мы так и не вышли на первое место по точности предсказаний, поэтому за несколько часов до презентаций нужно было срочно решать, как представить результаты в контексте бизнес-модели. И в этом снова очень помогли менторы.
Зачастую, когда есть четко сформулированная задача, даже не надо задумываться, где и как результат твоей работы будет использоваться. Более того, мне, как человеку далекому от бизнеса, сходу и не придумать, как вообще можно монетизировать полученный алгоритм.
Понятно, что в итоге хочется использовать знания о том, что клиент уйдет для предотвращения этого. Поэтому мы решили, что постараемся выделить причины, по которым клиент может не захотеть вернуться. Внезапно, самой популярной причиной оттока стало то, что клиента просто вылечили. Такие выводы мы делали, когда болезнь считалась не хронической. Выделив еще несколько таких кластеров мы снова пошли к экспертам, чтобы узнать, что с такой информацией гипотетический стартап мог бы делать дальше.
Из интересных моментов было еще то, что мы даже посчитали, сколько денег могла бы сэкономить компания с помощью такого алгоритма, и это точно было для меня новым опытом.
Получившиеся слайды, кстати, можно посмотреть здесь: Robomed, ГПН, презентация одногруппников, а сами презентации с хакатона тут.
Сейчас хочется упомянуть про небольшой минус, чтобы потом закончить на позитивной ноте. Это еда, почему-то на хакатонах традиционно проблемы с такой базовой вещью. Видимо, предполагается, что на пустой желудок думается лучше. Да, был кофепоинт, печеньки и даже энергетики, но вкусных обедов и завтраков не из запотевших контейнеров не хватало.
Зато на площадке были классные капсулы для сна. Лично мне в ней было не уснуть, потому что из-за формы капсулы нельзя повернуться, но выглядело неплохо и просто полежать там 15 минут под легкую музыку было приятно.
Еще из приятных мелочей на хакатоне были вполне комфортные места для работы и мерч в виде стикеров и футболок. А после на память осталась куча фоточек, потому что почти все время на площадке были фотографы. И даже два обзорных видео: от организаторов и от Газпром Нефти.
Кажется, я еще ни разу не упомянула, кто организовывал хакатон, и очень зря. Этим занимались ребята из Sci.Guide, за что им большое спасибо. Мы классно провели время и для Петербурга такой уровень хакатона это определенно то, на что стоит равняться. В общем, хотим еще!
Пост написан совместно с Rebryk.
Введение
Это уже третий пост из нашей серии по обзору хакатонов (первые два читайте тут: WSSH, MunHack), и поэтому сразу хочется сказать, что этот хакатон был несомненно более масштабным и также больше походил на хакатон в классическом понимании. То есть тут были как команды, решающие ML-задачи на предоставленных данных, так и участники, пришедшие за финансированием своих стартапов. Впрочем, подробнее о предложенных треках я расскажу позже.
Организация
Хакатон проходил в начале марта, в новом офисе Газпром Нефти в Санкт-Петербурге. Но можно было участвовать и онлайн, представляя свои результаты по скайпу.
После регистрации была презентация треков, а потом формирование команд. Конечно, лучше всегда приходить заранее сформировавшись. Как минимум потому, что все понимают, в каком темпе работает человек и что умеет, и не рискуют нарваться на подводные камни.
В идеале, стоит еще и заранее договориться о распределении ролей и структуре проекта. Например, для DS-задач есть популярный туториал по структуре. Пока что мы им еще не пользовались, но однозначно планируем. Потому что каждый раз уже через пару часов после начала хакатона общий репозиторий превращается в свалку недокументированных скриптов, в которых разбираться потом очень и очень сложно.
После представления задач и сбора команд, начался непосредственно процесс разработки. Стоит отметить, что этот хакатон отличался от других наличием чекпоинтов и лекций в течение всех двух дней.
Хотя чекпоинт больше был знакомством с менторами и жюри, нежели докладом о текущих успехах, это было очень полезно в конце. На презентациях время представления результатов было жестко ограничено тремя минутами, но поскольку жюри уже имело представление о командах, было хорошо всем. С одной стороны, во время хакатона участники отвлекались на разговоры и получали новые идеи от экспертов в области. С другой — в конце не было нудных получасовых презентаций, когда докладчик решил внезапно начать со своей биографии. В общем, все было по делу, за что большое спасибо организаторам.
Кейсы и решения
Организаторы придумали шесть треков для участия, среди которых было две номинации за лучшее решение по kaggle-соревнованиям на датасетах Газпром Нефти и компании РобоМед, было также просто по кейсу от Газпром Нефти и Центра Речевых Технологий, еще команды могли представить свой проект в сфере ИИ, и последнее — если решение в каком-то из kaggle-соревнований не набрало лучший скор, можно было придумать, как его монетизировать и победить таким образом в номинации за лучшее продуктовое решение с использованием предоставленного датасета.
Как я уже упомянула, в этом хакатоне от Академического Университета приняли участие сразу две команды. Наша команда взялась сразу за оба kaggle-трека, а наши одногруппники решали один из них, от РобоМеда.
РобоМед предложил участникам по полу, возрасту, диагнозу и анамнезу (жалобы пациента) решить задачу по прогнозированию оттока клиентов. Некоторое время наша команда держалась первой на лидерборде из пятнадцати команд, но потом одногруппники нас обогнали.
Если вдаваться в технические детали, то сложнее всего было работать с анамнезом. Не учитывать его совсем было нельзя, потому что в остальных признаках было много пропусков и мнение пациента, которое как раз и описывает анамнез, необходимо учитывать. Особенно, при предсказании того, вернется пациент в клинику или нет.
Проблемы возникали в основном из-за свободной формы заполнения анамнеза. Например, было много опечаток, с которыми мы боролись регулярными выражениями. Далее исправленная строчка проходила через стемминг (можно думать об этом как о приведении к начальной форме каждого слова). Полученная строка векторизовалась с помощью TF-IDF или Bag-of-words. Но, например, мы не сделали такую киллер-фичу как длина строки. Наши одногруппники до этого додумались и она оказалась достаточно важной. Кроме того, анализировали и окраску анамнеза (положительная/отрицательная), и категорию риска болезни в диагнозе.
В качестве моделей для предсказания использовались деревья (CatBoost и LightGBM) и метод ближайших соседей. А также блендинг, то есть усреднение результатов предсказания нескольких моделей.
Про задачу на данных Газпром Нефти я, к сожалению, не расскажу, потому что ей занималась другая часть команды.
Представление результатов
К концу соревнования мы так и не вышли на первое место по точности предсказаний, поэтому за несколько часов до презентаций нужно было срочно решать, как представить результаты в контексте бизнес-модели. И в этом снова очень помогли менторы.
Зачастую, когда есть четко сформулированная задача, даже не надо задумываться, где и как результат твоей работы будет использоваться. Более того, мне, как человеку далекому от бизнеса, сходу и не придумать, как вообще можно монетизировать полученный алгоритм.
Понятно, что в итоге хочется использовать знания о том, что клиент уйдет для предотвращения этого. Поэтому мы решили, что постараемся выделить причины, по которым клиент может не захотеть вернуться. Внезапно, самой популярной причиной оттока стало то, что клиента просто вылечили. Такие выводы мы делали, когда болезнь считалась не хронической. Выделив еще несколько таких кластеров мы снова пошли к экспертам, чтобы узнать, что с такой информацией гипотетический стартап мог бы делать дальше.
Из интересных моментов было еще то, что мы даже посчитали, сколько денег могла бы сэкономить компания с помощью такого алгоритма, и это точно было для меня новым опытом.
Получившиеся слайды, кстати, можно посмотреть здесь: Robomed, ГПН, презентация одногруппников, а сами презентации с хакатона тут.
Послевкусие
Сейчас хочется упомянуть про небольшой минус, чтобы потом закончить на позитивной ноте. Это еда, почему-то на хакатонах традиционно проблемы с такой базовой вещью. Видимо, предполагается, что на пустой желудок думается лучше. Да, был кофепоинт, печеньки и даже энергетики, но вкусных обедов и завтраков не из запотевших контейнеров не хватало.
Зато на площадке были классные капсулы для сна. Лично мне в ней было не уснуть, потому что из-за формы капсулы нельзя повернуться, но выглядело неплохо и просто полежать там 15 минут под легкую музыку было приятно.
Еще из приятных мелочей на хакатоне были вполне комфортные места для работы и мерч в виде стикеров и футболок. А после на память осталась куча фоточек, потому что почти все время на площадке были фотографы. И даже два обзорных видео: от организаторов и от Газпром Нефти.
Заключение
Кажется, я еще ни разу не упомянула, кто организовывал хакатон, и очень зря. Этим занимались ребята из Sci.Guide, за что им большое спасибо. Мы классно провели время и для Петербурга такой уровень хакатона это определенно то, на что стоит равняться. В общем, хотим еще!
Пост написан совместно с Rebryk.