Data Science skills: попасть в топ-5 на Kaggle

Команда R&D инженера Олега Паничева заняла 5-е место на Kaggle в конкурсе по прогнозированию эпилептических приступов по измеренному сигналу электроэнцефалограммы. В интервью Олег рассказал о своем участии в соревновании и работе в области Data Science.

Олег выступал на Kaggle в команде с Ириной Иваненко

— Олег, расскажи, пожалуйста, о своей работе и профессиональных интересах. Чем ты занимаешься?

Я работаю в отделе R&D компании Ciklum, занимаюсь цифровой обработкой и анализом биомедицинских сигналов, а также машинным обучением. Много работал с реализацией алгоритмов анализа сигналов под различные платформы от носимых устройств до профессионального медицинского оборудования.

Также последние три года работаю над диссертацией на тему «Прогнозирование эпилептических приступов на основе анализа электроэнцефалограмм».

— Почему решил принять участие в соревновании Kaggle?

Я узнал о конкурсе от своей подруги Иры Иваненко — она и предложила сформировать команду. Нам обоим было очень интересно узнать, как мы себя можем показать в соревновании такого уровня. К тому же, для меня была вызовом возможность опробовать знания, полученные при работе над диссертацией, на новых данных.

— Расскажи, пожалуйста, о самой платформе. Что такое Kaggle? Как там все работает?

Kaggle — это платформа для людей, которые интересуются анализом данных, машинным обучением и смежными направлениями. Самый популярный раздел Kaggle — это соревнования. Там различные компании и/или исследовательские организации размещают свои задачи и объявляют вознаграждение за топовые решения. Эти задачи решаются методами машинного обучения.

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

Еще на Kaggle есть форум и кернелы — там можно узнать, какие трюки используют профессионалы, и посмотреть код. Как по мне, так Kaggle сейчас является неотъемлемой частью при изучении машинного обучения.

— В чем суть конкурса, в котором ты принял участие?

Соревнование заключалось в том, что нужно было по измеренному сигналу электроэнцефалограммы (ЭЭГ) человека, больного эпилепсией, построить алгоритм для прогнозирования эпилептического приступа. Организаторами и спонсорами соревнования являются Мельбурнский университет, MathWorks и многие другие. В конкурсе принимали участие 478 команд со всего мира.

Всем участникам была доступна база сигналов ЭЭГ от троих пациентов, которая содержала 10-минутные записи двух типов — задолго до приступа и за час перед приступом. Необходимо было найти/придумать и рассчитать такие параметры из этих сигналов, которые бы отличались для этих двух классов сигналов. Затем использовались методы машинного обучения для классификации.

Вычислительные алгоритмы должны надежно идентифицировать периоды повышенной вероятности возникновения эпилептического приступа

— Как проходила работа над решением задачи? Сколько это заняло времени?

Всего соревнование длилось три месяца, но мы взялись за работу фактически за месяц до окончания. И это был довольно таки напряженный месяц с регулярными бессонными ночами. Зато очень интересный и познавательный.

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

Приходилось очень много читать — научных статей, форумов, описаний предыдущих решений и кода. Много методов было опробовано, но в итоге так и не использовано в финальном решении из-за низких или недостаточно высоких результатов.

Если кому-то интересно узнать больше технических деталей о нашем решении, то вот тут есть описание проекта, а тут можно посмотреть код.

— А по каким критериям организаторы оценивали решения?

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

Команда Олега и Ирины — на 5-м месте

— Что будет дальше? Какая дальнейшая судьба разработок?

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

Импланты для предотвращения эпилептических приступов

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

— Как оцениваешь свой опыт участия в конкурсе? Что вынес для себя?

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

— Что можешь сказать о Data Science в целом? Насколько эта область развита в Украине?

В Украине это направление сейчас очень активно набирает обороты. В принципе, как и во всем мире, но, как всегда, с некоторым запаздыванием. Уже есть довольно большое сообщество и открываются вакансии в различных компаниях. В университетах появляются специальности, полностью посвященные Data Science и машинному обучению (например, в КПИ и УКУ). При поддержке образовательного проекта DataminDS был организован Ukrainian Data Science Сlub.

У нас в R&D лабе в Ciklum есть люди, которые занимались или продолжают заниматься детектированием болезни Альцгеймера на ранних стадиях, создании алгоритмов для предварительной обработки и анализа данных секвенирования РНК, совместным анализом сигналов ЭЭГ и ЭКГ и многим другим.

Команда Ciklum R&D на хакатоне Garage48 IoT & Machine Learning 2016

К сожалению, у нас до сих пор распространено заблуждение, что человек, который занимается Data Science и машинным обучением, должен в первую очередь быть программистом. Тут стоит понимать разницу между Data Science инженером, который использует методы машинного обучения, статистического анализа и другие для построения систем анализа данных, и Machine Learning инженером, который занимается чаще имплементацией и оптимизацией таких систем. Разумеется, и тем, и другим без программирования никак не обойтись, но задачи все-таки у них немного отличаются.

Сейчас существует еще огромное количество задач, которые можно решить методами Data Science и машинного обучения, но к которым просто-напросто еще не подобрались. Именно поэтому, я думаю, уже в ближайшем будущем нас захлестнет волна новых компаний, продукт которых основывается или был получен с помощью Data Science и машинного обучения.

LinkedIn

11 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

если есть желание, могу расказать о своем недавнем пути к 4ому месту, 1ый соло:
www.kaggle.com/...ck-prediction/leaderboard

если кроме желания, есть список вопросов на которые хотели бы получить ответы или тем для раскрытия — еще лучше

Андрей, вопросы есть внизу. Но я могу расширить список :)

брааатюнь, на твои вопросы я отвечу в особом режиме

Режим зануды: это не ’data science’, это микс — математической статистики, численных методов и теории оптимизации.

It’s not a reductionism, it’s simultanagnosia.

Круто! Спасибо за статью и поздравления Олегу и Ирине!

Искусство заголовка или типичный пример, как заголовок ПОЛНОСТЬЮ прошел мимо основного текста :-D

* Ребята попали в топ-5 соревнования, а не всего Kaggle.
* В статье вообще не освещенно какие Data Science Skills нужны ни в работе которую ведет Олег, ни в соревновании в котором ребята участвовали.

Вот краткий вопросничек, который может пригодится все тем, что планирует брать интервью у победителя на Kaggle:
— Каким был формат данных: картинка, текст?
— Как препроцессил данные? Были ли ошибки в данных, дубликаты, пропуски? Как решал такие проблемы?
— Какие генерировал признаки? Судя по соревнованию, там во всю использовалась работа с Временными Рядами и признаков по ним может быть овер-двофига.
— Как отбирал самые важные признаки, повлияло ли это на иготовую оценку?
— Какие модели использовал для Временных Рядов: ARIMA, SARIMA или обычный XGBoost, но с массой нагенерированных признаков?
— Как составлял кросс-валидацию?
— Капитанский вопрос: Использовал ли Нейронные сети? Скорее всего ответ будет — использовали, но не помогло :-D
— Ну и на последок: пробовали использовать ансамбли? Помогло? Если да, то на каких моделях, признаках итд строили ансамбль?

Отдельно я бы спросил ребят, что из DS/ML они используют в работе?
— Какие модели, алгоритмы?
— Если используют математику, статистику или даже может физику, то какие методы?
— Как добывают данные? Насколько это трудно и официально разрешено в медицинских исследованиях связанных с DS?
— Какие подходы у них работают в проде? Или их задача на работе делать прототипы и думать про прод не важно?

Абсолютно правильный опросник, только не для DOU. А для специализированной статьи, на худой конец — технического блога. А вот с этим (местом виртуальной тусовки интересующихся темой), как раз и проблема.
Кстати — автору топика — поздравления с вполне достойным результатом.

Не для доу? А на доу техническое нельзя писать?

Я не сказал, что нельзя. Вполне можно. Но вот глубокого обсуждения ожидать — вряд ли стоит.

>


Вот краткий вопросничек, который может пригодится все тем, что планирует брать интервью у победителя на Kaggle:

В статье есть две ссылки — на описание решения и код. Которые отвечают на ваши вопросы.

Если кому-то интересно узнать больше технических деталей о нашем решении, то вот тут есть описание проекта, а тут можно посмотреть код.

Подписаться на комментарии