Недавно Владимир Подольский vpodolskiy, аналитик в департаменте по работе с образованием IBS, закончил обучение по специализации Data Science на Coursera. Это набор из 9 курсеровских курсов от Университета Джонса Хопкинса + дипломная работа, успешное завершение которых дает право на сертификат. Для нашего блога на Хабре он написал подробный пост о своей учебе. Для удобства мы разбили его на 2 части. Добавим, что Владимир  стал еще и редактором проекта по переводу специализации Data Science на русский язык, который весной запустили IBS и ABBYY LS.

Часть 1. О специальности Data Science в общих чертах. Курсы: Инструменты анализа данных (программирование на R); Предварительная обработка данных; Документирование процесса обработки данных.

Привет, Хабр!


Не так давно закончился мой 7-месячный марафон по освоению специализации «Наука о данных» (Data Science) на Coursera. Организационные стороны освоения специальности очень точно описаны тут. В своём посте я поделюсь впечатлениями от контента курсов. Надеюсь, после прочтения этой заметки каждый сможет сделать для себя выводы о том, стоит ли тратить время на получение знаний по аналитике данных или нет.

О специальности в общих чертах


Специальность «Наука о данных» на Coursera – это набор из 9 взаимосвязанных курсов по разным темам, касающимся всевозможных аспектов анализа данных: от сбора данных и до разработки полноценного аналитического продукта (онлайн-приложения). Вишенкой на девятислойном пироге служит дипломный проект по специальности (так называемый Data Science Capstone), который даёт возможность не только попрактиковать все освоенные навыки в комплексе, но и попытаться решить реальную задачу. На проект даётся аж 2 месяца и стартует он три раза в год, тогда как каждый из 9 обычных курсов занимает месяц изучения и начинается каждый месяц.

Освоение всей специальности «Наука о данных» с получением сертификатов по каждому из 9 курсов  удовольствие не из дешёвых. Мне, с оплатой курсов повезло – IBS полностью спонсировала моё обучение. Компания искала добровольцев для освоения профессии Data Science и предложила оплатить сертификат каждому сотруднику, кто успешно пройдет обучение на Coursera. Тем не менее, если не заморачиваться и не брать по три курса в месяц, вполне хватит и собственных средств – каждый курс стоит по 49$, за исключением первого, который дешевле остальных (в рублях, как правило, цена тоже фиксирована, но периодически меняется). Впрочем, никто не отменяет и бесплатный вариант на случай отсутствия потребности в сертификатах.

Признаться честно, обучение далось нелегко – смотреть лекции и выполнять задания получалось либо поздними вечерами после работы (привет, любимое Подмосковье!), либо по выходным. И не редкостью были типичные для студентов ситуации из разряда «сдать в последний момент». Дополнительные проблемы создавало ограниченное время сдачи тестов и отчётных материалов – если не успел вовремя, пеняй на себя – баллы за опоздание снимаются. В случае, если задание оценивают однокурсники, опоздавший не получает баллов вовсе. Тем не менее, такой подход держит в тонусе.

И, наконец, о том, что я получил от специальности «Наука о данных», помимо бессонных ночей и выходных перед компом. Получил я, скажем прямо, немало:

  • систематизировал знания по аналитике данных. Мне и до освоения DSS доводилось формировать аналитику различного уровня сложности, но мои знания и навыки скорее были разрозненными. Хоть в Бауманке и давали качественно матстатистику и теорвер, но вот про то, как обрабатывать данные, не было сказано решительно ни слова (курс по базам данных был, но был он об оракле и sql-запросах);
  • научился работать с языком R и RStudio. Очень удобные инструменты, к слову. Если нужно как-то изменить процесс обработки, мне оказалось гораздо легче внести изменения в код на R и перезапустить его, чем повторять ту же последовательность действий при помощи мышки в Excel. Впрочем, это дело вкуса. В любом случае, команды и функции R очень хорошо приспособлены для обработки данных любых видов: почти все нужные функции можно найти в свободно распространяемых пакетах, а ненайденные можно самостоятельно дописать (если есть соответствующие скиллы кодинга на C);
  • получил представление о том, как с максимальной отдачей проводить исследование данных. Как и в любом исследовании, тут есть своя структура, свои правила, исходные данные и результаты. Всё, скажем так, встало на свои места: получаем данные, очищаем их и нормализуем, проводим разведочный анализ (попутно записываем его результаты), проводим полное исследование, записываем результат и создаём при необходимости приложение для обработки данных по придуманному методу. Это если в грубых чертах – в каждом процессе есть свои тонкости и подводные камни. Меня, например, особо заинтересовала подготовка отчётов по результатам анализа данных – лекторы привели очень хорошую с точки зрения понимания неподготовленным пользователем структуру отчёта;
  • дополнительной плюшкой стало наличие в R специальных пакетов для обработки и визуализации графов. Дело в том, что я нагружен ещё и кандидатской диссертацией, где львиная доля используемых методов опирается на графовые подходы. Пожалуй, ничего проще и наглядней реализации R операций над графами я не видел. Изобретать велосипед не пришлось…


О курсах


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



1 Названия даны в соответствии с официальным переводом DSS на русский язык на сайте Coursera

Инструменты анализа данных (курсы 1 и 2)


Существует расхожее мнение, что если на первой минуте занятия по инструментам (программным средствам, etc.) слушатели не заснули, то занятие можно считать удавшимся. В этом плане курсы по инструментарию DSS удались в полной мере – слушать интересно, а пробовать инструменты на ходу в сто крат интереснее, чем слушать. Внимание обоих курсов по инструментам анализа данных сосредоточено на языке программирования R. По сути, студента плавно вводят в тему анализа данных и тут же дают опробовать инструментарий на практике, чтобы освоиться. Курсы во многом неспешные, но охватывают все необходимые основы. Более глубокие знания по R даются в ходе остальных курсов – по мере необходимости. Где-то dplyr’у научат, а где-то поближе с ggplot познакомят. Такой практико-ориентированный подход «объяснять по мере необходимости», на мой взгляд, очень эффективен – сухие инструкции по использованию инструментов быстро испаряются из головы. Если вы не пользуете скилл, то он усыхает L На скрине – типичный RStudio.



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

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

Предварительная обработка данных (курсы 3 и 4)


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

Из предварительной обработки стоит, пожалуй, выделить крайне полезную информацию о том, как лучше всего приводить данные к нормальной форме. Под нормальной формой подразумевается такая форма организации данных, при которой каждый столбец таблицы данных соответствует лишь одной переменной, а каждая строка – лишь одному наблюдению. Именно такие таблицы проще всего в дальнейшем обрабатываться и анализировать. Однако, как правило, данные к нам попадают в плохо организованном виде или и вовсе в неструктурированном (например, сообщения в социальных сетях представляют собой массивы символов, текст). Для дальнейшей обработки такие массивы данных надо привести к нормальной форме, что можно сделать при помощи разнообразных команд пакета dplyr. Причём важно понимать, что для каждого нового источника данных должна быть определена собственная последовательность переходов для осуществления окончательной нормализации. Без ручного кодирования тут, как водится, никуда…

На примере двух таблиц я попытался показать, что это за зверь такой – «нормализация». Данные для таблиц придуманы на основе проекта по работе…

Если исходная таблица с данными выглядит примерно так:



То при нормализации мы должны получить примерно такую табличку:



Согласитесь, второй вариант легче обработать автоматически при помощи формул и функций, да и выглядит он куда презентабельнее. Тут и уникальный идентификатор есть у каждого наблюдения, и значение каждой переменной можно отдельно выбрать, и в целом структура оказывается более логичной и простой для восприятия. Обработка таблиц в нормализованной форме оказывается лёгкой и быстрой при помощи средств автоматизации (как правило, для людей эта форма не всегда удобна). На основе таких данных R позволяет с лёгкостью строить разнообразные описательные диаграммы, наподобие той, что приведена ниже. Данные для диаграмм взяты с официального сайта Минобрнауки РФ.



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

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

Документирование процесса обработки данных (курс 5)


Документирование чего бы то ни было всегда мне казалось невероятно скучным действом. Когда всё сделано и прекрасно работает, казалось бы, зачем документировать выполненные действия? Зачем порождать новые и новые документы? К чему вся эта макулатура?

Но в аналитике данных одного проведённого исследования и полученных результатов мало – чтобы убедить остальных представителей когорты аналитиков, необходимо поведать о том, как и над какими данными осуществлялась обработка. Так, если ваше исследование не смогут повторить, то грош цена такому исследованию. Поэтому в рамках одного из курсов DSS учат, как лучше всего документировать выполненную обработку данных. По сути, учат правилам хорошего тона в науке: сделал – расскажи всем, как сделал.

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

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

  • резюме выполненных работ (включая цель);
  • описание набора данных (расшифровка переменных, описание порядка получения, ссылки на наборы данных);
  • описание процедуры предварительной обработки данных (очистка данных, нормализация);
  • описание условий обработки данных (например, инициация значения счётчика случайных чисел);
  • результаты разведочного анализа данных;
  • результаты углублённого анализа;
  • выводы;
  • приложения: таблицы, графики и пр.


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

Чем мне нравится R в плане документирования, так это тем, что в Rmd-файле можно текстовое описание снабжать врезками кода обработки данных, который при компиляции Rmd файла в PDF преобразуется в результаты обработки: результаты расчётов, красивые графики и так далее. На самом деле, это очень удобно – не нужно думать, куда и как добавлять очередную иллюстрацию.

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

Конец первой части


Читайте во второй части: Курсы по стат. обработке данных и машинному обучению; Практика: создание ПО для обработки данных (дипломный проект); другие полезные курсы на Курсере.

Комментарии (14)


  1. lexnekr
    09.10.2015 16:10
    +1

    Стоит вероятно упомянуть статью megamozg.ru/post/14960 Truf про эту специальность — очень хорошо всё описано. Я после той статьи на неё записался и прошёл первые 2 курса, понял, что ждал чего-то другого и забил.


    1. vpodolskiy
      09.10.2015 23:13

      Да, очень хорошая статья! Всё по делу.
      В самом начале текста всё же есть ссылка на неё: «Организационные стороны освоения специальности очень точно описаны тут» (ссылка — под словами «описаны тут»). Собственно, благодаря этой статье мне и не потребовалось расписывать все организационные тонкости — можно было сразу приняться за контент.

      А чего ожидали в итоге? Мне поначалу было скучно, но курса с 3-4 пошёл реально интересный материал, тогда и втянулся.


  1. nicronom
    09.10.2015 16:21
    +2

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

    Не могли бы вы примерно оценить, сколько часов в неделю уделяли времени учебе?


    1. vpodolskiy
      09.10.2015 23:31
      +2

      Участие в нескольких курсах в условиях тотальной нехватки времени — это своего рода локальный героизм :) Благо, если удаётся всё же как-то структурировать всё изученное — в противном случае одновременное изучение нескольких курсов может обернуться пустой тратой времени, увы.

      На учёбу у меня уходило часов по 7-8 в неделю. Тут и просмотр лекций, и самостоятельное изучение материалов, и выполнение заданий, прохождение тестов. Как правило, лекции смотрелись по вечерам, а задания выполнялись в течение субботы либо воскресенья. Соответственно, большая часть времени обучения приходилась на выходные.

      Проверка заданий других студентов, как правило, укладывалась в обеденный перерыв.

      Но, конечно, хотелось бы отводить на это больше времени, больше практиковаться…


  1. brainick
    09.10.2015 18:00
    +1

    Лично я изучил 3 курса из данного трека и просмотрел видео оставшихся и далее счёл обучение бессмысленным. На мой взгляд, всем этим курсам недостаёт фундаментальности, а обучение сводится к «делай как я» и результатом прохождения данного курса является не специалист, а, скорее, «data monkey». Эти курсы хороши, если использовать их как некоторый задачник после изучения какой-нибудь фундаментальной (и скорее всего ни одной) книжицы по R и статистике, причём без просмотра всех их видео и объяснений.
    Лично мне кстати, гораздо больше дало изучение курсов Stepic'a
    1. https://stepic.org/course/Основы-статистики-76/
    2. https://stepic.org/course/Анализ-данных-в-R-129/


    1. vpodolskiy
      09.10.2015 23:35

      Абсолютно верно подмечено — с фундаментальностью в этой специальности напряг :) Она в общем-то получилась довольно прикладная — мне кажется, авторы так хотели расширить аудиторию, да и вообще это характерно для американского подхода к обучению. И тем не менее, отдельные курсы получились очень насыщенными на фундаментальные вещи: в 6 и 7 курсах профессор Каффо постарался какое-то целостное понимание регрессии заложить, с выводом формул и подробными объяснениями. Хотя делал он это ну очень заунывным голосом.

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

      По поводу Stepic'a — спасибо! Посмотрим, что предлагают.


      1. Apatic
        10.10.2015 14:18

        А я тебе, кстати, уже кидал ссылки на Карпова и его курсы на степике, кажется. Или просто на степик. Не помню :(


        1. vpodolskiy
          10.10.2015 14:31

          Гм, я вот тоже не помню… по-моему, его-то и кидал)


  1. Melz
    09.10.2015 20:42
    +1

    Я на данный момент прохожу Exploratory Data Analysis и буду наверное добивать до конца (с сертификатами само собой).
    Если кто на курсе, там на форуме группа есть ;)

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

    Но курс хорошо их связывает, приходится думать :). Проблемы тоже интересные. R вы точно выучите.

    RStudio и R — тот еще кактус, все в память тянет. Если вы привыкли к современным иде где все подсвечивается и очень няшно, то вспомните год этак 2008.
    R вообще очень удобен для манипуляции с данными и делает все что нужно (я понимаю почему им пользуются), но наименования некоторых функций и пораметров добивают.

    Для себя я выбрал следующий алгоритм:
    1. Смотрим все лекции чтобы понять о чем курс (там не много)
    2. Делаем упражниения swirl, как можно больше.
    3. К курсу как правило идет бесплатная книга типа «Exploratory Data Analysis with R», как минимум пролистать.

    Получается очень напряженная первая неделя, но потом становится легче.

    Собственно вопрос автору:
    1. Оно вообще котируется среди работодателей?
    2. Про курсеру HR знает?


    1. vpodolskiy
      09.10.2015 23:51
      +1

      RStudio и R — тот еще кактус, все в память тянет. Если вы привыкли к современным иде где все подсвечивается и очень няшно, то вспомните год этак 2008.


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

      2. Делаем упражниения swirl, как можно больше.


      Да, swirl хорош, хоть там и нет действительно трудных задач, над которыми надо крепко подумать…

      По вопросам:
      Оно вообще котируется среди работодателей?

      Определённо да :)

      Про курсеру HR знает?

      Подкованные HR знают. Если же HR набирает людей на позицию, связанную с анализом данных, но при этом не знает о ШАД, курсере или других подобных проектах, то лично я сомневаюсь, стоит ли с таким HR иметь дело…
      Конечно, можно и без всего этого быть первоклассным специалистом, но HR всё же должны быть как следует осведомлены о профиле специалистов, которых набирают. Они могут и не поддерживать профессиональный разговор, но хотя бы должны уметь выявлять какие-то формальные признаки, по которым специалист проходит.


    1. ternaus
      10.10.2015 00:30
      +1

      Собственно вопрос автору:
      1. Оно вообще котируется среди работодателей?
      2. Про курсеру HR знает?


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

      Потенциальные работодатели засчитывали это за «стремление учиться чему-то новому», но не как «большой практический опыт».

      Вообще это достаточно отвратная специализация в том мысле, что преподаватели из них так себе, до уровня курсов ну Coursera, которые читает Robert Sedgewick им как до луны.

      Графики, которые они показывают, как примеры визуализации по уровню всё-таки ниже приемлимого. Цвета, размер шрифтов, да и общее оформление — ни разу не publication quality.

      Раньше у этой специализации не было внятной альтернативы, но сейчас… Что на Coursera, что на edX море курсов которые, видится мне, более достойные чем эта специализация. И новые курсы появляются чуть не каждый день.

      Короче специализацию брать можно, но лучше взять что-то похожее, но в лучшем исполнении.


  1. and7ey
    10.10.2015 13:21

    Русский перевод — это хорошо. Пытался пройти курсы 6 и 7 из вашего списка — осилил только по первой неделе. Все-таки английский язык с математическими и медицинскими терминами — не самый лучший вариант для моего восприятия.

    Когда русский перевод планируется выпустить?


    1. vpodolskiy
      11.10.2015 22:54
      +1

      Да, 6 и 7 на английском несколько замудрённые.

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

      Сейчас редактирую перевод курса по разведочному анализу данных (4) — перевод публикуется по мере окончания экспертизы соответствующего фрагмента. Думаю, потом можно будет опустить 5 и перейти к 6 и 7, поскольку в 5 всё более-менее прозрачно, можно с ним и подождать.

      Постараюсь ускорить этот процесс по мере наличия времени :)


  1. IBS_habrablog
    16.10.2015 15:59

    Коллеги, опубликовали вторую часть поста: habrahabr.ru/company/ibs/blog/268893