23 июл. 2020 г.
Как один каглер занял первые места в нескольких связанных с Covid соревнованиях.
Нажмите Enter или щелкните, чтобы просмотреть изображение в полном размере
Сегодня мы берем интервью у Даниэля, чьи блокноты принесли ему высшие баллы в соревнованиях CORD-19 на Kaggle. На Kaggle проходило несколько соревнований, работающих с набором данных Kaggle CORD-19, и Даниэль занял 1-е место три раза, в том числе с огромным отрывом в соревновании TREC-COVID. (Его результат составил 0,9, у занявшего 2-е место в общем зачете результат был 0,75, а у 2-го места на Kaggle — 0,6.)
Давайте познакомимся с Даниэлем!
Даниэль, расскажи немного о себе.
Даниэль: Я Даниэль Вольфрам, аспирант по математике и студент-ассистент по науке о данных в Технологическом институте Карлсруэ (KIT) в Германии. Мои научные интересы включают вероятностное прогнозирование, причинно-следственный вывод и машинное обучение.
Нажмите Enter или щелкните, чтобы просмотреть изображение в полном размере
В рамках соревнования Kaggle CORD-19 я разработал discovid.ai — поисковую систему по литературе о COVID-19. Прямо сейчас я работаю над немецким центром прогнозирования COVID-19 и пишу магистерскую диссертацию о создании и оценке ансамблей прогнозов для числа смертей от COVID-19.
Что ж, неудивительно, что вы заняли высшие баллы в соревновании CORD-19! Это весьма актуально!
Даниэль: Действительно. Я также являюсь студентом-ассистентом, где последние 3 года работал над несколькими проектами в области науки о данных и имел возможность работать с реальными данными от разных компаний в самых разных предметных областях — от прогнозирования отходов на лесопилке до анализа дефектов в процессе поверхностного цинкования и тестирования эффективности маркетинговой кампании.
За время работы студентом-ассистентом мы также консультировали компанию, которая работает с большим количеством текстовых данных — именно там я получил свой первый опыт в NLP и также столкнулся с идеей поиска похожих документов с помощью тематического моделирования. В то время наш клиент хотел придерживаться другого подхода, поэтому мне так и не довелось по-настоящему попробовать подход LDA, но он всегда оставался у меня в голове.
Как вы начали соревноваться на Kaggle?
Во время учебы в бакалавриате я вступил в университетскую группу, где мы самостоятельно изучали основы науки о данных — в основном работая над проектами Kaggle, такими как конкурс Titanic или Instacart. Так я и получил работу студента-ассистента, потому что встретил там одного из моих нынешних коллег.
Что заставило вас принять решение об участии в этом конкретном соревновании?
Один мой друг показал мне это соревнование, и я сразу же загорелся. Я вспомнил подход LDA и просто захотел его попробовать.
Кроме того, когда соревнование только началось, число случаев Covid росло в Германии, где я живу. Здесь были приняты первые защитные меры для сглаживания кривой — были закрыты все рестораны, магазины (кроме супермаркетов и аптек) и развлекательные заведения. Мой университет закрыли, а все экзамены отменили. Еще более шокирующими были цифры из Италии и других мест. Это была очень пугающая и неопределенная атмосфера, поэтому этот конкурс на самом деле стал способом вернуть контроль, встретив кризис лицом к лицу и просто используя свои навыки во благо. Я понимал, что это может не иметь самого большого влияния, но меня двигала вперед мысль о том, что если хотя бы один медицинский исследователь воспользуется моей моделью и натолкнется на что-то полезное, мои усилия уже того стоили.
Давайте перейдем к технической части
Какую предобработку и инженерию признаков вы сделали?
Для нормализации документов я удалил стоп-слова, выполнил токенизацию и лемматизацию. Последний шаг был довольно критичным, так как набор данных CORD-19 содержит высокотехничные статьи с научным языком, которые не могут быть успешно обработаны стандартными пакетами. Было важно использовать scispacy, который является пакетом, специализирующимся на обработке биомедицинских, научных или клинических текстов и, таким образом, может также нормализовать технические термины (например, химические элементы, названия лекарств и т. д.).
Для корректной работы тематической модели также было необходимо выполнить определение языка и удалить документы не на английском языке.
Все подробности можно найти в моем блокноте по предобработке: https://www.kaggle.com/danielwolffram/cord-19-create-dataframe.
Чтобы дополнительно обогатить данные, я также искал в каждой статье идентификаторы клинических испытаний, чтобы связать документ с WHO International Clinical Trials Registry Platform (ICTRP)Международной платформой ВОЗ по регистрации клинических исследований (ICTRP), что потребовало ручного создания нескольких регулярных выражений — подробности можно найти в https://www.kaggle.com/danielwolffram/cord-19-match-clinical-trials.
Нажмите Enter или щелкните, чтобы просмотреть изображение в полном размере
Какие методы машинного обучения вы использовали?
Я использовал латентное размещение Дирихле (LDA), которое представляет собой неконтролируемую тематическую модель, изучающую скрытые семантические связи внутри корпуса. Первоначально это использовалось для поиска релевантных статей для каждой задачи соревнования CORD-19. Но по мере переноса этого подхода на наш сайт мы внедрили более привычную поисковую систему с использованием Whoosh, которая позволяет выполнять классический поиск по ключевым словам или более сложные булевы запросы.
На сайте discovid.ai тематическая модель теперь используется для поиска связанных статей — идея заключается в том, что каждая статья состоит из набора базовых тем, и если мы находим статьи со схожей смесью тем или пересечением тем, они могут быть интересны читателю и послужить источником новых идей.
Нажмите Enter или щелкните, чтобы просмотреть изображение в полном размере
Нажмите Enter или щелкните, чтобы просмотреть изображение в полном размере
Here вы можете изучить 50 тем, которые наша модель обнаружила в корпусе — каждая тема представляет собой распределение по словам, и каждый документ затем можно рассматривать как смесь этих тем.
Какое у вас было самое важное озарение относительно данных?
Интересно, что до удаления из корпуса статей не на английском языке наша тематическая модель обнаружила следующие темы:
- Тема №46: der die und bei mit von eine ist werden zu für sind oder einer des den nicht das als nach zur auf durch auch ein
- Тема №40: de les des en une est dans du par un ou sont pour plus au que avec chez sur d’une qui cas être pas ces
- Тема №32: de en el los que se con las por un es para pacientes como más virus son tratamiento su infección puede ha casos enfermedad entre
- Тема №7: un che con sono nel alla più ha tra gli degli come rischio ed pazienti nella nei osteonecrosis ad essere stato studio salute anche have
Как видите, нашлись темы для немецкого, французского, испанского и итальянского языков. Для меня это было очень обнадеживающе, так как это демонстрирует, насколько мощным является LDA в изучении скрытых структур и что он действительно изучает что-то осмысленное.
Удивили ли вас какие-либо из ваших выводов?
Когда люди впервые опробовали нашу поисковую систему, стало ясно, что они ищут лишь несколько ключевых слов — в отличие от задач на Kaggle, которые состояли из гораздо большего количества текста. Это было довольно большой проблемой, так как запросы были просто слишком короткими, чтобы выводить темы полезным образом. Именно тогда я решил внедрить более распространенную поисковую систему с Whoosh в качестве первоначального поиска (https://www.kaggle.com/danielwolffram/whoosh-search). Тематическая модель теперь используется только для поиска связанных статей, состоящих из похожих тем, что позволяет пользователям легко просматривать корпус и открывать для себя новые идеи.
Как вы провели время на этом соревновании?
Как это часто бывает, большая часть моих усилий ушла на подготовку и очистку данных. Особенно в начале происходило множество изменений в структуре данных, что требовало множества корректировок. Я также много читал на форуме и общался с людьми, имеющими медицинский бэкграунд, чтобы выявить потребности сообщества. Именно поэтому в качестве первого индикатора качества мы также извлекаем методологические ключевые слова и добавляем перекрестные ссылки на клинические исследования, упоминающиеся в статьях. Кроме того, я потратил немало времени на изучение и освоение новых вещей, таких как определение языка или создание кастомной поисковой системы с помощью Whoosh, чего я никогда раньше не делал.
Каково было время выполнения для обучения и предсказания вашего решения, принесшего победу?
Преобразование документов и обучение тематической модели занимают примерно сутки.
Работа в команде
Как образовалась ваша команда?
Я начинал в одиночку и создал несколько виджетов в блокноте Kaggle для удобного исследования набора данных CORD-19. Но благодаря хорошим отзывам и растущему интересу к моему подходу, я захотел сделать его более удобным для пользователя, чтобы им могли пользоваться и люди без технического бэкграунда. Тогда я связался с одним из своих коллег, который без колебаний согласился помочь мне и собрал небольшую команду для создания нашего сайта discovid.ai.
Как вы работали в команде?
Двое моих коллег работали над бэкендом и фронтендом, еще один заставил все это работать на сервере, а моя девушка разработала отличный дизайн и анимировала наше вводное видео.
Как участие в команде помогло вам добиться успеха?
Это определенно помогло мне создать более разностороннее решение, которое удобно для пользователя и доступно каждому.
Просто ради развлечения
Какая работа вашей мечты?
Меня очень привлекает наука о данных в медицинской сфере, потому что я хочу использовать свои аналитические навыки в значимом проекте, который помогает другим. Думаю, именно это помогало мне двигаться вперед на протяжении всего соревнования CORD-19: дело было вовсе не в победе, а в том, чтобы использовать свои сильные стороны во благо и внести свой вклад в эту глобальную кризисную ситуацию.
Мудрые слова
Что вы вынесли из этого соревнования?
Это был очень значимый для меня проект, и в процессе работы я познакомился со множеством интересных и вдохновляющих людей со всего мира. Было здорово видеть, как исследователи со всего земного шара объединили усилия в поисках ответов на вызовы этой глобальной пандемии, которая затрагивает каждого из нас по-своему и парадоксально объединяет нас всех.
У вас есть совет для тех, кто только начинает свой путь в науке о данных?
Просто начните! Я считаю, что важно получить практический опыт и научиться работать с различными типами данных, чтобы легко преобразовывать их в формат, с которым можно работать. Но как студент-математик я также должен сказать, что не стоит пренебрегать фундаментальными основами вроде теории вероятностей и статистики, ведь наука о данных — это все-таки наука, поэтому важно развивать интуицию в отношении неопределенности и ограничений различных подходов.
Кроме того, я считаю, что всегда важно сначала четко понять проблему, которую вы пытаетесь решить, прежде чем применять к ней самые сложные модели машинного обучения.
Вы можете найти победную работу Дэниела для CORD-19 здесь: https://www.kaggle.com/danielwolffram/discovid-ai-a-search-and-recommendation-engine










