Как один Кагглер получил высшие оценки в нескольких задачах, связанных с Covid.

Сегодня мы беседуем с Дэниелом, чьи записные книжки принесли ему высшие оценки в испытаниях Kaggle CORD-19. Kaggle провел несколько испытаний, которые работали с набором данных Kaggle CORD-19, и Дэниел трижды занимал 1-е место, в том числе с огромным отрывом в испытании TREC-COVID. (У него была оценка 0,9, 2-е место в целом - 0,75, а 2-е место на Kaggle - 0,6.)

Давай познакомимся с Дэниелом!

Дэниел, расскажи немного о себе.

Даниэль: Я Даниэль Вольфрам, аспирант по математике и ассистент по анализу данных в Технологическом институте Карлсруэ (KIT) в Германии. Мои исследовательские интересы включают вероятностное прогнозирование, причинный вывод и машинное обучение.

В рамках задачи Kaggle CORD-19 я разработал discovid.ai - поисковую систему для литературы о COVID-19. Прямо сейчас я работаю над немецким центром прогнозов COVID-19 и пишу магистерскую диссертацию о создании и оценке ансамблей прогнозов для подсчета смертей от COVID-19.

Что ж, неудивительно, что вы получили высшие оценки в CORD-19 Challenge! Это очень актуально!

Даниэль: Конечно. Я также помощник студента, где я работал над несколькими проектами в области науки о данных в течение последних 3 лет и имел возможность работать с реальными данными из разных компаний в самых разных областях - от прогнозирования отходов на лесопилке до анализа недостатков. в процессе гальванизации поверхностей и проверки эффективности маркетинговой кампании.

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

Как ты начал соревноваться на Kaggle?

Во время учебы в бакалавриате я присоединился к университетской группе, где мы изучили основы науки о данных - в основном работая над проектами Kaggle, такими как Титаник или Instacart. Именно так я получил работу помощником студента, потому что встретил там одного из моих нынешних коллег.

Что побудило вас принять участие в этом конкретном соревновании?

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

Более того, когда стартовали соревнования, в Германии, где я живу, вылазили случаи заболевания Covid. Здесь были приняты первые защитные меры по выравниванию кривой - все рестораны, магазины (кроме супермаркетов и аптек) и места отдыха были закрыты. Мой университет закрыли, и все экзамены отменили. Еще более шокирующими были цифры из Италии и других стран. Это была очень пугающая и неуверенная атмосфера, поэтому этот вызов на самом деле был способом вернуть себе контроль, столкнувшись лицом к лицу с кризисом, просто используя свои навыки как можно лучше. Я знал, что это может не иметь большого влияния, но меня поддерживала мысль о том, что если хотя бы один медицинский исследователь использует мою модель и наткнется на что-то полезное, мои усилия уже того стоят.

Давайте перейдем к техническим вопросам

Какой предварительной обработкой и разработкой функций вы занимались?

Чтобы нормализовать документы, я удалил стоп-слова и выполнил токенизацию и лемматизацию. Этот последний шаг был здесь довольно критичным, поскольку набор данных CORD-19 содержит высокотехнологичные статьи с научным языком, которые не могут быть успешно обработаны стандартными пакетами. Было важно использовать scispacy, который представляет собой пакет, который специализируется на обработке биомедицинских, научных или клинических текстов и, таким образом, может также нормализовать технические термины (такие как химические элементы, названия лекарств и т. Д.).

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

Все подробности можно найти в моем блокноте предварительной обработки: https://www.kaggle.com/danielwolffram/cord-19-create-dataframe.

Чтобы еще больше пополнить данные, я также искал в каждой статье идентификаторы клинических испытаний, чтобы связать документ с Платформой реестра международных клинических испытаний ВОЗ (ICTRP), для чего потребовалось вручную создать несколько регулярных выражений - подробности можно найти в https: //www.kaggle.com/danielwolffram/cord-19-match-clinical-trials .

Какие методы машинного обучения вы использовали?

Я использовал скрытое распределение Дирихле (LDA), которое представляет собой неконтролируемую тематическую модель, которая изучает скрытые семантические отношения внутри корпуса. Первоначально это использовалось для поиска статей по каждому заданию задачи CORD-19. Но по мере того, как мы перенесли подход на наш веб-сайт, мы внедрили более распространенную поисковую систему с Whoosh, которая позволяет выполнять классический поиск по ключевым словам или более сложные логические запросы.

На discovid.ai для поиска связанных статей теперь используется тематическая модель - идея состоит в том, что каждая статья состоит из набора основных тем, и если мы найдем статьи со схожим набором тем или пересекающимися по темам, они могут быть интересны для читатель и может вызвать новые идеи.

Здесь вы можете изучить 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 Infcció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