Первая золотая медаль для молодежи: как я стал номером один на Kaggle

Kaggle

от направлениянаука о данных

автор:Andrew Lukyanenko Сборник "Сердце машины" Сердце Машины Редакционный отдел
Выиграть золотую медаль в соревновании Kaggle уже сложно, а стать гроссмейстером Kernel еще сложнее. Недавно Андрей Лукьяненко, специалист по данным, окончивший МГУ, выиграл золотую медаль Kaggle на соревнованиях и занял первое место в Kernel Grandmaster. Эта статья — его ментальное путешествие.

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

Тем не менее, не кажется невозможным получить золотую медаль Kaggle или даже первое место во всей сети. Специалист по данным из России написал о своем опыте для ознакомления читателей.Ниже приводится исходное содержание:Хотя он только что выиграл свою первую золотую медаль на соревнованиях, Лукьяненко уже №1 на «Кернеле».В прошлом мне удавалось получать серебряные медали на некоторых соревнованиях, иногда благодаря удаче, а иногда благодаря упорному труду. Но, несмотря на мое время, я смог получить только бронзовые медали (или вообще ни одной) на многих соревнованиях. Обзор конкурса

Когда я увидел, что в конце мая будет запущен новый конкурс, то сразу им заинтересовался. Это специализированное соревнование по предсказанию взаимодействий между атомами в молекуле.Хорошо известно, что в методах ядерного магнитного резонанса (ЯМР) используются принципы, аналогичные МРТ, для понимания структуры и динамики белков и молекул. Исследователи со всего мира проводят ЯМР-эксперименты, чтобы больше узнать о структуре и динамике молекул в таких областях, как наука об окружающей среде, фармацевтика и материаловедение. В этом конкурсе участники пытаются предсказать магнитное взаимодействие (скалярную константу связи) между двумя атомами в молекуле. Современные современные методы квантовой механики могут вычислять эти константы связи и требуют в качестве входных данных только трехмерную молекулярную структуру. Но эти расчеты ресурсоемки, поэтому используются не так часто. Таким образом, если бы методы машинного обучения могли предсказывать эти значения, они действительно могли бы помочь химикам-медикам получить представление о молекулярной структуре быстрее и с меньшими затратами. начало соревнований

Со своей стороны, я обычно пишу ядра EDA для новых соревнований Kaggle, поэтому этот раз не стал исключением. В процессе я нашел это соревнование очень интересным и особенным. У нас есть информация о молекуле и атомах внутри нее, поэтому мы можем использовать график для характеристики молекулы. Обычный подход к обработке табличных данных в соревнованиях Kaggle заключается в использовании большого количества функций и построении моделей повышения градиента.В моей первой попытке я также использовал LGB, но знал, что есть лучшие способы сделать это с помощью графиков. Этот вызов увлек меня, поэтому я решил серьезно заняться соревнованием.У меня не было никаких знаний в соответствующей области (последний раз, когда я смотрел на химические формулы, был в школе), поэтому я решил полностью использовать методы машинного обучения: много инженерии признаков, создание нестандартных мета-признаков, и Т. Д. Как всегда, я публикую свою работу на Kernels. Как видно из изображения ниже, они довольно популярны.На этот раз метод довольно хорошо зарекомендовал себя в таблице лидеров, и я смог остаться в серебряном рейтинге. Кроме того, важно следить за некоторыми из последних версий ядра Kaggle и просмотров форумов. Мне действительно помогли форумы и Kaggle Kernels. От начала конкурса и до конца я просмотрел все сообщения ядра и форума, которые содержали много полезной информации, которую нельзя пропустить. Даже некоторые из менее популярных ядер содержат интересные новые функции. Сообщения на форуме будут содержать мнения других людей, что также поможет улучшить результаты соревнований. Сформировать командуПочти с самого начала я понял, что знание предметной области даст команде большое преимущество, поэтому я искал всю информацию, подобную этой. Конечно, я следил за несколькими активными экспертами, читал их статьи и создавал ядра. На днях я получил электронное письмо от Бориса, который является экспертом в этой области и считает, что наши навыки дополняют друг друга. Обычно мне нравится играть в одиночку, но на этот раз командная работа кажется лучшим вариантом. Так и оказалось.

Метод слиянияПоначалу наши методы значительно расходились. Я использую методы разработки признаков, а Борис работает над созданием дескрипторов. Через некоторое время мы обнаружили, что моя модель лучше работала с некоторыми типами пар атомов, а его модель — с другими, потому что мы обучали разные модели для разных типов. К счастью, к нашей команде присоединился Psilogram. Его модель быстро превзошла нашу. Еще один участник, Боян, помог нам улучшить результаты. Все они отличные специалисты по машинному обучению.

Графическая нейронная сеть

В то время мы уже видели потенциал нейронных сетей в этом конкурсе: известный гуру kaggle Хенг опубликовал пример модели MPNN.Через некоторое время я даже смог запустить эту модель на своем ПК, но результаты были не так хороши, как у модели LGB. Но в любом случае, теперь моя команда знает, что если мы хотим подняться выше, нам нужно использовать эти нейронные сети. В нашей команде был Кристоф, и он смог очень быстро построить новую нейронную сеть. Поэтому мы прекратили обучение LGB, потому что LGB намного уступали нейронным сетям, построенным Кристофом.

Эпоха нейронных сетей

С тех пор моя роль в команде — поддержка. Я провел несколько экспериментов с нашей нейронной сетью: пробовал разные гиперпараметры и разные архитектуры, вносил небольшие коррективы в расписание обучения и потери и т. д. Иногда я использую EDA на основе наших прогнозов, чтобы найти хорошие и плохие примеры, а затем использую эту информацию для дальнейшего улучшения модели. Поиск новых путей — один из моих главных вкладов

  • Я прочитал много статей об архитектуре нейронных сетей, включая EAGCN, 3DGNN и т. д.;

  • Я пробовал разные функции потерь, такие как Huber. Я даже нашел статью о функциях фокальных потерь для регрессии, но ее невозможно реализовать;

  • Я, конечно, пробовал и новые популярные оптимизаторы вроде RAdam, Ranger и т.п., но простой Adam в этом соревновании работал лучше.

  • Но, в конце концов, именно Кристоф реализовал архитектуру, которая меня очень впечатлила и вдохновила.

аппаратное обеспечение Хорошее оборудование очень важно для обучения этих нейронных сетей. Мы используем много оборудования, но мы также часто используем ядра kaggle: вы можете обучить модель на 4 ядрах kaggle с P100 за то же время, поэтому мы можем получить золото даже без дополнительного оборудования.

Результаты и выводы

Наше окончательное решение заняло восьмое место и завоевало золотую медаль.Стоит отметить, что наша команда может получить лучшую оценку, чем -3 Imae (средняя логарифмическая ошибка абсолютного значения всех типов). В этой теме ведущий заявил, что достижение -3 было удивительным достижением: https://www.kaggle.com/c/champs-scalar-coupling/discussion/98375#569312 На самом деле, мы это сделали!

Суммировать

Я многому научился на этом конкурсе, и в целом для успеха на Kaggle нам нужно:
  • Просмотрите ядро ​​и форумы, которые предоставляют много полезной информации;

  • Будьте готовы неоднократно терпеть неудачу. Когда вы пытаетесь найти способ улучшить свой результат, большинство из них не сработает, но не отчаивайтесь;

  • Постоянно ищет новые идеи, новые документы и основные статьи. Вы никогда не знаете, откуда появится следующий магический инструмент;

  • Выстроить механизм проверки эффекта внутри команды, чтобы результаты работы были более интуитивными;

  • Сильная команда состоит из многих людей с разными специальностями, и мы должны охватывать разные области;

  • Соревнования Kaggle очень сложные, и, конечно же, мы можем получить массу удовольствия от процесса :)

Мне так повезло работать с этими замечательными людьми, спасибо им!

Исходная ссылка: https://towardsdatascience.com/a-story-of-my-first-gold-medal-in-one-kaggle-competition-things-done-and-lessons-learned-c269d9c233d1

Книга Текст составлен для сердца машины,Для перепечатки, пожалуйста, свяжитесь с этим официальным аккаунтом для авторизации .✄------------------------------------------------Присоединяйтесь к сердцу машины (штатный репортер/стажер): hr@jiqizhixin.com Чтобы внести свой вклад или получить покрытие:content@jiqizhixin.com Реклама и деловое сотрудничество: bd@jiqizhixin.co