Сессия Ask Me Anything с гроссмейстером Kaggle Владимиром Игловиковым

Здравствуйте, меня зовут Владимир.

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

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

Я благодарен @Lasteg, который предложил идею этой AMA (сессии Спроси меня что-нибудь) и собрал вопросы на Reddit, Kaggle и science.d3.ru (на русском языке). Есть много вопросов. Я постараюсь ответить, что смогу, но не смогу обратиться ко всем из них в этом сообщении в блоге. Если есть вопрос, который вы задали, но он не рассматривается в следующем тексте, просто напишите его в комментариях, и я постараюсь ответить.

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

В: Живете ли вы за пределами данных?

Да :)

Люблю альпинизм и скалолазание. Если вы занимаетесь скалолазанием по утрам в Mission Cliffs, то можете поздороваться, когда в следующий раз увидите меня.

Еще я люблю танцевать с партнером, в частности, Blues Fusion. Mission Fusion в Сан-Франциско и танцевальные площадки South Bay Fusion — это то место, куда я обычно хожу.

Для меня также важны путешествия. Этой весной я был в Беларуси, Марокко и Иордании. В сентябре я провел три недели в Финляндии, Германии и Австрии. И, конечно же, Burning Man 2018 стал лучшим событием года :)

В: Рост / вес?

6 футов, 185 фунтов

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

  • Максимальный жим лежа 225 фунтов (102 кг)
  • Максимальный присед 315 фунтов (142 кг)
  • Максимальная становая тяга 405 фунтов (183 кг)

В: Как вы можете сделать карьеру и работать полный рабочий день?

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

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

В какой-то момент я был готов, сменил работу и присоединился к TrueAccord на должность, где я много занимался традиционным машинным обучением. Но было бы неразумно останавливать мою работу над Kaggle. Так что это было традиционное машинное обучение днем ​​и глубокое обучение по вечерам и в выходные. Баланс между работой и личной жизнью был еще хуже, но я многому научился и в качестве приятного дополнения к приобретенным навыкам стал Kaggle Master. Все эти усилия окупились, когда я смог устроиться на работу в Level5 в Lyft, где много внимания уделяется применению методов глубокого обучения к проблеме автономного вождения.

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

В: Каковы ваши повседневные дела, которые помогают вам работать продуктивно? Как вы структурируете свой день?

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

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

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

В будний день я просыпаюсь в 6 утра и хожу в зал для скалолазания. Это помогает мне оставаться в форме и будит меня перед наступающим днем. После этого еду на работу. Наш инженерный центр автономного вождения находится в Пало-Альто, что меня немного огорчает. Я предпочитаю жить в городе. Вождение — это весело, а ездить на работу — нет. Чтобы провести время в дороге более продуктивно, слушаю аудиокниги в машине. Я бы не сказал, что могу сосредоточиться на книге во время поездки на работу, но есть много литературы, в основном мягкой или бизнес-ориентированной, которая неплохо подходит для этой пары во время вождения.

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

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

Полагаю, я не смогу закончить этот вопрос без конкретных трюков :)

  • Я предпочитаю Ubuntu + i3 MacBook, субъективно + 10% к моей производительности.
  • Мое использование записных книжек Jupyter минимально. Только для EDA и визуализаций. Почти весь код, который я пишу, я пишу в PyCharm, проверяю с помощью flake8 и фиксирую на GitHub. Многие проблемы машинного обучения очень похожи. Инвестирование в лучшую кодовую базу, попытки не повторяться и размышления о том, как лучше всего провести рефакторинг, могут замедлить прогресс вначале, но ускорить вас позже.
  • Я пишу модульные тесты везде, где это возможно. Все говорят о важности модульных тестов в Data Science, но не все тратят время на их написание. Алекс Паринов написал красивый документ, в котором рассказывается, как перейти от простого к сложному. Вы можете попробовать следовать ему и добавить больше тестов в свои конвейеры Academia или Kaggle ML. Я предполагаю, что вы уже делаете это на работе.
  • В настоящий момент я экспериментирую с инструментом управления версиями моделей DVC, который, я надеюсь, даст результаты, которые мои конвейеры машинного обучения будут генерировать еще более воспроизводимыми, а код — более пригодным для повторного использования.
  • Я стараюсь свести к минимуму использование мыши. Иногда это означает, что мне нужно написать горячие клавиши на бумаге, положить ее перед собой и попытаться использовать их как можно чаще.
  • Я не пользуюсь социальными сетями.
  • Я проверяю почту всего несколько раз в день.
  • Каждое утро я составляю список задач, которые постараюсь выполнить сегодня, и стараюсь работать над их закрытием. Я использую для этого Trello.
  • Я стараюсь не слишком разбивать свой день на части. Многие задачи требуют концентрации, и постоянное переключение внимания бесполезно.
См. также:  Путешествие демона iOS

Все эти идеи довольно стандартные, но я не могу вспомнить ни одного волшебного трюка в кармане. :)

В: Как вы следите за текущими исследованиями в этой области?

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

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

Я также хожу на конференции, такие как NIPS, CVPR и другие. Представленные там результаты служат хорошим показателем того, что мы можем и чего не можем на данном этапе исследования.

В: Давным-давно (например, 4–5 лет назад), имея докторскую степень. в области, не связанной с машинным обучением (физика, механги и т. д.), была очень выгодна для работодателей. В настоящее время я чувствую, что ситуация изменилась, и если сравнить кандидатов наук из области, не связанной с машинным обучением, и степени магистра наук из области машинного обучения, похоже, что индустрия ИТ / машинного обучения предпочтет последнюю для роли инженеров / разработчиков машинного обучения, но я не уверен в исследовательских ролях. Поскольку у вас также есть докторская степень. получил степень бакалавра физики, а затем перешел в ML, думаю, вы знаете ответ на этот вопрос из своего текущего опыта.

Что вы думаете о том, что у вас есть докторская степень, не имеющая степени магистра медицины? теперь, если кто-то хочет после этого перейти в индустрию машинного обучения? Поможет ли вам получить должность исследователя в компании? Поможет ли вообще найти работу в индустрии машинного обучения по сравнению с соответствующей степенью магистра наук?

Это сложный вопрос, я не знаю ответа, поэтому просто подумаю вслух.

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

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

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

Все это означает, что в настоящее время математика не является препятствием, и поэтому дополнительные знания, полученные на факультетах математики / физики / химии и других STEM, близки к бесполезным для решения большинства бизнес-задач, и именно поэтому многие выпускники эти ведомства чувствуют себя преданными. У них много специализированных знаний; у них есть докторские степени, они много лет проработали в академических кругах. Они не могут получить интересную высокооплачиваемую работу. В Интернете полно таких сообщений в блогах.

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

Но я верю, что это изменится. Не сейчас, но когда-нибудь в будущем.

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

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

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

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

Я помню, как однажды меня спросили, чем я занимаюсь над диссертацией? Я снимался в «Квантовом Монте-Карло» и сказал об этом интервьюеру. После этого я попытался объяснить, что это значит и зачем нам это нужно. Интервьюер посмотрел на меня и спросил: «И как этот метод может помочь нам повысить вовлеченность клиентов?»

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

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

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

См. также:  Git запустился ?

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

В: В чем, по вашему мнению, находятся сейчас интересные проблемы Data Science / ML? Я примерно на 50% закончил свои магистерские программы и не уверен, где в конвейере машинного обучения я хочу работать. Я разговаривал с кем-то, кто утверждал, что две лучшие области — это создание и масштабирование алгоритмов (в отличие от приложений DS / ML, которые могут быть более библиотечными). Что вы думаете об этом? / любые рекомендации относительно гибкости карьеры.

Я бы сказал, что интересные проблемы в DS / ML лежат далеко от того, что сегодня является мейнстримом. Основные проблемы переполнены. Применять машинное обучение к кредитному рейтингу, системам рекомендаций, розничной торговле и другим дисциплинам, где мы выяснили, как преобразовать данные в деньги, скучно. Но если вы примените DS / ML к нерешенным задачам в математике, физике, биологии, химии, истории, археологии, геологии или любой другой области, где люди не пытались применять ML так сильно, вы можете найти свою следующую Purple Cow.

По поводу выбора карьеры. В отличие от биологии или физики, навыки, которые вы изучаете в DS / ML, гораздо легче переносить из поля в поле. Конечно, разработка алгоритмов для торговли в каком-либо банке или хедж-фонде — это не то же самое, что работа с беспилотными автомобилями, но разница не такая уж и большая, и вы сможете довольно быстро овладеть необходимыми навыками, пока будете хорошо разбирается в основах.

В: Неужели 30 лет — слишком поздно для присоединения к сообществу машинного обучения с опытом работы, а не с математикой / CS? Или можно успеть на последний поезд? Если да, каковы, по вашему мнению, минимальные требования для этого?

Конечно, еще не поздно. 90% ML требует математических знаний на уровне первого курса технического университета, поэтому никаких сверхглубоких математических знаний не требуется. И наиболее широко используемые языки в DS — это python и R, которые являются высокоуровневыми, поэтому вы можете начать их использовать, не унывая в технических деталях.

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

Еще два примера, связанных с возрастом:

  • Гроссмейстер Kaggle Евгений Патеха начал свой путь в Data Science в возрасте сорока лет.
  • Гроссмейстер Kaggle Александр Ларко присоединился к Kaggle в возрасте пятидесяти пяти лет.

В: Считаете ли вы, что формальное фундаментальное образование в технической сфере необходимо для успеха в соревнованиях по Data Science и Kaggle? Есть ли в вашем опыте работы какие-либо противоположные примеры?

Полезно да. Существенный нет. В Kaggle есть много людей с отличными результатами, не имеющих фундаментального технического образования. Стереотипный пример — Микель Бобер-Иризар, который является гроссмейстером Kaggle, но все еще учится в средней школе.

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

Но опять же. Вы можете хорошо освоить Kaggle и без аттестата средней школы.

В: Как долго вы изучали Data Science / ML, чтобы достичь конкурентоспособного уровня в Kaggle?

Я решил переключиться на науку о данных в январе 2015 года. После этого я начал посещать онлайн-классы на Coursera. В конце февраля я узнал о Kaggle и зарегистрировался там. За два месяца я получил свою первую серебряную медаль.

В: Можно ли добиться высоких результатов на простом домашнем компьютере без облака?

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

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

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

  • Одна из причин, по которой я переключился с Keras на Pytorch, заключается в том, что DataLoader в PyTorch в то время был намного лучше.
  • Мы написали albumentations, потому что imgaug был слишком медленным, и мы получили 100% загрузку ЦП, в то время как графические процессоры были загружены не полностью.
  • Для ускорения ввода-вывода изображений jpeg с диска не следует использовать PIL, skimage и даже OpenCV, а ищите libjpeg -turbo или PyVips.

и т.п.

В: Есть ли какой-нибудь совет, который он может дать новичкам в области науки о данных, с чего начать с Kaggle? Лучший совет новичку, который присоединяется к своему первому соревнованию?

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

  1. Посмотрите несколько онлайн-классов, которые охватывают основы программирования на Python и машинного обучения.
  2. Выберите соревнование на Kaggle. Если вы можете написать конвейер end2end, который сопоставляет данные с отправкой, это прекрасно. Если вы новичок, это может быть сложно. В этом случае зайдите на форум и скопируйте и вставьте ядро, которым кто-то поделился.
  3. Запустите его на своем компьютере, создайте заявку и появитесь в таблице лидеров. На этом этапе, скорее всего, вы почувствуете боль операционной системы, драйверов, версий библиотек, проблем с вводом-выводом и т. Д. Важно как можно раньше начать к этому привыкать. Если вы понятия не имеете, что происходило в этом ядре, все в порядке.
  4. Настройте несколько параметров, делать это вслепую — нормально, переобучите свои модели, отправьте свои прогнозы. Надеюсь, некоторые из ваших модификаций поднимут вас в таблице лидеров. И не волнуйтесь, сотни людей вокруг вас делают то же самое. Они настраивают различные ручки, до которых могут дотянуться, не зная или интуитивно понимая, почему что-то происходит.
  5. Чтобы превзойти всех тех людей, которые слепо настраивают параметры, вам нужно начать развивать интуицию и получить фундаментальные знания о том, что может и что может не сработать, чтобы вы могли более разумно и эффективно исследовать фазовое пространство возможных подходов. На этом этапе вам нужно будет добавить к своим экспериментам учебу. Вам нужно будет учиться в двух направлениях. Первое — основы, занятия вроде mlcourse.ai, CS231n, чтение книг, изучение математики, статистики, как писать лучший код и т. Д. Как правило, это сложно заставить себя сделать это, но в долгосрочной перспективе , это критично. Во-вторых, вы увидите на форуме много новых терминов, связанных с проблемой, которую вы пытаетесь решить. Сосредоточьтесь на них. Постарайтесь использовать свое стремление стать лучше в таблице лидеров как дополнительную мотивацию для изучения нового. Но не выбирайте между изучением и экспериментированием с вашим конвейером — делайте и то, и другое одновременно. Машинное обучение — это прикладная дисциплина, и вы не хотите, чтобы ваши знания стали чисто книжными. Теория без практики глупа. Практика без теории слепа.
  6. После окончания соревнования, несмотря на все ваши усилия, скорее всего, вы увидите себя довольно низко в таблице лидеров. Это ожидаемо. Внимательно прочтите форум, прочтите решения, которыми поделились победители, постарайтесь понять, что вы могли бы сделать лучше. В следующий раз, когда вы увидите аналогичную проблему, ваша отправная точка будет намного выше.
  7. Повторите процесс на многих соревнованиях, и вы попадете на вершину. Что еще более важно, в вашем распоряжении будут хорошие конвейеры для решения многих задач и хорошо развитая интуиция в отношении того, как справляться с проблемами машинного обучения, с которыми вы сталкиваетесь на соревнованиях, на работе или в академических кругах.
См. также:  Классификация изображений Сравнительный тест моделей Core ML

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

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

В: Что вы думаете об утечках данных в Kaggle, например, в Santander, Airship prediction и Google Analytics? Этично ли использовать утечку данных в соревнованиях Kaggle?

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

В: Насколько полезны конкурсы Kaggle для бизнеса / работы в качестве дипломированного специалиста?

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

Но, опять же, недостаточно иметь навыки Kaggle, даже если они солидные. Многому можно научиться только в отрасли.

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

В: Насколько полезно участвовать в соревнованиях Kaggle после того, как вы станете гроссмейстером? Что побуждает вас заняться Kaggle, когда вы уже опытный специалист по данным?

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

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

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

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

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

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

Самый распространенный подход: какие-то друзья или сослуживцы увлеклись соревнованием, они говорят о нем, встречаются, обсуждают проблему, создают команду. Некоторые люди пытаются что-то сделать; другие заняты другими делами. Эта команда чего-то добивается, но обычно не так далеко.

Лучший подход, который подходит мне и другим участникам:

  1. Вы пишете конвейер или конвейеры рефакторинга, которыми поделились на форуме.
  2. Этот конвейер должен сопоставлять входные данные с отправкой в ​​надлежащем формате, а также генерировать оценку перекрестной проверки.
  3. Вы проверяете, что улучшения в вашей оценке перекрестной проверки коррелируют с улучшениями в таблице лидеров.
  4. Вы проводите исследовательский анализ данных, вы внимательно читаете форум, вы читаете статьи, книги, решения предыдущих конкурсов, которые похожи на то, что вы делаете. Вы работаете полностью самостоятельно.
  5. В какой-то момент, скажем, за 2–4 недели до конца, вы застрянете. Ни одна из идей не улучшит ваше положение. Вы все перепробовали. И вам нужен новый источник идей.
  6. В этот момент вы смотрите на таблицу лидеров вокруг себя и общаетесь с активными участниками, имеющими схожую репутацию.
  7. Прежде всего, чистое среднее значение ваших прогнозов даст вам небольшой, но важный импульс. Во-вторых, скорее всего, ваши подходы были немного другими, и просто поделиться списком идей, которые были или не были опробованы, полезно. В-третьих, поскольку изначально соревнование проводилось отдельно для каждого человека, все вы просматривали данные, все вы писали свои конвейеры, все вы отдавали приоритет этому соревнованию по сравнению с другими видами деятельности, и все вы были мотивированы эффектами геймификации, которые таблица лидеров в реальном времени создается.

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

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

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

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

Артем Санакое, Александр Буслаев, Сергей Мушинский, Евгений Нижибицкий, Константин Лопухин, Алексей Носков, Артур Кузин, Руслан Байкулов, Павел Нестеров, Арсений Кравченко, Евгений Бабахин, Дмитрий Пранчук, Артур Фаттахов, Илья Кибардин, Лиам Дамвуд, Алексей Швец, Антон Добренкий, Селим Сефербеков, Александр Калинин, Александр Рахлин.

С большинством этих людей я познакомился через ODS.AI. ODS.AI — это меритократическое русскоязычное сообщество специалистов по анализу данных. Если вы говорите по-русски и хотите стать лучше в Kaggle, присоединиться к нему — хорошая идея.

20+ из 100 лучших в глобальном рейтинге Kaggle уже там!

Если вы не получили ответа на свой вопрос: смело пишите в комментариях, и я обещаю, что вы получите свой ответ.

До встречи на следующем соревновании Kaggle!

Понравилась статья? Поделиться с друзьями:
IT Шеф
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: