У нас появился новый номер 1 в нашей таблице лидеров - конкурент, который неожиданно присоединился к платформе всего два года назад. Шубин Дай, более известный своими друзьями как Bestfitting on Kaggle или Bingo, специалист по анализу данных и технический менеджер, живущий в Чанше, Китай. В настоящее время он возглавляет основанную им компанию, которая предоставляет программные решения для банков. Вне работы и за пределами Каггла Дай заядлый велосипедист и любит проводить время на природе. Вот что лучше всего:

Не могли бы вы рассказать нам немного о себе и своем прошлом?

Я специализировался в области информатики и имею более чем 10-летний опыт разработки программного обеспечения. По работе я в настоящее время возглавляю команду, которая предоставляет решения для обработки и анализа данных для банков.

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

Как ты начал с соревнований Kaggle?

Как упоминалось ранее, я читал много книг и статей о машинном обучении и глубоком обучении, но мне всегда было трудно применять алгоритмы, которые я изучил, на небольших наборах данных, которые легко доступны. Так что я нашел Kaggle отличной платформой со всевозможными интересными наборами данных, ядрами и отличными обсуждениями. Мне не терпелось попробовать что-нибудь, и я впервые принял участие в конкурсе «Прогнозирование деловой ценности Red Hat».

Каков ваш первый план действий при работе над новым соревнованием?

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

Как выглядит ваш цикл итераций?

  1. Внимательно прочтите обзор и описание данных конкурса.
  2. Найдите похожие соревнования Kaggle. Как относительно новичок, я собрал и провел базовый анализ всех соревнований Kaggle.
  3. Читайте решения подобных конкурсов.
  4. Прочтите статьи, чтобы убедиться, что я не упущу никаких успехов в этой области.
  5. Проанализируйте данные и создайте стабильное резюме.
  6. Предварительная обработка данных, разработка функций, обучение моделей.
  7. Анализ результатов, такой как распределение прогнозов, анализ ошибок, сложные примеры.
  8. Разработайте модели или спроектируйте новую модель на основе анализа.
  9. Создавайте модели на основе анализа данных и результатов, чтобы добавить разнообразия или решить сложные выборки.
  10. При необходимости вернитесь к предыдущему шагу.

Какие ваши любимые алгоритмы машинного обучения?

Я выбираю алгоритмы от случая к случаю, но я предпочитаю использовать простые алгоритмы, такие как регрессия гребня при объединении, и мне всегда нравится начинать с resnet-50 или разрабатывать аналогичную структуру в соревнованиях по глубокому обучению.

Какие ваши любимые библиотеки машинного обучения?

Мне очень нравится питорч в соревнованиях по компьютерному зрению. Я использую тензорный поток или керас в НЛП или соревнованиях временных рядов. Я использую seaborn и продукты семейства scipy при проведении анализа. И scikit-learn и XGB - всегда хорошие инструменты.

Как вы относитесь к гипер-настройке параметров?

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

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

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

Каков ваш подход к твердой перекрестной проверке / окончательному выбору представления и LB-соответствию?

Хорошее резюме - половина успеха. Я не перейду к следующему шагу, если не смогу найти хороший способ оценить мою модель.

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

В некоторых соревнованиях временных рядов я откладываю данные на определенный период времени в качестве набора для проверки.

Я часто выбираю свои окончательные предложения консервативным образом, я всегда выбираю средневзвешенный ансамбль моих безопасных моделей и выбираю относительно рискованный (на мой взгляд, чем больше параметров, тем больше рисков). Но я никогда не выбирал материал, который не могу объяснить, даже с высокими публичными оценками LB.

В двух словах, что побеждает в соревнованиях?

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

Какое ваше любимое соревнование Kaggle и почему?

Мои любимые соревнования по охране природы и медицине. Я чувствую, что должен и, возможно, могу что-то сделать, чтобы сделать нашу жизнь и нашу планету лучше.

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

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

Насколько важна для вас экспертиза в предметной области при решении задач науки о данных?

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

  1. Kaggle тщательно подготовил данные о соревнованиях, и они справедливы для всех.
  2. Очень сложно выиграть соревнование, просто используя зрелые методы, особенно в соревнованиях по глубокому обучению, поэтому нам нужны более творческие решения;
  3. Сами данные более важны, хотя нам может потребоваться прочитать некоторые связанные с ними материалы.

Но есть исключения. Например, в конкурсе «Планета Амазонка» я черпал идеи из своего личного опыта в тропических лесах, но этот опыт технически нельзя назвать экспертизой в предметной области.

Что вы считаете своим самым креативным трюком / находкой / подходом?

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

Как вы в настоящее время используете науку о данных на работе и помогает ли в этом соревнование на Kaggle?

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

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

Каково ваше мнение о компромиссе между высокой сложностью модели и временем выполнения обучения / тестирования?

Вот мои мнения:

  1. Время обучения / тестирования важно только тогда, когда это действительно проблема. Когда точность наиболее важна, сложность модели не должна вызывать особого беспокойства. Когда данные обучения, полученные в результате месяцев напряженной работы, мы должны в полной мере использовать их.
  2. Сейчас очень сложно выиграть конкурс, используя только ансамбль слабых моделей. Если вы хотите быть номером 1, вам часто нужны очень хорошие одиночные модели. Когда я хотел обеспечить себе первое место в одиночном соревновании, я часто заставлял себя создавать разные модели, которые могли попасть в топ-10 на LB, иногда даже в топ-3. Организаторы могут выбрать любую из них.
  3. По моему собственному опыту, я могу разрабатывать модели на соревнованиях, чтобы исследовать верхнее ограничение этой проблемы, и не так уж сложно выбрать простую модель, чтобы сделать ее выполнимой в реальной ситуации. Я всегда изо всех сил стараюсь предоставить организаторам простой вариант и обсудить с ними голосование победителя. Я обнаружил, что некоторые организаторы даже используют наши решения и идеи для решения других проблем, с которыми они сталкиваются.
  4. Мы можем обнаружить, что в Kaggle есть много механизмов для обеспечения производительности, когда важна среда обучения / тестирования: соревнования ядра, ограничение размера команды, добавление дополнительных данных, которые не вычисляются при подсчете очков и т. Д. Я уверен, что Kaggle также улучшится. правила в соответствии с целью задания.

Как ты стал лучше выступать на соревнованиях Kaggle?

Интересные соревнования и отличные конкуренты на Kaggle делают меня лучше.

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

Есть ли какие-либо недавние или текущие исследования в области машинного обучения, которые вас вдохновляют?

Я надеюсь, что смогу принять участие в соревновании по глубокому обучению с подкреплением на Kaggle в этом году.

Вы очень быстро поднялись в рейтинге и заняли первое место (всего за 15 месяцев). Как ты сделал это?

Прежде всего, №1 - это показатель того, как много я узнал на Kaggle и насколько мне повезло.

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

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

Примерно через полгода я получил свой первый приз и некоторую уверенность. Я думал, что через год смогу стать гроссмейстером. В конкурсе Planet Amazon я пытался получить золотую медаль, поэтому для меня стало сюрпризом, когда я узнал, что нахожусь на первом месте.

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

Я думаю, что получил пользу от платформы Kaggle, я многому научился у других, и система рангов Kaggle также играет важную роль в моем прогрессе. Мне также повезло, потому что я никогда не ожидал, что смогу получить 6 призов подряд, мои цели во многих соревнованиях были в топ-10 или в 1%. Не думаю, что смогу повторить это путешествие снова.

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

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

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

Некоторые из самых запоминающихся идей пришли из Data Science Bowl 2017: pytorch, трехмерная сегментация медицинских изображений, решения из прогнозирования временных рядов веб-трафика, которые используют модель последовательности из НЛП для решения проблемы временных рядов, и прекрасные решения от Тома. (Https://www.Kaggle.com/tvdwiele) и Хенг (https://www.Kaggle.com/hengck23).

Первоначально опубликовано на http://blog.kaggle.com 7 мая 2018 г.