Полезные знания

Недавно на DataReview прошёл конкурс на лучшее предложение темы статьи, в котором автор блога даже победил, предложив тему «Самые полезные знания в Data Science». Предполагалось, что журналисты опросят видных специалистов по DS (которые ведут реальные прикладные разработки) и выяснят, какие знания им самим пригодились, чему они учат новичков и т.п. Вот что получилось у DataReview. Честно говоря, я немного разочарован небольшим объёмом материала и маленьким покрытием современных компаний. Поэтому пришлось провести свой опрос. Он проводился среди сотрудников разных компаний (специально исключил банки и операторов большой тройки — они и так у всех на слуху). Все опрошенные DS-аналитики реально работают с данными, большинство из них достаточно известны среди нашего узкого круга.

znanija

nehaev2resize

Антон Нехаев, аналитик ООО «АлгоМост»

Пригодилось умение программировать и осваивать новые технологии. Сейчас анализ данных популярен, постоянно появляется что-то новое (новые задачи, новые подходы к решению, конкретные алгоритмы и их реализации со своими особенностями). Во всём этом надо быстро разбираться: читать книги, статьи и мануалы. Что касается инструментов, чаще приходится работать с python + pandas + sklearn (и seaborn, plotly для визуализации), нужно иметь представление об особенностях параллельных вычислений в выбранной среде программирования. Для Deep Learning советую обратить внимание на фреймворки TensorFlow от Google (отлично подходит для новичков), mxnet от создателей знаменитого xgboost, NEON от NervanaSystems.

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

boksha2resize

Ксения Бокша, аналитик ООО «Интернет решения» (ozon.ru)

Самая большая сложность, с которой я столкнулась при переходе от академических университетских стен к жизненным рабочим реалиям, оказалась поиском баланса между полученным эффектом в задаче и трудозатратами, которые необходимы для достижения этого эффекта. Исследовательские задачи можно решать как два дня так и два года, но срок в два года наверняка не порадует начальство. На собеседованиях в наш отдел мы смотрим как кандидат структурирует задачу и оценивает трудозатраты каждого этапа и сравниваем со своим видением. В рабочем процессе мы довольно редко сталкиваемся с действительно сложными алгоритмами. Как правило в наших рекомендательных системах используются довольно простые модели, потому что они зачастую показывают лучшие результаты и их легче интерпретировать и «подкручивать». Поэтому важно очень хорошо знать какая математика скрывается за моделями, не лениться разобраться в них досконально, а не просто применить. Что касается инструментов, то большая часть нашей работы (порядка 90%) происходит в spark (python) и hive. Отсюда следует необходимость знать python, понимать парадигмы map-reduce, уметь писать sql-запросы. На мехмате я изучала только Си и это пригодилось исключительно для понимания общих принципов программирования.

trofimov2resize

Михаил Трофимов, исследователь в области машинного обучения Machine Learning Works

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

Неожиданно важным для меня оказались знания категории DevOps — умение сконфигурировать систему, поднять базу данных или развернуть поисковый движок, написать bash-скрипт, найти узкое место в системе. Эти навыки критичны для создания «живых» систем — ведь алгоритмы МО являются ядром, которое живет в сложном окружении, с которым нужно взаимодействовать. Однако, это скорее общая компьютерная грамотность, которой должен обладать любой специалист в сфере IT.

Знания, которые я бы посоветовал приобретать в первую очередь: это Python c его экосистемой (pandas+numpy+sklearn+matplotlib), знание устройства операционных систем и статистика/оптимизация. Python — потому что стандарт де-факто, остальное — потому что фундаментально. Инструменты меняются, идеи остаются.

ignatov@resize

Алексей Игнатов, Data Scientist IBM

В первую очередь, конечно, нужно знать базовые свойства и возможности основных алгоритмов машинного обучения. Это поможет сделать Ваши модели более точными, но дело не только в этом. Дело еще и в том, что при решении прикладных задач в какой-нибудь компании часто приходится сталкиваться с задачами в весьма странных постановках и с большим количеством ограничений на модели и технологии. И чтобы, несмотря на все эти сложности, помочь заказчику, нужно владеть полным арсеналом алгоритмов. Для того, чтобы понять основные подходы, очень хорошо подойдет курс ‘Машинное обучение’ от Константина Вячеславовича Воронцова. Также очень важно хорошо освоить один из инструментов для обработки данных и построения моделей, это может быть Python, R, Matlab или что-то еще. Умение быстро и безошибочно подготовить данные для анализа — это очень важно.

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

grishin2resize

Михаил Гришин, аналитик mail.ru

В качестве основных навыков, полезных в работе у нас, я бы выделил умение работать с неструктурированными данными, разбираться с их источниками, отстаивать свою точку зрения. С технической стороны, наиболее востребован python и его классические data science библиотеки, если более интересно работать с хранением/обработкой данных — то ответ, опять же, «классический» — Hadoop и Java. Думаю, что не будет открытием то, что в «продакшене» не используют сложные модели, поэтому базового знания алгоритмов машинного обучения в большинстве случаев достаточно. Простой алгоритм, применённый к хорошо подготовленным данным, на практике даёт результат лучший, чем сложная модель, использованная на «шумных» данных. В качестве важного умения стоит отметить умение разобраться в неизвестной области исследования, сделать обзор литературы и форумов/постов, почерпнуть оттуда не только алгоритмы, но и эвристики, зачастую скрытые «под массой» основного текста.

zimovnov2resize

Андрей Зимовнов, аналитик Yandex Data Factory

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

В первой компании, где я работал, не все интересующие данные собирались, они не хранились за достаточный период времени и их обработка была затруднена хранением в различных местах, плохо пригодных для анализа данных. Поначалу команда аналитиков работала с тем, что имела и как умела. Теперь я понимаю, что это было ошибкой, аналитик данных должен быть любопытным, он должен смотреть по сторонам и пробовать разные инструменты, которые появляются сегодня в огромном количестве. В итоге наша команда прошла долгий путь от локальных Python скриптов на файлах, через написание MapReduce Hadoop кода, к SQL подобным запросам на Spark из IPython notebook. Новые люди, которых мы набирали потом, очень быстро вливались в работу и приносили результат, потому что им не приходилось решать все эти проблемы первопроходцев. Может показаться, что это технические проблемы и аналитик тут не при чем, но ведь если аналитик не будет знать, что существует инструмент, который может повысить эффективность его работы в несколько раз, как он сможет попросить технических людей в компании его внедрить?

ostapets2resize

Андрей Остапец, старший аналитик Avito

Из знаний, которые были получены в университете, в первую очередь, пригождаются как теоретические, так и практические курсы по машинному обучению. Особенно важно хорошо освоить какой-нибудь стек технологий: например, связка python + ipython notebook + pandas будет хорошей идеей. Во вторую очередь, можно отметить знание SQL и опыт использования Git. По моему опыту, эти знания будут нужны в любой компании, а в университетах часто этим инструментам уделяются мало времени и приходится изучать их самому. В-третьих, отмечу общие знания об инструментах и базовых концепциях. Возможна ситуация, когда новый проект придется выполнять на какой-то незнакомой технологии. Выполнение проекта пойдет намного проще, если был хотя какой-то минимальный опыт работы с этой технологией, хотя бы на той же Coursera.

П.С. В комментариях желающие могут дать своё видение проблемы.

Реклама

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

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

Логотип WordPress.com

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

Фотография Twitter

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

Фотография Facebook

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

Google+ photo

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

Connecting to %s