company_banner

Заметки Дата Сайентиста: с чего начать и нужно ли оно?


    TL;DR это пост для вопросов/ответов про Data Science и о том, как войти в профессию и развиваться в ней. В статьей я разберу основные принципы и FAQ и готов отвечать на ваши конкретные вопросы — пишите в комментариях (или в личке), я постараюсь на все ответить в течение нескольких дней.
    С появлением цикла заметок «дата сатаниста» пришло немало сообщений и комментариев с вопросами о том, как начать и куда копать и сегодня мы разберем основные скиллы и вопросы возникшие после публикаций.

    Все указанное тут не претендует ни какую истину в последней инстанции и является субъективным мнением автора. Мы разберем основные вещи, которые кажутся самыми важными в процессе.

    Зачем именно это нужно


    Для того, чтобы цель была достижима лучше, чтобы она хоть как-то конкретно выглядела — вы хотите стать DS или Research Scientist в Facebook/Apple/Amazon/Netflix/Google — смотрите требования, языки и необходимые навыки прям конкретно под какую позицию. Какой процесс найма? Как проходить обычный день в такой роли? Как выглядит усредненный профиль человека, который там работает?

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

    Будет или это еще актуально


    К тому моменту, как вы дорастете до позиции.

    Представьте, что до вашей позиции вам нужно получить PhD, поработать 2-3 года в индустрии и вообще остричься, медитируя в монастыре — не будет ли с Data Science такой же ситуации как когда-то с экономистами и юристами? Не изменится ли все до неузнаваемости в той области, которой вы хотите заниматься.

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

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

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

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

    Разбивка навыков


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

    Программирование/Скриптинг


    С какими языками обязательно надо познакомиться? Python? Java? Shell scripting? Lua? Sql? C++?

    Что именно нужно уметь и зачем в плане программирования — тут спектр позиций очень разнится.

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

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

    Например, для питона люди уже даже составляют карту изучения языка.

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

    Понимание бизнес процессов


    Без него никуда: вам нужно понимать зачем вы нужны в данном процессе, что вы делаете и зачем. Часто именно это может сэкономить вам кучу времени, максимизировать свою пользу и не тратить время и ресурсы на фигню.

    Обычно, я задаюсь следующими вопросами:

    • Что именно я делаю в компании?
    • Зачем?
    • Кто и как это будет использовать?
    • Какие у меня есть опции?
    • В каких границах находятся параметры?

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

    Математика


    Тут вы думаю и сами все понимаете — без знания базовой математики вы не более чем бебезьян с гранатой (простите с Random Forest) — поэтому нужно понимать хотя бы базовые вещи. Если бы я составлял прям самый минимальный список, то туда бы вошли:

    • Линейная алгебра — огромное количество ресурсов легко гуглится, ищите, что вам больше всего подходит;
    • Математический анализ — (хотя бы в объеме первых двух семестров);
    • Теория вероятностей — она повсюду в машинном обучении;
    • Комбинаторика — она фактически комплементарна к теорверу;
    • Теория графов — хотя бы БАЗОВО;
    • Алгоритмы — хотя бы объеме первых двух семестров (см. рекомендации Кормена в его книжке);
    • Матлогика — хотя бы базово.

    Практический анализ и визуализация данных


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

    Exploratory data analysis должен стать просто чем-то естественным, как и все прочие трансформации данных и умение накидать простой пайплайн из unix тузлов (см. предыдущие статьи) или написать читаемый и понятный ноутбук.

    Отдельно упомяну визуализацию: лучше один раз увидеть, чем сто раз услышать.

    Показать менеджеру график в сто раз проще и понятнее, чем набор цифр, поэтому matplotlib, seaborn и ggplot2 ваши друзья.

    Софт скиллы


    Не менее важно уметь донести свои идеи, а также результаты и опасения (итд) до окружающих — убедитесь, что вы умеете четко изложить задачу как в технических, так и бизнес терминах.

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

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

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

    Вы можете аргументированно и безэмоционально донести свою позицию, сказать “да/нет” или поставить под сомнение/поддержать решение.

    Обучение


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

    • Онлайн курсы: coursera, udacity, Edx, etc;
    • Новые школы: онлайн и офлайн — SkillFactory, ШАД, MADE;
    • Классические школы: магистерские программы университетов и курсы повышения квалификации;
    • Проекты — можно просто выбрать интересные вам задачи и пилить, выкладывая на github;
    • Стажировки — тут сложно что-то подсказать, надо искать, что имеется и находить подходящий варианты.

    А надо ли оно?


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

    • Должно быть интересно;
    • Приносить внутреннее удовольствие (= хотя бы не причинять страданий);
    • «Быть вашим».

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

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

    «Быть вашим» — это то самое ощущение, что вы примерно этим и хотели заниматься. У меня есть небольшая история. Я с самого детства увлекался рок-музыкой (и металлом — ЛОСОСЬ!) и как очень многие захотел научиться играть и вот это вот все. Выяснилось, что у меня нет слуха и голоса — меня это совершенно не смущало (а надо сказать многих исполнителей это и прямо на сцене не смущает), и вот еще школьником у меня появилась гитара… и стало понятно, что мне не очень нравится часами сидеть и играть на ней. Шло тяжко, мне все время казалось, что выходит какая-то фигня — я совершенно не получал от этого удовольствия и только чувствовал себя паршиво, глупо и совершенно неспособным. Я буквально из под палки себя заставлял садиться за занятия и в целом это было не в коня корм.

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

    И в какой-то момент я понял, что игра на гитаре — это не мое и реально-то мне нравится слушать, а не играть. А глаза-то горели, когда я писал игры и код (слушая в этот момент всякие разновидности металла) и вот это-то мне тогда и нравилось, и этим мне стоило заниматься.

    А еще есть вопросы?


    Конечно же мы не смогли пройтись по всем темам и вопросам, так что пишите комменты и в личку — я всегда рад вопросам.



    RUVDS.com
    VDS/VPS-хостинг. Скидка 10% по коду HABR

    Комментарии 12

      +2

      Как вы думаете, дата саенс будет актуален в ближайшие несколько лет в России? Имеет смысл туда идти сейчас?

        +1
        Смотря что считать «ближайшие» — следующие два-три года проекты никуда деться не должны, а прям дальше бы я не загадывал
          +2

          Ну в ближайшее время понятно. Просто хотелось бы понять перспективы, будет ли эта профессия актуальна через 10-20 лет. Чтобы не оказаться по итогу у разбитого корыта.

            +3
            Едва ли хоть у кого-то в мире есть ответ на этот вопрос
              +2
              Уже сейчас множество компаний (в том числе и производственных) успешно применяют машинное обучение, так что чем больше времени пройдет, тем эта сфера станет более популярна, а значит ее начнут пихать везде где можно. Соответственно, будет нужно все больше разработчиков с такими навыками. У разбитого корыта точно не останетесь.
          +2
          Заработать на этом можно? Но так чтоб на работу не ходить?
            +1
            А можно никуда и не ходить, я прямо из дома работаю :)
              0
              Ну в смысле, чтоб не на работу устраиваться, а свой мелкий гешефт замутить)
            +2
            Тут бы до конца 2020 дожить))
              +2
              Вот у меня проблема. Я гуманитарий, 10 лет в маркетинге. Меня всегда очень драйвила работа с цифрами и неочевидные выводы из анализа табличек. Вот прямо гордость пробивала, когда я что-то интересное находил, что в какой-нибудь Метрике не соберёшь. И вот пошёл я в конце прошлого года на курсы Data Science в онлайн-университет. И застрял. Застрял, потому что не умею думать математикой, программированием. Я умею думать бизнес-процессами, но базовая задачка, типа «на входе кол-во секунд, на выходе дни-часы-минуты» просто заставила меня перегуглить всё на свете, пока я не понял, что можно использовать целочисленное деление и остаток от него. Это утрированный пример, я забрался чуть дальше и застрял на курсовой по Pandas и Matplotlib.

              Начал читать Habr. Начал слушать Habr. Начал слушать Moscow Python Podcast. Читать всякие новости про ИТ и ООП и вот это всё. Да, мне это добавляет веры и чувства причастности к сообществу, но никак не способствует продвижению учебного прогресса. Что посоветуете читать, смотреть, слушать? Как влиться в комьюнити, чтобы знать, где что лежит, как взять, что с этим сделать и кого попросить помочь. Уф. Ссори за лонгрид.
                0
                Про community рекомендую вступить в Open Data Science — там прям много людей.

                А если по материалу — мне кажется наиболее разумным начать с простых вводных материалов на Udacity и потихоньку начинать работать над каким-то своими проектами, которые кажутся интересными — а там потихоньку и к более сложным вещам переходить.
                  +1
                  Спасибо за такой скорый ответ, уже регистрируюсь.

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

              Самое читаемое