Дмитрий Ефимов

Продолжаем рубрику ЖЗЛ, сегодня интервью с самым сильным российским кэгловцем последних лет, который живёт и работает в ОАЭ — Дмитрием Ефимовым. Он единственный россиянин, который непрерывно присутствует в топе уже 4 года подряд и выигрывал мастер-турнир по анализу данных), завоевал на Кэгле 4 бронзы, 4 серебра и 1 золото! Это эксклюзивный материал, ведь больше интервью с Дмитрием нигде нет;)

dmitry_efimov_2

 Где учились?

МГУ имени М.В. Ломоносова, механико-математический факультет.

Почему поступили именно туда?

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

В каких, на Ваш взгляд, учебных заведениях в России готовят лучших специалистов по Data Science?

Из моего опыта это МГУ, МФТИ и СПбГУ. Кроме того, Школа Анализа Данных Яндекса в последнее время предлагает отличную, на мой взгляд, программу по Data Science. Однако я считаю, что прежде чем изучать Data Science необходимо приобрести фундаментальные знания по математике и программированию.

Какие были любимые и нелюбимые предметы, преподаватели?

Самыми любимыми предметами были предметы, связанные с компьютерами, например, мне очень понравился курс по программированию на Java (к сожалению, не помню имя преподавателя). Из математических курсов могу выделить курс математического анализа (профессор В.И. Гаврилов) — это был один из самых продуманных курсов с великолепным преподавателем. Вспоминается курс по дискретной математике (профессор О.Б. Лупанов), преподаватель смог показать нам красоту этой дисциплины. Также мне очень понравился курс по философии (преподаватель Катречко), благодаря этому курсу я очень полюбил философию.

Каких предметов явно не хватало?

Не хватало курсов по математическим основам алгоритмов.

Что бы Вы изменили в учебном процессе?

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

Чему посвящена Ваша научная деятельность?

В процессе обучения и после окончания университета я специализировался на комплексном и функциональном анализе (этому посвящена и моя кандидатская диссертация). Около четырех лет назад я переключился на более прикладные вещи: у меня есть некоторые исследования по биоинформатике, в настоящий момент я придумываю новые методы для отбора признаков в машинном обучении (например, использую анализ чувствительности Соболя).

Как Вы дополнительно образовываетесь в анализе данных? Что можете порекомендовать новичкам?

Сейчас, когда появился интернет, самое главное — это желание получать новые знания. Количество ресурсов просто огромно, начиная от YouTube и Coursera, заканчивая различными специализированными сайтами по машинному обучению. Новичкам я бы посоветовал начать с фундаментальных книг и лекций по машинному обучению, например, лекции Andrew Ng на YouTube дают очень хорошее представление о том, что такое машинное обучение. Из русскоязычных ресурсов лекции Воронцова — пример прекрасного изложения основных фактов методов в машинном обучении.

Как Вы впервые познакомились с анализом данных / машинным обучением?

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

Где работаете? Как там оказались? Чем занимаетесь на работе?

American University of Sharjah в ОАЭ, Department of Mathematics and Statistics. Оказался здесь совершенно случайно, я сотрудничал с одним коллегой здесь и он рассказал о вакансии в этом университете.

Учите ли Вы сами кого-то анализу данных?

С этого года я начал читать курс по машинному обучению для магистров-математиков.

Какими языками программирования и технологиями владеете? Что максимально полезно для анализа данных?
  • Python,
  • R,
  • Java Script.

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

Как узнали о платформе Kaggle? Расскажите о первых соревнованиях.

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

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

Любимых соревнований очень много, мне нравится так называемый database mining. Он заключается в том, что берется большая база данных с огромным количеством таблиц и на основании этих данных нужно предсказать какую-нибудь информацию. Примером такого соревнования является недавнее Cervical Cancer Screening от Genentech, там задача заключалась в том, чтобы обнаружить пациенток, которым не сделали определенный медицинский тест. Из нелюбимых — соревнования на распознавание образов в изображениях, и вообще любые соревнование, где все признаки — однообразные.

Какие задачи для Вас удобные, а какие неудобные?

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

Что бы Вы изменили в правилах платформы Kaggle?

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

На каких платформах ещё выступали, можете ли сравнить разные платформы?

Только на Kaggle.

Какие научные статьи по DS произвели на Вас максимальное впечатление в последнее время?

Мне понравилась статья, опубликованная в 2010 году в JMLR:

Читаете ли Вы блоги по DS, персональные страницы представителей DS-сообщества?

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

Есть ли у Вас свой фирменный стиль при решении задач?

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

Есть ли он у Ваших конкурентов в соревнованиях?

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

Какие «чужие решения» Вам наиболее запомнились?

Мне очень нравятся решения Tim Salimans. Он специалист в вероятностных методах. Я думаю, одним из самых красивых было его решение для Observing Dark Worlds, где он построил модель используя так называемый Bayesian inference.

Что главное для победы на Kaggle?

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

Что главное для быстрого получения эффективного решения?

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

Какие известные алгоритмы Вы никогда не использовали на практике?
  • Алгоритмы, основанные на Bayesian inference,
  • EM алгоритм,
  • генетические алгоритмы.
Можете назвать какие-то приёмы, которые существенно улучшают качество решений задач машинного обучения?

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

Поддерживаете ли Вы связи со специалистами по анализу данных из России?

Да, я периодически общаюсь с ребятами из России на Kaggle, с организаторами ML тренировок в Москве.

Если будет проведён чемпионат мира по анализу данных, то какие шансы у сборной России?

Думаю, что очень большие, однако как и в любых соревнованиях первое место включает в себя элемент случайности. Однако уверен, что с вероятностью 90%
Россия войдет в ТОП-3.

Хотели бы Вы за неё выступить?

Конечно.

Насколько для Вас важен рейтинг на платформе Kaggle?

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

Будете ли Вы стараться его улучшить в ближайшее время?

Если будет время, то обязательно.

Насколько для Вас важны призовые в соревновании?

Для меня важнее занять призовое место, но, конечно, призовые — это приятное дополнение 🙂

Какие у вас увлечения, что делаете в свободное время?

Мое увлечение совпадает с работой — это машинное обучение, поэтому все свободное время я посвящаю этому.

Какие книги читаете (например, несколько последних), какую музыку слушаете? Какой любимый художественный фильм?

Из художественных недавно прочитал Нил Стивенсон “Криптономикон”, очень много читаю научной литературы. Музыка нравится разная, в зависимости от настроения. В основном, русский шансон (Розенбаум, Ваенга, Круг), русский рок (Земфира, Наутилус). Из фильмов очень люблю Крестный Отец 1 и 2, Гаттака, Однажды в Америке; из русских очень нравится фильм Классик.

Какие планы на будущее?

Планы — развиваться дальше в машинном обучении. Например, недавно начал изучать библиотеку d3js на Java Script для визуализации данных. Вообще, рассматриваю два направления для развития: искать новые алгоритмы для отбора признаков и стать экспертом в визуализации больших данных.

Реклама

5 thoughts on “Дмитрий Ефимов

  1. Здравствуйте, спасибо за интервью!
    Хотелось бы задать вопрос Дмитрию:

    «Какие алгоритмы классификации, судя по Вашему опыту, в каких ситуациях лучше работают?».

  2. Здравствуйте, Юрий,

    Это очень сложный вопрос, зависит от того, что нужно классифицировать. Обычно лучше всего работают комбинации нескольких алгоритмов, так называемые, ансамбли. На настоящий момент одним из самых эффективных является xgboost — это ансамбль маленьких деревьев решений. Для распознавания изображений и видео самыми эффективными сейчас являются convolutional neural network (еще можно поискать по названию deep learning). Для рекомендательных систем есть очень хороший алгоритм, который называется factorization machine. Еще очень важен размер данных, многие алгоритмы (например, SVM) сложно применять на больших данных.

  3. Дмитрий, добрый день!

    Спасибо за ответ! Честно говоря, это широко известные факты.
    Может быть, Вы обнаруживали закономерности типа того что
    «SVM хорошо работает с однородными признаками» или «лесам и
    градиентному бустингу над ними мешает большо число неинформативных признаков».
    Или «kNN очень здорово работает в большинстве задач, если грамотно метрику подбирать».

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

  4. Очень сложно ответить на общий вопрос не широко известными фактами 🙂 По поводу категориальных признаков, я обычно использую два подхода:
    1) Просто создаю бинарные признаки (так называемые, dummies).
    2) Кодирую категориальные признаки по какому-нибудь критерию. Например, по частоте появления уровней или еще один способ: посчитать среднее значение целевой переменной по каждому уровню (likelihood features).

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

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

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

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s