Советы сеньоров: как прокачать знания junior Data Scientist
В рубрике «Советы сеньоров» опытные специалисты делятся практическими советами с джуниорами — общие лайфхаки по обучению, какие книги и ресурсы читать, какие навыки осваивать и многое другое. В этом выпуске говорим о Data Scientists.
Богдан Павлишенко, Data Scientist у SoftServe
Канд. фіз.-мат. наук, доцент факультету електроніки та комп’ютерних технологій ЛНУ ім. І. Франка
Область Data Science є дуже широкою, її важко відразу охопити на високому рівні. Тому для початку важливо вибрати один із напрямків цієї сфери знань. Найкраще вибрати той напрям, який ближчий до поточних завдань, що вирішуються у вашій компанії.
Початківець і досвідчений Data Scientist часто майже не відрізняються у розмовах та дискусіях про Data Science. Інколи початківець виглядає ефектніше, жонглюючи термінами та поняттями. Основна відмінність між початківцем та досвідченим фахівцем визначається саме досвідом, який проявляється у деталях реалізації тих чи інших алгоритмів та підходів. Замовникам інколи важко визначити реальний кваліфікаційний рівень фахівця, тому важливі об’єктивні показники його кваліфікації.
Поділ на сеньорів та джуніорів є умовним. Такі звання надають керівники поточних проектів, де працює фахівець, і часто буває, що інших об’єктивних підстав для таких звань немає. Data Science здебільшого належить до наукової області, тому одними із об’єктивних критеріїв кваліфікації є публікації у фахових наукових виданнях, наукові ступені, виступи на конференціях, презентації власних кейсів та підходів в області аналізу даних, рейтинги на відповідних змаганнях з аналізу даних.
Досвід у сфері Data Science приходить не в процесі теоретичних роздумів, а в першу чергу в процесі розв’язку та реалізації складних багаторівневих проектів, пов’язаних із аналізом даних. Data Scientist повинен поєднувати у собі як розуміння методів та алгоритмів, так і вміння самостійно реалізовувати всі свої задуми програмними засобами, хоча б у вигляді прототипу, що працює на реальних обсягах даних.
Декілька слів про змагання у сфері Data Science. Однією із найпопулярніших платформ таких змагань є сайт kaggle.com. Відомі світові компанії пропонують свої завдання з аналізу даних, прогнозної аналітики, розпізнавання образів. У більшості змагань є призи для переможців. Однак більшість учасників бере участь, у першу чергу, щоб ознайомитись із передовими підходами в аналізі даних, а також отримати високі місця у таблицях лідерів за результатами змагань, щоб підкреслити свій високий кваліфікаційний рівень. У одному із таких змагань (Grupo Bimbo Inventory Demand) команда, учасником якої я був, отримала перше місце (із нашим розв’язком можна ознайомитись тут).
Усім Data Scientists я рекомендую брати участь у таких змаганнях. Це суттєво підвищує майстерність та кваліфікацію в області аналізу даних. Деякі Data Scientists скептично ставляться до участі у таких змаганнях, мотивуючи це тим, що вони, серйозні спеціалісти, займаються складними та важливими проектами і не мають часу на олімпіадні задачки. Також дехто підкреслює, що рішення на таких змаганнях не підходять для практичної реалізації, оскільки на змаганнях боротьба йде за малі частки точності, і на практиці нібито це неможливо використати. На мою думку, це не так. На таких змаганнях Data Scientist вчиться працювати з реальними даними, вивчає та тестує нові підходи до аналізу та прогнозування. Отриманий високий результат свідчить про високу майстерність учасника. Хочу сказати, що такі змагання вимагають великої віддачі. Вони значною мірою поглинають розумові ресурси, однак також суттєво піднімають кваліфікаційний рівень.
Щодо програмних засобів, я рекомендую використовувати мови R та Python. Мова R має експертний рівень, в першу чергу, за рахунок великої кількості доступних аналітичних пакетів, які можна підключити до аналізу. Мова Python, на мою думку, має певні переваги в реалізації продуктів та їх інтеграції із існуючими прикладними системами. На мові R зручно працювати у середовищі R-Studio, а на Python — у середовищі Jupyter Notebook. Для роботи з Python зручно інсталювати збірку пакетів Anaconda, яка включає у себе основні пакети для аналізу даних та прогнозної аналітики. Якщо ви плануєте працювати з нейронними мережами, то необхідно мати потужні графічні карти, які потрібні для тренування нейронних мереж. Однак для навчальних цілей на початковому етапі достатньо ноутбука середнього класу. Для складіших задач можна використовувати хмарні ресурси, наприклад, Amazon AWS.
Артем Чернодуб, Chief Scientist в Clikque Technology
Более 10 лет опыта работы с алгоритмами машинного обучения, распознавания изображений и нейронных сетей. Кандидат технических наук, преподаватель в Украинском католическом университете, член программного комитета нескольких научных конференций IEEE
Самое главное, что можно посоветовать желающему получить знания и навыки в области машинного обучения / Data Science / AI — это попасть в правильное окружение, способствующее развитию. Нужно найти единомышленников, с которыми можно обсудить текущие вопросы и желательно грамотного наставника. После этого вопросы, какие конкретно книги нужно читать и какие обучающие онлайн-курсы нужно проходить, можно считать второстепенными и техническими. Вы как-то автоматически будете это узнавать по ходу движения.
Вариантов вхождения может быть несколько. Во-первых, можно устроиться на младшую позицию DS/ML в большую IT-компанию, которая занимается AI, например, Grammarly, Ring, ELEKS. Это очень хороший вариант для развития не только потому, что можно делать «earning & learning», но и для получения знаний и навыков, как в реальной жизни алгоритмы AI работают, тестируются и деплоятся.
Во-вторых, можно попробовать академический вариант: поступить в магистратуру или аспирантуру хорошего университета, лучше зарубежного. Если вы в настоящее время еще студент и хорошо учились на математической специальности, то это вполне можно попробовать. Могу порекомендовать немецкую программу академического обмена DAAD. Из наших вузов советую обратить внимание на магистерскую программу Data Science от Украинского католического университета, к которой я тоже имею небольшое отношение.
В-третьих, можно участвовать в AI-митапах, конференциях, хакатонах и бесплатных курсах, анонсы которых регулярно размещаются в том числе и на DOU. Среди больших конференций я бы выделил Data Science Lab в Одессе и AI Ukraine в Харькове, которые проходят каждый год. В Киеве также есть очень энергичное и бесплатное движение Ukrainian Data Science Club. Среди курсов для начинающих я бы выделил бесплатные курсы от ARVI Lab, которые уже прошли, и бесплатные курсы от Genesis, которые еще пройдут. Кроме того, в последнее время проводятся хакатоны по теме AI, усилиями в том числе Hackathon Expert Group. В фейсбуке есть уже многочисленная группа Ukrainian Artificial Intelligence Community.
В общем, варианты есть. Найдите своих «собратьев по разуму» и пробуйте делать что-нибудь интересное, практическое (бесплатный рецепт базовой системы распознавания: взять немного нейросетей, порезать кубиками с ребром 1 см, бросить в кипящую соду и обучать до готовности). Не стесняйтесь гуглить, читать пейперы и экспериментировать — ваши усилия обязательно окупятся новыми знаниями!
Сергей Шельпук, Head of Data Science Office в ELEKS
Беседуя с кандидатами, мы обычно говорим, что есть два пути карьеры, связанных с анализом данных: условный Research&Development и условный Implementation&Consulting.
В R&D вы будете работать с наиболее новыми технологиями и state of the art моделями, но 95% вашей работы пойдут «в стол» и никогда не выйдут в мир. В I&C непосредственно моделирование будет занимать у вас, быть может, 20% времени, и большинство моделей, с которыми вы будете работать, будут известны и хорошо изучены. Но результаты вашей работы люди будут использовать в своей повседневной жизни.
Естественно, это деление очень условно, это всегда градиент, но оно дает общее представление о стилях работы и возможность выбрать на этом градиенте точку для себя.
Если вы целитесь на R&D, вам стоит обратить внимание на технологические навыки. Определяющим для вас будет знание деталей последних моделей, опыт их имплементации и идеи возможных улучшений, а также знакомство с теоретической частью и наборами данных.
Если вы целитесь на I&C, важным будет понимание работы бизнеса, функций компании и экономических показателей. Вам нужно будет уметь общаться с бизнес-людьми, понимать их и формулировать проблемы в абстракциях моделей анализа данных. Знать в общих чертах архитектуру информационных систем, технологии Big Data и уметь писать production-ready компоненты.
Валентин Кропов, Engineering Director в SoftServe
Основатель GeekSpeaks.Club и Kyiv Big Data Community, 17 лет опыта в IT, 7 лет — в области Big Data
Я проработал несколько лет руководителем направления Big Data в SoftServe, поучился у самых именитых архитекторов Калифорнии в компании Cloudera, основал наибольшее сообщество Big Data в Восточной Европе, поучаствовал как инструктор и ментор в двух школах больших данных от компании Киевстар, провел десятки докладов и воркшопов на тему Data Science и Big Data и, наконец, основал школу GeekSpeaks.club. Одним из основных моих занятий последние несколько лет было обучение и менторство инженеров в области Big Data и Data Science.
Ниже я приведу несколько основных советов, которые пригодятся юным и не совсем еще окрепшим умам молодых Data Science инженеров.
Жертвуйте теорией ради практики
Выбирая онлайн или офлайн курс обучения, обращайте внимание на количество практики, ее должно быть не менее 50%, иначе вы теряете свое время. Теория усваивается только частично и достаточно быстро забывается.
Прочитав статью, посетив митап или лекцию, посмотрев вебинар, попробуйте повторить то же самое. Мир Data Science ориентирован на быстрое прототипирование. Поэтому если пропускать все услышанное и увиденное через практический, пусть даже минимальный опыт, это позволит существенно лучше запоминать информацию и применять полученные знания в реальной работе.
Data Science, в отличие от многих других областей, не гарантирует 100% результата, поэтому негативный результат — это тоже результат. Важно научиться минимизировать цикл: идея — прототип — результат — тест — выводы. Такой практически ориентированный подход также позволит вам создать библиотеку собственных небольших прототипов, которые отлично можно использовать в решении реальных проблем.
Конкурентоспособность: научитесь решать проблему целиком
В США я наблюдаю тенденцию переучиваться на Data Science инженеров. Действительно, имея математическую и техническую базу, многие способные инженеры могут освоить начальные навыки.
В этом году я и еще трое моих коллег выступали лекторами в Kyivstar Big Data School, куда было отобрано около 20 человек из 700. Это значительно больше, чем в прошлом году. Масштаб конкуренции впечатляет.
Так чем же вы будете отличаться от других Data Science инженеров?
Одни из наилучших специалистов в области Data Science, которых я знаю, способны создавать полный стек прототипа: от структуры базы данных до модели и даже системы отображения данных. Они понимают, как устроен UX и что будет важно для конечных пользователей. Кроме того, лучшие инженеры еще и отлично владеют несколькими предметными областями. Именно такая универсальность и отличает обычного Data Science инженера от высококлассного.
«Золотая» предметная область
Квинтэссенцией всех технологий в конечном итоге станет тот самый пресловутый AI — универсальный искусственный интеллект, оперирующий всеми доступными человечеству данными для принятия кардинально более правильных и значительно более быстрых решений, чем на это способен человек.
Конечно же, взять и сразу написать полноценный AI не выйдет. Он, скорее всего, образуется в результате объединения десятков и сотен различных технологий и решений. Поэтому основной совет в выборе индустрии применения Data Science знаний — это задавать себе вопрос: а каким образом и насколько работа в этой области приблизит человечество к созданию AI, какую проблему позволит решить.
Решая ежедневные задачи обработки данных в медицине, продажах, маркетинге, телекоммуникациях, юриспруденции, не переставайте задавать себе эти универсальные вопросы. Это поможет вам двигаться в наиболее правильном направлении.
Оставайтесь голодными
Огонь, вода и медные трубы — достаточно старая концепция испытания человека на прочность. Я бы хотел посоветовать тем ребятам, которые из голодных «джуниоров» превратятся однажды в сеньоров, не успокаиваться на достигнутом и максимально открыто потреблять новую информацию, подходы, советы и не переставать учиться.
Области Data Science и Big Data, пожалуй, больше всего подвержены изменениям — еженедельно появляется минимум один новый продукт, решение или подход в этой области. Невозможно за всем уследить, но и остановка в развитии, обучении и открытии для себя новых предметных и технических областей будет означать неминуемое отставание и потерю конкурентоспособности.
Александр Кондуфоров, Head of Data Science Department в AltexSoft
4 года опыта в Machine Learning / Data Science. До этого 8 лет опыта в разработке ПО и архитектуре
Data Science — относительно молодая специальность, которая образовалась на стыке программной инженерии, математики и аналитики данных и еще не до конца сформировалась в наши дни. Работа, которую выполняют люди в роли Data Scientist в разных компаниях, может радикально отличаться: быть более аналитической или инженерной, использовать структурированные или неструктурированные данные, заключаться в использовании существующих алгоритмов или же создании новых и толкании границ state-of-the-art. В зависимости от рода бизнеса или продукта, вы можете копаться в данных пользователей, обучать нейросети распознавать объекты на дороге или лица на фотографиях, работать с ДНК и результатами медицинских исследований, анализировать и предсказывать спрос на товары или даже пытаться найти бозон Хиггса. Вариативность задач настолько велика, что, к сожалению, здесь нет какого-то универсального рецепта, какой именно инструментарий и алгоритмы изучать, но я постараюсь дать какие-то общие советы.
Во-первых, Data Science — это всё-таки так или иначе про математику. Алгоритмы и подходы базируются в том или ином виде на дифференциальном и интегральном исчислении, матстатистике, линейной алгебре и дискретной математике. Нельзя сказать, что без хорошего знания этих областей вы не сможете обучать свои нейросети, но в какой-то момент вам придётся углубиться в теорию и вы можете надолго там зависнуть над формулами. Если вы хотите подтянуть математику, есть довольно много онлайн-курсов на Coursera, Udacity, edX и других ресурсах, а также всегда можно обратиться за персональным обучением в ближайший университет.
Второй базовый инструмент в рабочей сумке Data Scientist’а — это язык программирования. Если вы занимаетесь исключительно анализом данных и построением несложных моделей, то вам может хватить и какого-нибудь визуального инструмента, но большинству специалистов всё-таки понадобится знание языка или даже нескольких. И здесь возникает вопрос: какие языки изучать? Как минимум вам понадобится R или Python для быстрого анализа данных и моделирования, как максимум — С++, Java, C# или любой другой язык общего назначения для внедрения вашей предсказательной модели или алгоритма в продукт. Хотя иногда внедрением занимаются программисты, а Data Scientist занимается только моделированием, ваши способности по имплементации алгоритма в готовое решение (даже в виде простого Python веб-сервиса) могут сильно добавить вам очков в компании. Что касается извечного спора «R или Python?», лично я бы рекомендовал изучать Python. R очень хорош для статистического анализа данных, препроцессинга и визуализаций, но последнее время начал отставать в вопросах «тяжелого» машинного обучения, особенно если речь заходит о работе нейронными сетями, не говоря уже про его плохую готовность к production.
Третий очень важный кусочек пазла — это статистический анализ данных и машинное обучение. Это тот фундамент, который вам 100% пригодится в работе в том или ином виде. Чем лучше вы будете знать достоинства и недостатки разных алгоритмов, моделей и подходов, тем быстрее вы будете достигать нужного результата, не тратя время на тупиковые пути. Вариантов изучать анализ данных и машинное обучение очень много, я бы посоветовал вам обратить внимание на всё те же онлайн-курсы и книги. Если же вам хочется личного общения, могу порекомендовать курсы Lviv IT School, Master Code и, конечно, магистерскую программу УКУ.
Если говорить об общении с единомышленниками, то отдельным пунктом надо отметить конференции и митапы по AI/DS тематике. В Украине уже сформировалось довольно много региональных групп и ежегодных конференций. Боюсь кого-то забыть, но навскидку можно обратить внимание на конференции EECVC, AI Ukraine, Data Science Lab Odessa, AI & Big Data Lviv, Data Fest Kyiv, Data Science UA, AI Rush, DS трек Lviv IT Arena и многие другие. Более-менее полный список мероприятий можно найти на DOU Календарь по тегам AI и Data Science. Если же вы хотите посетить академическую конференцию, то смотрите в сторону международных NIPS и ICML.
Еще один важный пункт — визуализация данных и вообще коммуникация результатов исследования другим людям. Иногда это могут быть ваши клиенты, иногда — руководство компании или другие специалисты. В любом случае эти навыки очень помогут вам в разных аспектах работы, начиная от анализа данных и заканчивая подготовкой отчета по результатам работы.
Но самое главное — это, конечно, практика. Как известно, теория без практики — мертва, а практика без теории — слепа. Бессмысленно читать книги, проходить курсы или ездить на конференции, если вы не делаете домашние задания, не пробуете свои силы на Kaggle или не выполняете реальные задачи на работе или в вашем пет-проекте. Мой самый главный совет — это постоянно практиковаться!
Однако это была лишь основа основ и было бы неправильно не сказать о других областях знаний, с которыми вы можете столкнуться уже с первых дней работы:
- Если вам посчастливилось работать со сложными неструктурированными данными, например, текстами, звуками или изображениями (видео), то вам придется сделать дополнительный шаг в сторону и углубиться в Natural Language Processing, Digital Signal Processing и Computer Vision. Для этих типов данных и задач, связанных с ними, существует большой дополнительный список алгоритмов и подходов.
- Если вы занимаетесь программированием интеллектуальных агентов и роботов, играющих на бирже программ, либо же пытаетесь научить компьютер играть в игры — вас ждет изучение еще одной непростой области — Reinforcement Learning.
- Пожалуй, отдельным пунктом стоит вынести Deep Neural Networks, которые развиваются сейчас семимильными шагами. Существует несколько популярных фреймворков, и хотя бы один из них придётся изучать: TensorFlow, Caffe, Torch/PyTorch.
- И, наконец, если у вас большие данные, вам придется научиться работать со Spark и его библиотеками типа MlLib, GraphX, а также инструментами для работы с потоковыми данными и распределенными базами данных.
Как видите, Data Science — это достаточно большая область знаний, и мало кто из специалистов может похвастаться, что он знает все достаточно хорошо. Но есть и хорошие новости: обычно все-таки существует некоторая специализация, и вам нужно разбираться лишь с теми вещами, с которыми вы сталкиваетесь на практике :)
Подписывайтесь на наш Telegram-канал для джуниоров, чтобы не пропустить интересные вакансии, стажировки, курсы, статьи.