Компания
349,37
рейтинг
20 октября 2015 в 18:22

Разработка → Курс по машинному обучению на Coursera от Яндекса и ВШЭ

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

И сегодня мы хотим сказать, что наконец можем выполнить все эти пожелания. В январе на Курсере пройдёт курс, организованный совместно Яндексом (Школой анализа данных) и ВШЭ. Записаться на него можно уже сейчас: 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. Машинное обучение в прикладных задачах
В этом модуле мы подведем итоги курса, вспомним основные этапы решения задачи анализа данных. Также мы разберем несколько задач из прикладных областей, чтобы подготовиться к выполнению финального проекта.
Автор: @Zalina
Яндекс
рейтинг 349,37

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

  • +1
    Как так получается, что если зарегистрироваться на ваш курс, он отображается в текущих курсах, хотя начнется он только 26 января? Что-то не то с настройками курса.
    • +1
      Разбираемся.
    • +1
      Выяснили, что это особенность курсов on-demand. Подразумевается, что как только вы подписались на курс, так сразу можете приступить к обучению. То, что сами материалы курса еще не открыты, а курс уже в «текущих», можно объяснить еще не до конца доработанными механизмами новой платформы (в том числе касающихся курсов в стадии pre-enrollment), поэтому возможны такие несоответствия. Сама Курсера проводит еще огромное количество доработок, касающихся возможности вывешивания файлов, настройки тестов, систем оценивания и прочего.
  • +10
    Это. Прекрасно!
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    С одной стороны, это, безусловно, отличные новости. Но, думаю, по содержанию и глубине подачи материала курс будет сильно уступать курсу ШАДа.
    Предполагаю, что для многих было бы огромной радостью, если бы Вы выложили в открытый доступ видеоматериалы+слайды+домашние задания с семинаров по машинному обучению.
    • +4
      Да, Вы правы: курс в ШАДе сильно глубже и нагруженнее, но у этого онлайн-курса все же другая цель.

      Не, пока все-все материалы мы публиковать не будем:)
      • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Пусть не все, но хоть что-нибудь)
        Очень сложно самому придумывать задания после просмотра очередной лекции.
        • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        А почему бы не сделать специализацию и не положить внутрь несколько курсов, чтобы покрыть всю ШАДовскую программу?
        • 0
          Пока мы решили начать с одного из основополагающих наших курсов. Мы думаем, продолжать ли, как продолжать и в каком формате.
          • 0
            Я к тому, что вы написали:
            Курс продлится семь недель. Это означает, что по сравнению с ШАДовским двухсеместровым курсом он будет заметно упрощен.

            Вот если бы вы весь полноценный курс выложили (пусть и оформив в виде специализации), то было бы полезнее (как мне кажется).
            • +1
              Тут важный момент: курс в ШАДе достаточно сложный, создан он для студентов ШАД, которых мы набираем в школу по конкурсу. Конкурс очень высок, курс начинается во втором семестре — то есть мы можем спокойно рассчитывать на очень высокий уровень слушателей. Все это резко ограничивает аудиторию для онлайн-курса, если просто перекладывать имеющийся курс в формат онлайн. Боюсь, что тогда это был бы не MOOC, а OOC :)
              • +1
                Я думаю, вы недооцениваете аудиторию.
                Честно говоря упрощённых курсов на курсере хватает.
                Бесит уже отношение «расстилаем пелёночку, присаживаемся, тужимся и и какаем».
                Есть же сейчас информер сложности курса, он для большинства курсов висит в позиции простого. Понятно, что это увеличивает аудиторию и возможность заработка для авторов, но ведь цель всего этого немножко иная…

                Хотя вам конечно виднее.
                • +1
                  Может быть:) И мы будем рады, если много людей пройдет курс успешно и будет жаждать продолжения!
                  Сейчас тем, кому будет на курсе слишком легко, мы приглашаем поступить в ШАД — учиться у нас можно заочно.
                  • +1
                    В ШАД поступать по многим причинам может быть не вариант, а вот отдельные полноценные курсы послушать было бы очень здорово — я слушал в университете курс Ветрова, например, очень близкий по смыслу, но во второй половине с другим лектором ушедший в совсем глубокую теорию, и был бы очень рад освежить всё в памяти. Выложенные курсы ШАДа всё равно не смогут заменить ШАД, но многим вроде меня могли бы очень сильно помочь.
                • НЛО прилетело и опубликовало эту надпись здесь
                  • 0
                    Вполне вероятно (я и сам признал это выше).
                    Но тут немного иные эффекты уже начинают работать. Я, например, не все курсы на курсере закончил, которые начинал, если в процессе становилось «не до того», а потом было очень тяжело лень преодолеть, чтобы вернуться через пару месяцев.
                    Чем больше курс, тем больше отваливаться будет (и чем он сложнее, тоже).

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

                    Я лишь высказал идею. И авторы курса вполне обоснованно объяснили почему они сделали иначе. Я их понимаю. Но своя идея всегда кажется «более правильной».
                    =)
  • 0
    А чем этот курс будет отличаться от каноничного курсеровского? Будет ли что-то за его рамками(помимо scikit)?
    • НЛО прилетело и опубликовало эту надпись здесь
    • +3
      Отличий, на самом деле, довольно много:
      1) В стэнфордском курсе больше сосредотачивается на картинках и объяснениях «на пальцах», тогда как мы добавим к этому немного строгости — формулы и их вывод будут, но в том объеме, в котором их может понять студент первого курса университета.

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

      3) Да и сам подход к изложению, терминология и методология в нашем курсе устроены иначе.
      Отмечу, что на курсе Воронцова “выросла” большая часть data scientist’-ов, работающих в России, поэтому после нашего курса будет гораздо комфортнее вливаться в любой рабочий коллектив в нашей стране.
  • +1
    Небольшое пожелание. Оооочень хотелось бы чтобы примеры были из реальной жизни. То, что можно попробовать самому, неплохой пример с анализом тональности высказываний в твиттере. Или анализ соцсетей. То, к чему есть доступ у всех. Чем интереснее и доступнее челлендж, тем прикольнее учиться.
    • +1
      Мы обычно используем реальные датасеты, но стараемся выбирать их так, чтобы не сильно упираться в вычислительные возможности и время выполнения. Люди скорее всего не рассчитывают, что они будут в онлайн-курсе обучать что-то 2 часа :)
  • +4
    А как вы оцениваете загрузку слушателей? Сколько часов в неделю нужно выделять, чтобы успешно пройти этот курс?
    • +3
      4-5 часов в неделю
  • 0
    Я вижу очень большой минус, что курс будет на готовой библиотеке 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
      Наш курс даёт представление о том как работают изучаемые алгоритмы, но кроме этого мы хотим показать, как правильно их применять на практике. Нашей целью не было сделать курс по программированию, поэтому используем sklearn.
      Кроме того, там достаточно удобная среда для проведения исследований, она поможет подготовить человека к тому, как ставить эксперименты.
      По факту мы учим тому как подойти к решению задач МО, какие методы бывают, какие достоинства/недостатки, какие подводные камни встречаются.

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

    Этот курс будет бесплатным? Если нет — какая ориентировочная стоимость?
    • +2
      То, что вы привели в пример — специализация, а не курс. Хотите бесплатно — проходите курсы не в составе специализации, а по отдельности, они были и остаются бесплатными. Насколько я помню, платных курсов там нет и вроде как в принципе быть не может. Есть только опциональные платные подтвержденные сертификаты.
      • 0
        Прошу прощения — ошибся.
        Маркетинг курсеры сделал свое дело. Раньше со страницы специализации перейти на бесплатное прохождение одного из курсов было проще.
        • НЛО прилетело и опубликовало эту надпись здесь
    • +2
      Курс можно пройти бесплатно, но можно приобрести сертификат (за $29).
  • +1
    Жаль, что нет ничего про отбор признаков. Очень важная тема для задач с большой размерностью (например, анализ текстов).
    • +1
      Тему отбора признаков мы разбираем в 8 модуле.
      8. Понижение размерности и метод главных компонент.
      В прикладных задачах часто возникает потребность в уменьшении количества признаков — например, для ускорения работы моделей. В этом модуле мы обсудим подходы к отбору признаков, а также изучим метод главных компонент, один из самых популярных методов понижения размерности.
  • 0
    Будет ли курс по этой теме в ВШЭ (как общеуниверситетский, не только для ФКН)?
    • 0
      Общеуниверситетский факультатив на основе курса Воронцова пока не планируется. В общеуниверситетском формате ФКН сейчас проводит
      майнор «Интеллектуальный анализ данных» electives.hse.ru/minor_intel
  • –1
    Жалко, что не на JS. Python редкая вещь в мобильной разработке, только, если не в WEB. Гораздо легче и плодотворнее перезагрузить клиентский браузер, чем один сервер
    • +2
      Простите, а что за Machine Learning вы собрались устраивать на мобильном устройстве? Ну и да, алгоритмы можно реализовывать на разных языках, так же как изучение их обычно не сильно завязано на язык программирования.
      • –1
        Просто, думаю, что Python — это то, на чем рассказано в первоисточниках и авторам этих курсов гораздо легче рассказать на Pythone — понятно, но мне было приятно видеть эти курсы на каком-нибудь Си — образном коде.А так, я есть богатый набор возможностей, которые можно было бы реализовать на мобильном телефоне:
        • Распознавание речи
        • Распознавание жестов
        • Распознавание рукописного ввода
        • Предсказание ухода клиентов
        • Обнаружение спама

        Ну так-то да, алгоритм универсален к любому языку.
        • +1
          Все эти алгоритмы обучения крайне ресурсозатратны. Вы совсем не хотите запускать их на клиенте.

          Python выбран потому что вокруг него сложилось большое сообщество с кучей полезных и проработанных библиотек, а в «первоисточниках» никаких языков вообще нет, одна лишь математика.
          • 0
            Ваш комментарий противоречит сам себе
            • +1
              Если Вы к тому, что Python «работает до 10 раз дольше», то это Вы про numpy и Cython не слышали.
              • 0
                Причем тут numpy и Cython? Я про мобильную разработку без серверной обработки, где нет никаких Пайтонов или на уровне микроконтроллеров, где предпочтительнее использовать Си-образныйкод
                • +1
                  Ещё раз: все эти алгоритмы весьма ресурсоёмки и на стадии обучения требуют большого количества памяти и процессорного времени. Вы ну совсем и ни за что не хотите делать это на мобильных устройствах.

                  Я вообще нигде про слабые в вычислительном плане платформы (вроде мобилок или микроконтроллеров) ничего не говорил, где Вы противоречие усмотрели?
                  • –3
                    Весьма спорно излагаете, тогда теряется смысл всей это лекции, если я не могу проверить какой-то алгоритм на обычном компьютере, а современный мобильный телефон, практически не уступают ПК, а иногда и заменяют. Ну я могу вам привести примеры программ, где используются эти алгоритмы под Android, к примеру:
                    DJVU reader, проект Sphinx(распознование речи), ABBYY TextGrabber(распознование текста).
                    • +2
                      Проверить алгоритм и использовать его в продакшене – два совершенно разных сценария. Кроме того, обучение в течении 5-10 часов – обычное дело, я сомневаюсь, что телефон столько проживёт без зарядки. А если его постоянно держать «на шнурке», то чем это лучше ПК?

                      В Ваших примерах используются уже обученные (на каких-нибудь кластерах) алгоритмы, а не обучающиеся на клиенте.
                      • –1
                        Товарищ, причем тут 5-10 часов, что за цифры? Я о готовой программе, которую уже можно смело использовать, как на ПК, так и на планшете или телефоне. Ну проверьте сами как они могут занимать 5-10 часов appcrawlr.com/android-apps/best-apps-machine-learning.
                        • 0
                          Это стандартные цифры на обучение моделей на kaggle, например. Ваши примеры либо невероятно просты (вроде крестиков-ноликов, которые, кстати, обычно рассматриваются в курсах по ИИ, а не машинному обучению), либо уже имеют предобученную базу (настроенную модель) и лишь дообучаются в процессе работы.
                          • –1
                            Ну о чем и речь, я ж не буду на телефоне изучать модель Вселенной(это, просто, неразумно и глупо), для этого есть суперкомпьютеры. Есть задачи, которые можно решить на телефоне, используя machine learning. Вы с этим согласны, в конце концов?
                            • +1
                              Такие задачи если и есть, то составляют совсем небольшой подкласс задач, решаемых на ПК с большими ресурсами. Обрабатывать 2гб данных на телефоне – не самое приятное задание, а это ещё довольно скромные размеры.
                              • –1
                                Такие задачи если и есть, то составляют совсем небольшой подкласс задач, решаемых на ПК с большими ресурсами

                                Скажу так, мой телефон или планшет мощнее моего ПК, это я уже отмечал, что они не уступают ПК в производительности ничем, а иногда и заменяют

                                Обрабатывать 2гб данных на телефоне – не самое приятное задание, а это ещё довольно скромные размеры.

                                Что за 2Гб? О чем, вообще, речь?
  • +4
    Подскажите сегодня должен был начаться курс, но как его можно смотреть? Только за деньги?
    • 0
      тоже самое, присоединяюсь к вопросу
    • 0
      Вы, наверное, не тот курс смотрите. Этот курс бесплатный. Он просто ещё не начался.
      • 0
        Сегодня должен был уже начаться. Обычно в 16 часов по Москве курсы на Курсере уже стартуют. А с этим какой-то затык.
        • 0
          Должен, но что-то всё никак не начнется. Может быть забыли?
    • 0
      Запустили. Можно заходить. Жаль, что на русском.
  • 0
    Скажите, если собираюсь смотреть курс не проходя задания, имеет ли смысл смотреть на Coursera или лучше уже смотреть оригинальный курс Специализация по машинному обучению на Coursera от Физтеха и Яндекса? Если что-то новое в курсе на Coursera?

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

Самое читаемое Разработка