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

И сегодня мы хотим сказать, что наконец можем выполнить все эти пожелания. В январе на Курсере пройдёт курс, организованный совместно Яндексом (Школой анализа данных) и ВШЭ. Записаться на него можно уже сейчас: www.coursera.org/learn/introduction-machine-learning.


Сооснователь Coursera Дафна Коллер в офисе Яндекса

Курс продлится семь недель. Это означает, что по сравнению с ШАДовским двухсеместровым курсом он будет заметно упрощен. Однако в эти семь недель мы попытались вместить только то, что точно пригодится на практике, и какие-то базовые вещи, которые нельзя не знать. В итоге получился идеальный русскоязычный курс для первого знакомства с машинным обучением.

Кроме того, мы верим, что после прохождения курса у человека должна остаться не только теория в голове, но и скилл «в пальцах». Поэтому все практические задания построены вокруг использования библиотеки scikit-learn (Python). Получается, что после прохождения нашего курса человек сможет сам решать задачи анализа данных, и ему будет проще развиваться дальше.

Под катом можно прочитать подробнее обо всех авторах курса и узнать его примерное содержание.

О преподавателях


Лектор курса – Константин Воронцов. Константин Вячеславович много лет преподает основы машинного обучения студентам ШАД, Вышки, МФТИ и МГУ.

Практическую часть курса подготовили Петр Ромов, Анна Козлова и Евгений Соколов, который также читает несколько лекций. Все трое работают в Яндексе (Женя и Петя в Yandex Data Factory, Аня — в отделе машинного перевода) и применяют машинное обучение в своей ежедневной деятельности. Ребята в курсе происходящего в области анализа данных и постарались подготовить задания так, чтобы их выполнение принесло максимальную пользу слушателям курса.

Программа


Это описание модулей курса в том виде, в котором оно откроется на «Курсере» одновременно со стартом курса.

1. Знакомство с анализом данных и машинным обучением.
В этом модуле мы расскажем о задачах, которые решает машинное обучение, определим базовый набор понятий и введем необходимые обозначения. Также мы расскажем про основные библиотеки языка Python для работы с данными (NumPy, Pandas, Scikit-Learn), которые понадобятся для выполнения практических заданий на протяжении всего курса.

2. Логические методы классификации.
Логические методы делают классификацию объектов на основе простых правил, благодаря чему являются интерпретируемыми и легкими в реализации. При объединении в композицию логические модели позволяют решать многие задачи с высоким качеством. В этом модуле мы изучим основной класс логических алгоритмов — решающие деревья. Также мы поговорим про объединение деревьев в композицию, называемую случайным лесом.

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

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

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

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

7. Линейная регрессия.
В этом модуле мы изучим линейные модели для регрессии и обсудим их связь с сингулярным разложением матрицы «объекты-признаки».

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

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

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

11. Кластеризация и визуализация.
Этот модуль посвящен новому классу задач в машинном обучении — обучению без учителя. Под этим понимаются ситуации, в которых нужно найти структуру в данных или произвести их «разведку». В этом модуле мы обсудим две таких задачи: кластеризацию (поиск групп схожих объектов) и визуализацию (отображение объектов в двух- или трехмерное пространство).

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

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

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


  1. mird
    20.10.2015 18:49
    +1

    Как так получается, что если зарегистрироваться на ваш курс, он отображается в текущих курсах, хотя начнется он только 26 января? Что-то не то с настройками курса.


    1. Zalina
      20.10.2015 23:03
      +1

      Разбираемся.


    1. Zalina
      21.10.2015 13:44
      +1

      Выяснили, что это особенность курсов on-demand. Подразумевается, что как только вы подписались на курс, так сразу можете приступить к обучению. То, что сами материалы курса еще не открыты, а курс уже в «текущих», можно объяснить еще не до конца доработанными механизмами новой платформы (в том числе касающихся курсов в стадии pre-enrollment), поэтому возможны такие несоответствия. Сама Курсера проводит еще огромное количество доработок, касающихся возможности вывешивания файлов, настройки тестов, систем оценивания и прочего.


  1. fl00r
    20.10.2015 19:47
    +10

    Это. Прекрасно!


  1. brainick
    20.10.2015 20:04
    +16

    Давно пора. Хрен вот этим товарищам, (http://newprolab.com/bigdata/ http://bigdata.beeline.digital/ ) а не 100 или 180 тысяч.


  1. jet-black
    20.10.2015 20:59

    С одной стороны, это, безусловно, отличные новости. Но, думаю, по содержанию и глубине подачи материала курс будет сильно уступать курсу ШАДа.
    Предполагаю, что для многих было бы огромной радостью, если бы Вы выложили в открытый доступ видеоматериалы+слайды+домашние задания с семинаров по машинному обучению.


    1. LiloSEA
      20.10.2015 21:04
      +4

      Да, Вы правы: курс в ШАДе сильно глубже и нагруженнее, но у этого онлайн-курса все же другая цель.

      Не, пока все-все материалы мы публиковать не будем:)


      1. brainick
        20.10.2015 21:15
        +1

        очень жаль.


      1. jet-black
        20.10.2015 21:27

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


        1. brainick
          20.10.2015 21:59

          С другой стороны надо понимать, что ML это круто. Вон на Stepice небольшой 5-тинедельный курс заканчивается «Основы перечислительной комбинаторики». (https://stepic.org/course/Основы-перечислительной-комбинаторики-125/syllabus) Чисто для интереса вы можете посмотреть, сколько человек решили задачи последней недели. Спойлер от 0 до 10. А тут машинное обучение — раздел намного более крутой. Если не облегчить, то запишутся условно говоря 5000, после первой недели останется 1000, после второй 500, после 3 — 100 и после 4 50 человек. Да и те будут студентами ШАДа.


      1. lexnekr
        21.10.2015 09:26

        А почему бы не сделать специализацию и не положить внутрь несколько курсов, чтобы покрыть всю ШАДовскую программу?


        1. LiloSEA
          21.10.2015 12:25

          Пока мы решили начать с одного из основополагающих наших курсов. Мы думаем, продолжать ли, как продолжать и в каком формате.


          1. lexnekr
            21.10.2015 13:17

            Я к тому, что вы написали:

            Курс продлится семь недель. Это означает, что по сравнению с ШАДовским двухсеместровым курсом он будет заметно упрощен.

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


            1. LiloSEA
              21.10.2015 13:55
              +1

              Тут важный момент: курс в ШАДе достаточно сложный, создан он для студентов ШАД, которых мы набираем в школу по конкурсу. Конкурс очень высок, курс начинается во втором семестре — то есть мы можем спокойно рассчитывать на очень высокий уровень слушателей. Все это резко ограничивает аудиторию для онлайн-курса, если просто перекладывать имеющийся курс в формат онлайн. Боюсь, что тогда это был бы не MOOC, а OOC :)


              1. lexnekr
                21.10.2015 14:31
                +1

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

                Хотя вам конечно виднее.


                1. LiloSEA
                  21.10.2015 14:39
                  +1

                  Может быть:) И мы будем рады, если много людей пройдет курс успешно и будет жаждать продолжения!
                  Сейчас тем, кому будет на курсе слишком легко, мы приглашаем поступить в ШАД — учиться у нас можно заочно.


                1. brainick
                  21.10.2015 16:54

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


                  1. lexnekr
                    21.10.2015 17:31

                    Вполне вероятно (я и сам признал это выше).
                    Но тут немного иные эффекты уже начинают работать. Я, например, не все курсы на курсере закончил, которые начинал, если в процессе становилось «не до того», а потом было очень тяжело лень преодолеть, чтобы вернуться через пару месяцев.
                    Чем больше курс, тем больше отваливаться будет (и чем он сложнее, тоже).

                    Но мне кажется, игра стоила бы свеч. Ведь интересно подготовить не 100500 «специалистов», которые знают как установить некую среду разработки, например. А подготовить хотя бы N специалистов, которые могут в ней что-то внятное кодить.

                    Я лишь высказал идею. И авторы курса вполне обоснованно объяснили почему они сделали иначе. Я их понимаю. Но своя идея всегда кажется «более правильной».
                    =)


  1. Zenker
    20.10.2015 21:28

    А чем этот курс будет отличаться от каноничного курсеровского? Будет ли что-то за его рамками(помимо scikit)?


    1. brainick
      21.10.2015 00:23
      +3

      Ну например, тем, что он будет на русском языке ) И будет Python вместо Octave.


    1. LiloSEA
      21.10.2015 13:37
      +3

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

      2) В своем курсе Andrew Ng рассказывает базовые алгоритмы — у него нет ничего про бустинг и случайные деревья, а именно эти алгоритмы используются, например, в Яндексе для решения многих задач машинного обучения.

      3) Да и сам подход к изложению, терминология и методология в нашем курсе устроены иначе.
      Отмечу, что на курсе Воронцова “выросла” большая часть data scientist’-ов, работающих в России, поэтому после нашего курса будет гораздо комфортнее вливаться в любой рабочий коллектив в нашей стране.


  1. amIwho
    21.10.2015 11:05
    +1

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


    1. LiloSEA
      21.10.2015 14:13
      +1

      Мы обычно используем реальные датасеты, но стараемся выбирать их так, чтобы не сильно упираться в вычислительные возможности и время выполнения. Люди скорее всего не рассчитывают, что они будут в онлайн-курсе обучать что-то 2 часа :)


  1. alabram
    21.10.2015 11:54
    +4

    А как вы оцениваете загрузку слушателей? Сколько часов в неделю нужно выделять, чтобы успешно пройти этот курс?


    1. LiloSEA
      21.10.2015 14:11
      +3

      4-5 часов в неделю


  1. rzykov
    21.10.2015 12:14

    Я вижу очень большой минус, что курс будет на готовой библиотеке sci-kit. Курс от Andrew лучше тем, что ученик сам пишет алгоритм и видит изнутри, как он работает. Посмотрите первый ответ на quora на вопрос «How do I learn machine learning?»
    Xavier (который был директором по аналитике Netflix) пишет:

    Get a good ML book (my list below), read the first intro chapters, and then jump to whatever chapter includes an algorithm you are interested. Once you have found that algo, dive into it, understand all the details, and, especially, implement it. In the previous online course you would already have implemented some algorithms in Octave. But, here I am talking about implementing an algorithm from scratch in a «real» programming language. You can still start with an easy one such as L2-regularized Logistic Regression, or k-means, but you should also push yourself to implement more interesting ones such as LDA (Latent Dirichlet Allocation) or SVMs. You can use a reference implementation in one of the many existing libraries to make sure you are getting comparable results, but ideally you don't want to look at the code but actually force yourself to implement it directly from the mathematical formulation in the book.


    1. LiloSEA
      21.10.2015 14:11
      +1

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

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


  1. Dreamastiy
    21.10.2015 19:00

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

    Этот курс будет бесплатным? Если нет — какая ориентировочная стоимость?


    1. Zenker
      21.10.2015 19:39
      +2

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


      1. Dreamastiy
        21.10.2015 20:57

        Прошу прощения — ошибся.
        Маркетинг курсеры сделал свое дело. Раньше со страницы специализации перейти на бесплатное прохождение одного из курсов было проще.


        1. brainick
          21.10.2015 22:05

          Да, ныне надо, посмотрев специализацию, искать курс в каталоге. Гиперссылки из страницы специализации предусмотрительно не работают.


    1. LiloSEA
      22.10.2015 18:13
      +2

      Курс можно пройти бесплатно, но можно приобрести сертификат (за $29).


  1. to_climb
    22.10.2015 16:25
    +1

    Жаль, что нет ничего про отбор признаков. Очень важная тема для задач с большой размерностью (например, анализ текстов).


    1. LiloSEA
      23.10.2015 10:34
      +1

      Тему отбора признаков мы разбираем в 8 модуле.

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