Недавно OpenDataScience и Mail.Ru Group провели открытый курс машинного обучения. В прошлом анонсе много сказано о курсе. В этой статье мы поделимся материалами курса, а также объявим новый запуск.
UPD: теперь курс — на английском языке под брендом mlcourse.ai со статьями на Medium, а материалами — на Kaggle (Dataset) и на GitHub.
Кому не терпится: новый запуск курса — 1 февраля, регистрация не нужна, но чтоб мы вас запомнили и отдельно пригласили, заполните форму. Курс состоит из серии статей на Хабре (Первичный анализ данных с Pandas — первая из них), дополняющих их лекций на YouTube-канале, воспроизводимых материалов (Jupyter notebooks в github-репозитории курса), домашних заданий, соревнований Kaggle Inclass, тьюториалов и индивидуальных проектов по анализу данных. Главные новости будут в группе ВКонтакте, а жизнь во время курса будет теплиться в Slack OpenDataScience (вступить) в канале #mlcourse_ai.
План статьи
- Чем наш курс отличается от других
- Материалы курса
- Подробнее о новом запуске
Чем курс отличается от других
1. Не для новичков
Часто вам будут говорить, что от вас ничего не требуется, через пару месяцев вы станете экспертом анализа данных. Я все еще помню фразу Andrew Ng из его базового курса "Machine Learning": «вы не обязаны знать, что такое производная, и сейчас вы разберетесь, как работают алгоритмы оптимизации в машинном обучении». Или «вы уже почти что эксперт анализа данных» и т.д. При всем безмерном уважении к профессору — это жесткий маркетинг и желтуха. Вы не разберетесь в оптимизации без знания производных, основ матана и линейной алгебры! Скорее всего вы не станете даже Middle Data Scientist, пройдя пару курсов (включая наш). Легко не будет, и больше половины из вас отвалится примерно на 3-4 неделе. Если вы wannabe, но не готовы с головой погрузиться в математику и программирование, видеть красоту машинного обучения в формулах и добиваться результатов, печатая десятки и сотни строк кода — вам не сюда. Но надеемся, вам все же сюда.
В связи с вышесказанным мы указываем порог вхождения — знание высшей математики на базовом (но не плохом) уровне и владение основами Python. Как подготовиться, если этого у вас пока нет, подробно описано в группе ВКонтакте и тут под спойлером, чуть ниже. В принципе можно пройти курс и без математики, но тогда см. следующую картинку. Конечно, насколько дата саентисту нужно знать математику — это холивар, но мы тут на стороне Андрея Карпатого, Yes you should understand backprop. Ну и вообще без математики в Data Science — это почти как сортировать пузырьком: задачу, может, и решишь, но можно лучше, быстрее и умнее. Ну и без математики, конечно, не добраться до state-of-the-art, а за ним следить очень увлекательно.
Математика
- Если быстро, то можно пройтись по конспектам из специализации Яндекса и МФТИ на Coursera (делимся с разрешения).
- Если основательно подходить к вопросу, хватит вообще одной ссылки на MIT Open Courseware. На русском классный источник — Wiki-страница курсов ФКН ВШЭ. Но я бы взял программу МФТИ 2 курса и прошелся по основным задачникам, там минимум теории и много практики.
- И конечно, ничто не заменит хороших книг (тут можно и программу ШАДа упомянуть):
- Математический анализ — Кудрявцев;
- Линейная алгебра — Кострикин;
- Оптимизация — Boyd (англ.);
- Теория вероятностей и матстатистика — Кибзун.
Python
- Быстрый вариант — браузерные тьюториалы а-ля CodeAcademy, Datacamp и Dataquest, тут же могу указать свой репозиторий.
- Основательный — например, мэйловский курс на Coursera или MIT-шный курс "Introduction to Computer Science and Programming Using Python".
- Продвинутый уровень — курс питерского Computer Science Center.
2. Теория vs. Практика Теория и Практика
Курсов по машинному обучению полно, есть действительно классные (как специализация «Машинное обучение и анализ данных»), но многие сваливаются в одну из крайностей: либо слишком много теории (PhD guy), либо, наоборот, практика без понимания основ (data monkey).
Мы ищем оптимальное соотношение: у нас много теории в статьях на Хабре (показательна 4-я статья про линейные модели), мы пытаемся ее преподнести максимально понятно, на лекциях излагаем еще более популярно. Но и практики море — домашние задания, 4 соревнования Kaggle, проекты… и это еще не все.
3. Живое общение
Чего не хватает в большинстве курсов — так это живого общения. Новичкам порой нужен всего один короткий совет, чтобы сдвинуться с места и сэкономить часы, а то и десятки часов. Форумы Coursera обычно к какому-то моменту вымирают. Уникальность нашего курса — активное общение и атмосфера взаимоподдержки. В Slack OpenDataScience при прохождении курса помогут с любым вопросом, чат живет и процветает, возникает свой юмор, кто-то кого-то троллит… Ну а главное, что авторы домашних заданий и статей — там же в чате — всегда готовы помочь.
4. Kaggle в действии
Из паблика ВКонтакте «Мемы про машинное обучение для взрослых мужиков».
Соревнования Kaggle — отличный способ быстро прокачаться в практике анализ данных. Обычно в них начинают участвовать после прохождения базового курса машинного обучения (как правило, курса Andrew Ng, автор, безусловно, харизматичен и прекрасно рассказывает, но курс уже сильно устарел). У нас в течение курса будет предложено поучаствовать аж в 4 соревнованиях, 2 из них — часть домашнего задания, надо просто добиться определенного результата от модели, а 2 других — уже полноценные соревнования, где надо покреативить (придумать признаки, выбрать модели) и обогнать своих товарищей.
5. Бесплатно
Ну тоже немаловажный фактор, чего уж там. Сейчас на волне распространения машинного обучения вы встретите немало курсов, предлагающих обучить вас за весьма кругленькую компенсацию. А тут все бесплатно и, без ложной скромности, на очень достойном уровне.
Материалы курса
Здесь мы вкратце опишем 10 тем курса, чему они посвящены, почему без них не может обойтись курс базового машинного обучения, и что нового мы внесли.
Тема 1. Первичный анализ данных с Pandas. Статья на Хабре
Хочется сразу начать с машинного обучения, увидеть математику в действии. Но 70-80 % времени работы над реальным проектом — это возня с данными, и тут Pandas очень хорош, я его использую в работе практически каждый день. В статье описываются основные методы Pandas для первичного анализа данных. Затем мы анализируем набор данных по оттоку клиентов телеком-оператора и пытаемся «прогнозировать» отток без всякого обучения, просто опираясь на здравый смысл. Недооценивать такой подход ни в коем случае нельзя.
Тема 2. Визуальный анализ данных c Python. Статья на Хабре
Роль визуального анализ данных сложно переоценить — так создаются новые признаки, ищутся закономерности и инсайты в данных. К.В. Воронцов приводит пример, как именно благодаря визуализации догадались, что при бустинге классы продолжают «раздвигаться» по мере добавления деревьев, и потом уже этот факт был доказан теоретически. В лекции мы рассмотрим основные типы картинок, которые обычно строят для анализа признаков. Также обсудим то, как вообще подглядеть в многомерное пространство — c помощью алгоритма t-SNE, который порой помогает рисовать вот такие елочные игрушки.
Тема 3. Классификация, деревья решений и метод ближайших соседей.
Статья на Хабре
Тут мы начнем говорить про машинное обучение и про два простых подхода к решению задачи классификации. Опять же, в реальном проекте надо начинать с самых простых подходов, и именно деревья решений и метод ближайших соседей (а также линейные модели, следующая тема) стоит попробовать в первую очередь после эвристик. Затронем важный вопрос оценки качества моделей и кросс-валидацию. Подробно обсудим плюсы и минусы деревьев и метода ближайших соседей. Статья длинная, но в особенности деревья решений заслуживают внимания — именно на их основе выстроены случайный лес и бустинг — алгоритмы, которые вы наверное будете больше всего использовать на практике.
Тема 4. Линейные модели классификации и регрессии.
Статья на Хабре
Эта статья уже будет размером с небольшую брошюру и недаром: линейные модели — самый широко используемый на практике подход к прогнозированию. Эта статья — как наш курс в миниатюре: много теории, много практики. Мы обсудим, каковы теоретические предпосылки метода наименьших квадратов и логистической регрессии, а также в чем плюсы практического применения линейных моделей. Отметим при этом, что излишнего теоретизирования не будет, подход к линейным моделям в машинном обучении отличается от статистического и эконометрического. На практике мы применим логистическую регрессию уже ко вполне реальной задаче идентификации пользователя по последовательности посещенных сайтов. После четвертого домашнего задания отсеется много народу, но если вы его все-таки сделаете, то будете иметь уже очень неплохое представление о том, какие алгоритмы используются в production-системах.
Тема 5. Композиции: бэггинг, случайный лес. Статья на Хабре
Тут опять и теория интересная, и практика. Мы обсудим то, почему для моделей машинного обучения работает «мудрость толпы», и много моделей работают лучше, чем одна, даже лучшая. А на практике покуртим случайный лес (композицию многих деревьев решений) — то, что стоит попробовать, если вы не знаете, какой алгоритм выбрать. Подробно обсудим многочисленные плюсы случайного леса и области его применения. И, как всегда, не без недостатков: все же есть ситуации, когда линейные модели будут работать лучше и быстрее.
Тема 6. Построение и отбор признаков. Приложения в задачах обработки текста, изображений и геоданных. Статья на Хабре, лекция про регрессию и регуляризацию.
Тут план статей и лекций немного расходится (всего один раз), уж слишком велика четвертая тема линейных моделей. В статье описаны главные подходы к извлечению, преобразованию и построению признаков для моделей машинного обучения. Вообще это занятие, построение признаков, — наиболее творческая часть работы Data Scientist-а. И конечно, важно знать, как работать с различными данными (текстами, картинками, геоданными), а не просто с готовым датафреймом Pandas.
На лекции опять обсудим линейные модели, а также основную технику настройки сложности ML-моделей — регуляризацию. В книге "Deep Learning" даже ссылаются на одного известного товарища (лень лезть за пруф-линком), который утверждает, что вообще «все машинное обучение — суть регуляризация». Это, конечно, преувеличение, но на практике, чтобы модели хорошо работали, их надо настраивать, то есть именно правильно использовать регуляризацию.
Тема 7. Обучение без учителя: PCA, кластеризация. Статья на Хабре
Тут мы переходим к обширной теме обучения без учителя — это когда есть данные, а вот целевого признака, который хотелось бы прогнозировать — вот его нет. Таких неразмеченных данных пруд пруди, и надо уметь и из них извлекать пользу. Мы обсудим только 2 типа задач — кластеризацию и снижение размерности. В домашнем задании вы будете анализировать данные с акселерометров и гироскопов мобильных телефонов и пытаться по ним кластеризовать носителей телефонов, выделять типы активностей.
Тема 8. Обучение на гигабайтах c Vowpal Wabbit. Статья на Хабре
Теория тут — это разбор стохастического градиентного спуска, именно этот метод оптимизации позволил успешно обучать и нейронные сети, и линейные модели на больших обучающих выборках. Тут мы также обсудим, что делать, когда признаков становится уж слишком много (трюк с хэшированием значений признаков) и перейдем к Vowpal Wabbit — утилитке, с помощью которой можно за считанные минуты обучить модель на гигабайтах данных, да порой еще и приемлемого качества. Рассмотрим много приложений в различных задачах — классификации коротких текстов, а также категоризации вопросов на StackOverflow. Пока перевод именно этой статьи (в виде Kaggle Kernel) служит примером того, как мы будем подавать материал на английском на Medium.
Тема 9. Анализ временных рядов с помощью Python. Статья на Хабре
Тут обсудим различные методы работы с временными рядами: какие этапы подготовки данных необходимы для моделей, как получать краткосрочные и долгосрочные прогнозы. Пройдемся по различным типам моделей, начиная от простых скользящих средних и заканчивая градиентным бустингом. Также посмотрим на способы поиска аномалий во временных рядах и поговорим о достоинствах и недостатках этих способов.
Тема 10. Градиентный бустинг. Статья на Хабре
Ну и куда без градиентного бустинга… это и Матрикснет (поисковая машина Яндекса), и Catboost — новое поколение бустинга в Яндексе, и поисковик Mail.Ru. Бустинг решает все три основные задачи обучения с учителем — классификации, регрессии и ранжирования. И вообще его хочется назвать лучшим алгоритмом, и это близко к правде, но лучших алгоритмов не бывает. Но если у вас не слишком много данных (влезает в оперативную память), не слишком много признаков (до нескольких тысяч), и признаки разнородные (категориальные, количественные, бинарные, и т.д.), то, как показывает опыт соревнований Kaggle, почти наверное лучше всего в вашей задаче себя проявит градиентный бустинг. Поэтому недаром появилось столько крутых реализаций — Xgboost, LightGBM, Catboost, H2O...
Опять же, мы не ограничимся мануалом «как тюнить иксжбуст», а подробно разберемся в теории бустинга, а затем рассмотрим его на практике, в лекции дойдем и до Catboost. Тут заданием будет побить бейзлайн в соревновании — это даст неплохое представление о методах, работающих во многих практических задачах.
Подробнее о новом запуске
Курс стартует 5 февраля 2018 года. В течение курса будут:
- живые лекции в московском офисе Mail.Ru Group, по понедельникам с 5 февраля, 19.00-22.00. Видео-записи лекций прежние (youtube), но к ним будут комментарии, дополнения и улучшения;
- статьи на Хабре прежние, вот первая. В статьях будут объявляться актуальные домашние задания и дедлайны по ним, информация будет дублироваться в группе ВКонтакте и в канале #mlcourse_ai в Slack OpenDataScience;
- соревнования, проекты, тьюториалы и прочие активности, описаны они в этой статье и в репозитории курса;
- также раз в неделю будем публиковать статьи на английском на Medium. Будет похоже на этот Kaggle Kernel про Vowpal Wabbit, только на Medium;
- с 23 апреля по 15 июля планируется совместное прохождение стэнфордского курса cs231n по нейронным сетям (подробности — в pinned items в канале #class_cs231n слэка ODS). Это будет уже второй запуск, сейчас как раз проходим, курс великолепен, домашние задания сложные, интересные и очень полезные.
Как подключиться к курсу?
Формальной регистрации не нужно. Просто делайте домашки, участвуйте в соревнованиях, и мы учтем вас в рейтинге. Тем не менее, заполните этот опрос, оставленный e-mail будет вашим ID во время курса, заодно напомним о старте ближе к делу.
Площадки для обсуждения
- канал #mlcourse_ai в Slack OpenDataScience. Основное общение здесь, можно задать любой вопрос. Главный козырь — авторы статей и домашних заданий тоже в этом канале, готовы отвечать, помогать. Но и флуда немало, так что смотрите pinned items перед тем как задать вопрос;
- группа ВКонтакте. Стена будет удобным местом для официальных объявлений.
Удачи! Напоследок хочу сказать, что все получится, главное — не бросайте! Вот это «не бросайте» вы сейчас пробежали взглядом и скорее всего даже не заметили. Но задумайтесь: именно это главное.