Открытый вебинар «Анализ текстовых данных: тематическое моделирование комментариев Вконтакте» 17.02.2020 в 20:00 | OTUS
Запланируйте обучение с выгодой в Otus!
-15% на все курсы до 20.11 Забрать скидку! →
Выбрать курс
Проходил 17 февраля 2020 года в 20:00

Открытый вебинар
Анализ текстовых данных: тематическое моделирование комментариев Вконтакте

Открытый вебинар онлайн

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

Запись

О курсе

Machine Learning. Professional
105 000 ₽
Начало в марте 2025 года

Вы последовательно освоите современные инструменты анализа данных и сможете на профессиональном уровне создавать модели машинного обучения. Для закрепления навыков с каждым алгоритмом вы будете проводить полный pipeline работ от подготовки датасета до анализа результатов и подготовки к продакшену.
Практики и знаний, которые вы получите, будет достаточно, чтобы самостоятельно решать задачи классического ML и претендовать на Junior+ и Middle позиции Data Scientist.

Программа курса
Модуль 1
Продвинутые методы машинного обучения: обучение с учителем
Модуль 2
Продвинутые методы машинного обучения: обучение без учителя
Модуль 3
Введение в Deep Learning
Модуль 4
Сбор данных. Анализ текстовых данных
Модуль 5
Анализ временных рядов
Модуль 6
Рекомендательные системы
Модуль 7
Проектная работа
Продвинутые методы машинного обучения: обучение с учителем
Первый модуль познакомит вас с различными продвинутыми моделями машинного обучения для задач обучения с учителем (регрессия и классификация), начиная от классических методов деревьев решений и заканчивая продвинутыми методами градиентного бустинга.
Программа курса. Повторение основных концепций машинного обучения на примере задачи регрессии
познакомиться;
обсудить программу курса;
повторить основные концепции машинного обучения на практическом примере.
Метод градиентного спуска
рассмотреть метод градиентного спуска и его применение при обучении моделей машинного обучения.
Повторение основных понятий задачи классификации на практике: EDA, cross-validation, метрики качества
повторить основные понятия задачи классификации.
Деревья решений
рассмотреть программу: классификация и регрессия с помощью деревьев решений;
рассмотреть алгоритмы: алгоритм CART, выбор оптимального сплита, суррогатный сплит;
рассмотреть реализацию в sklearn.
Ансамбли моделей
разобрать методы ансамблирования;
рассмотреть случайный лес, бэггинг, стэкинг, блэндинг.
Градиентный бустинг
познакомиться с идеей бустинга;
познакомиться с алгоритмом Gradient Boosting.
Домашние задания: 1
ДЗ
Чем лучше бустить? Тестируем алгоритмы бустинга в бою. . Часть 1. EDA
- Выберите любой интересующий вас датасет по классификации или регрессии (можно взять из репозитория https://archive.ics.uci.edu/ml/datasets.php, еще неплохие и востребованные на практике варианты - предсказание оттока пользователей https://www.kaggle.com/blastchar/telco-customer-churn или предсказание Customer Livetime Value (CLV или LTV) - https://www.kaggle.com/pankajjsh06/ibm-watson-marketing-customer-value-data
- По выбранному датасету проведите EDA, познакомьтесь с признаками, посмотрите зависимости и т.д.




Часть 2. Preprocessing & Feature Engineering
- Хотя цель этого задания - посмотреть на работу алгоритмов, тем не менее пропускать препроцессинг нельзя :)
- Так что переведите категориальные переменные в уникальные лейблы при помощи LabelEncoder, попробуйте добавить новые переменные и выкинуть лишние и, наконец, разбейте данные на train-test.




Часть 3. Who's the mightiest of them all?
- Постройте 4 варианта градиентного бустинга, используя значения гиперпараметров “из коробки”: реализация из sklearn, XGBoost, CatBoost, LightGBM
- Проверьте качество на отложенной выборке, кто пока лидирует?
- Теперь проведите настройку гиперпараметров моделей на кросс-валидации, можно настраивать только самые основные гиперпараметры - число итераций бустинга, max_features, subsample и т.д.
- Снова проверьте качество уже настроенных моделей. Кто в итоге победил?
Метод опорных векторов
познакомиться с SVM;
разобрать случаи Hard-Margin SVM и Soft-Margin SVM;
познакомиться с идеей ядерных функция (kernel functions) и спрямляющих пространств;
познакомиться с kernel SVM.
21 ноября, 20:00 — 21:30
Лектор: Андрей Канашов
Продвинутые методы машинного обучения: обучение без учителя
Второй модуль посвящен алгоритмам для задачи обучения без учителя, в нем вы познакомитесь с различными способами кластеризации, такими как алгоритм k средних и DBSAN, методами снижения размерности и методами работы с новым типом данных - графами.
Методы уменьшения размерности
рассмотреть метод главных компонент (Principle component analysis);
рассмотреть метод t-SNE;
рассмотреть примеры визуализации с помощью метода t-SNE.
26 ноября, 20:00 — 21:30
Лектор: Андрей Канашов
Обучение без учителя. K-means
рассмотреть обучение без учителя;
рассмотреть алгоритмы кластеризации, области применения;
оценить качество обучения, ограничения и подбор алгоритма для задачи.
28 ноября, 20:00 — 21:30
Лектор: Евгений Романов
Обучение без учителя. Иерархическая кластеризация. DB-Scan
рассмотреть иерархическую кластеризацию;
DB-Scan;
рассмотреть спектральную кластеризацию.
3 декабря, 20:00 — 21:30
Лектор: Евгений Романов
Домашние задания: 1
ДЗ
Как узнать свою аудиторию? Построение различных вариантов кластеризаций и интерпретация результатов. . Часть 1. EDA и Preprocessing.
1. Скачайте данные по клиентам немецкого банка: https://www.kaggle.com/uciml/german-credit;
2. Проведите EDA, чтобы познакомиться с признаками;
3. Преобразуйте все признаки в числовые подходящими методами;
4. Приведите все данные к одному масштабу (а заодно поясните, почему это необходимая операция при кластеризации).




Часть 2. Моделирование.
1. Постройте три варианта кластеризации: k-means, hierarhical и DBSCAN, подберите оптимальное количество кластеров для каждого метода при помощи Elbow method и Silhouette plot;
2. Также воспользуйтесь различными вариантами сжатия признакового пространства (PCA, UMAP, tSNE) и визуализируйте результаты кластеризации на двумерной плоскости.




Часть 3. Интерпретация.
1. Теперь ваша задача - попытаться проинтерпретировать получившиеся кластеры, начните с простого расчета средних значений признаков для каждого из кластеров, есть ли интересные закономерности?
2. Теперь постройте boxplot-ы для каждого признака, сгруппировав значения по кластерам, по каким признакам заметно наибольшее отличие кластеров друг от друга? Можно ли их интерпретировать?
Поиск аномалий в данных
рассмотреть статистические методы нахождения выбросов;
рассмотреть вероятностные методы.
5 декабря, 18:00 — 19:30
Лектор: Мария Тихонова
Домашние задания: 1
ДЗ
Как найти стог сена в иголке? Практический проект по построению системы поиска аномалий. . 1. Скачайте датасет с https://www.kaggle.com/mlg-ulb/creditcardfraud#creditcard.csv
2. Проведите небольшой EDA (гистограммы и описательные статистики - обязательно).
3. Воспользуйтесь процентом аномалий, подсчитанным по переменной Class, как "экспертной оценкой" загрязненности нашего датасета.
4. Попробуйте построить различные модели и алгоритмы, разобранные на занятии, используя полученную экспертную оценку для настройки параметров.
5. Воспользуйтесь стандартными методами оценки качества бинарной классификации (особенно хорошо подойдёт classification report и confusion matrix), и, используя предсказания моделей и переменную Class, проверьте, действительно ли модели справляются со своей задачей и насколько хорошо они это делают.
6. При помощи tSNE и/или UMAP, постройте сжатое представление исходных данных и проверьте, действительно ли аномалии лежат достаточно далеко от основной массы точек.
Практическое занятие - Построение end-to-end пайплайнов и сериализация моделей
построить end-to-end пайплайнов и сериализировать модели.
10 декабря, 20:00 — 21:30
Лектор: Игорь Стурейко
Алгоритмы на графах
оперировать основными понятия теории графов;
узнавать задачи, связанные с графами;
применять networkx для работы с графами;
вычислять центральности;
применять community detection.
12 декабря, 20:00 — 21:30
Лектор: Раиль Сулейманов
Домашние задания: 1
ДЗ
Когда-нибудь это закончится? Симуляция распространения болезни. Работа с NetworkX. Набор данных представляет собой основные маршруты авиаперелетов в США за один месяц 2008-го года. В качестве модели распространения инфекции предлагается использовать SI (susceptible-infected) модель, в которой каждый аэропорт имеет два возможных состояния - “здоровый” или “зараженный”. Здоровый аэропорт может заразиться с некоторой вероятностью p (infection probability), если к нему прилетает самолет из зараженного города. Инфекция начинает распространение из некоторого стартового аэропорта и заканчивает распространение, когда все перелеты из датасета завершены.




Часть 1. Пишем симуляцию.
- Напишите функцию для симуляции одного прохода по всему датасету и распространения инфекции. Функция должна принимать на вход стартовый город, в котором изначально началась инфекция и вероятность распространения инфекции p. На выходе функция должна возвращать словарь, в котором ключом будет время заражения аэропорта, значением - название аэропорта. В теле функции вам нужно написать проход по всему датасету (имеет смысл использовать itertuples), где вы будете проверять, является ли текущий рейс “заразным” и если да - с вероятностью p заражать новый аэропорт.
- В качестве стартовой ноды/аэропорта для симуляций можно использовать Allentown (node_id = 0).




Часть 2. Как инфекционность (вероятность заражения) болезни влияет на скорость распространения?
- Давайте посмотрим, насколько заразной должна быть болезнь, чтобы заразить все аэропорты в сети. Для каждой из вероятностей p=[0.01, 0.05, 0.1, 0.5, 1.] прогоните по 10 симуляций распространения, каждый раз сохраняя результаты.
- Для каждых 12 часов симуляции посчитайте, какой средний процент аэропортов от общего их числа, был заражен к этому моменту времени. Постройте графики числа зараженных городов в зависимости от времени для каждой из вероятностей.




Часть 3. Может ли информация о сети помочь предсказать, кто будет заражен?
- Настало время поработать с NetworkX. По имеющемуся датасету вам нужно построить ненаправленный граф всех аэропортов, используя относительное число перелетов между соседними аэропортами в качестве веса ребра. Например, если из аэропорта А в аэропорт Б суммарно есть 5 рейсов, из Б в А 10 рейсов, а всего в сети 150 перелетов, то вес ребра между А и Б должен быть равен (5+10)/150 = 0.1.
- Прогоните вашу симуляцию 50 раз, используя p=0.5 и стартовый аэропорт Allentown, каждый раз сохраняя результаты. Используя данные симуляций посчитайте медианное время до заражения каждого города.
- Теперь используя построенный вами граф, для каждого города посчитайте его коэффициент кластеризации (nx.clustering), степень (nx.degree) и центральность (nx.betweenness_centrality).
- Наконец, постройте scatter-plot-ы для медианного времени заражения и каждой из рассчитанных выше метрик. Также посчитайте коэффициент корреляции Спирмана между этими показателями и попробуйте проинтерпретировать полученные результаты. Какая из метрик графа сильнее всего скоррелирована со временем заражения? Почему?




https://www.kaggle.com/datasets/vikalpdongre/us-flights-data-2008
Алгоритмы на графах: продолжение
научиться вычислять признаки для всего графа и его рёбер/вершин по отдельности;
научиться решать задачи машинного обучения на графах.
17 декабря, 20:00 — 21:30
Лектор: Раиль Сулейманов
Введение в Deep Learning
В этом модуле мы коснёмся методов Deep Learning и работы с нейронными сетями. Вы узнаете принципы работы и обучения нейронных сетей, а также освоите нейросетевые архитектуры для работы с изображениями (сверточные нейросети) и последовательностями (рекуррентные нейросети).
Введение в нейросети
познакомиться с моделью искусственного нейрона;
познакомиться с булевыми операциями над нейроном;
разобрать как устроена нейронная сеть.
19 декабря, 20:00 — 21:30
Лектор: Дмитрий Колесников
PyTorch (часть 1)
познакомиться с фреймворком для глубокого обучения PyTorch и его архитектурой;
разобраться, как устроены тензоры, какие операции над ними поддерживаются;
изучить, как работать с данными в PyTorch, как использовать объекты dataset и dataloader;
создать свою нейронную сеть, и обучить ее решать задачу классификации рукописных цифр на примере датасета MNIST.
24 декабря, 20:00 — 21:30
Лектор: Антон Витвицкий
Продвинутые методы оптимизации, backpropagation и обучение нейронных сетей
разобрать продвинутые градиентные методы оптимизации;
повторить правило chain rule;
рассмотреть алгоритм backpropagation и принцип обучения нейронной сети.
26 декабря, 20:00 — 21:30
Лектор: Дмитрий Гайнуллин
Домашние задания: 1
ДЗ
Практика по PyTorch. Используя PyTorch:
1) Создать и обучить регрессионную модель, которая аппроксимирует значение функции sin(x + 2*y)*exp(-(2*x + y)^2) на диапазоне значений [-10;10] по х и у.
2) В качестве обучающей выборки необходимо сгенерировать 20000 точек случайным образом.
3) Разделить получившийся датасет на train / test / val в отношениях 70% / 15% / 15%, соответственно.




Результаты:

a) Посчитать метрику Mean Square Error(MSE) на test.

b) Нарисовать график, в котором сравнивается истинная функция и ее аппроксимированный вариант (предсказываемый моделью).
Борьба с переобучение нейросетей, взрыв и затухание градиентов
вспомнить проблему переобучения и методы ее решения для нейросетей (L1/L2 regularization, dropout early stopping);
обсудить проблему взрыва и затухания градиентов и пути ее решения (Xavier/He-initialization, gradient clipping, различные функции активации).
9 января, 20:00 — 21:30
Лектор: Дмитрий Гайнуллин
PyTorch (часть 2)
углубиться в PyTorch, и рассмотреть отличия версии 2.x от 1.x;
кратко пройтись по его модулям;
проверить на примерах компиляцию моделей torch.compile(), и убедиться, действительно ли PyTorch 2.x работает быстрее 1.x;
на примере MNIST / CIFAR рассмотреть другие архитектуры сетей (CNN);
попробовать также Transfer Learning: MNIST -> CIFAR -> MNIST;
обучить нейросеть задаче регрессии.
14 января, 20:00 — 21:30
Лектор: Антон Витвицкий
Сверточные сети (Convolutional Neural Networks)
изучить понятие свертки и архитектуру сверточных нейронный сетей (CNN);
разобрать связанные понятия (pooling, stride, padding, atrous convolution);
обсудить применение CNN в компьютерном зрении;
рассмотреть продвинутые CNN архитектуры.
16 января, 20:00 — 21:30
Лектор: Дмитрий Колесников
Домашние задания: 1
ДЗ
Классификация облаков. - сформировать нейронную сверточную сеть;
- обучить сеть на представленных данных;
- оценить качество модели. В качестве критерия используйте [Dice coefficient](https://en.wikipedia.org/wiki/Sørensen–Dice_coefficient).
- датасет для обучения модели: https://www.kaggle.com/competitions/understanding_cloud_organization/data
Рекуррентные сети
разобрать, что такое рекуррентная нейронная сеть;
познакомиться с видами реккурентных сетей;
рассмотреть классификацию и генерацию текста реккурентной сетью.
21 января, 20:00 — 21:30
Лектор: Дмитрий Гайнуллин
Сбор данных. Анализ текстовых данных
В этом модуле вы научитесь работать с одним из самых распространенных типов данных - текстом.

Мы разберём различные способы предобработки текста, которые позволяют использовать его в качестве признаков для моделей машинного обучения.

Мы изучим такие полезные задачи, как тематическое моделирование, распознавание именованных сущностей (NER) и работу с векторными представлениями слов.

Также вы научитесь заниматься парсингом данных, который позволит вам собирать и создавать свои собственные уникальные датасеты для анализа.
Сбор данных
рассмотреть открытые источники данных;
использовать API, парсинг;
создать свои датасеты.
23 января, 20:00 — 21:30
Лектор: Андрей Коняев
Предобработка и токенизация
обсудить задачу обработки текста;
рассмотреть библиотеки для работы с русским и английским языками.
28 января, 20:00 — 21:30
Лектор: Андрей Коняев
Домашние задания: 1
ДЗ
Откуда берутся датасеты? Практический проект по сбору данных и работе с текстами. Часть 1. Парсинг.

По аналогии с занятием, возьмите интересующий вас сайт, на котором можно пособирать какие-то данные (и при этом API не предоставляется).




Идеальный датасет должен иметь текстовое описание некоторого объекта и некоторую целевую переменную, соответствующую этому объекту. Например:

- Сайт новостей: текстовое описание - сама новость, целевая переменная - количество просмотров новости (можно поделить на число дней с момента даты публикации, чтобы получить “среднее число просмотров в день”).
- Сайт с товарами/книгами/фильмами: текстовое описание товара/книги/фильма + средний рейтинг в качестве целевой переменной.
- Блоги - тексты заметок + число просмотров.
- И любые другие ваши идеи, которые подходят под такой формат.




Напишите свой парсер, который будет бегать по страничкам и автоматически что-то собирать.




Не забывайте, что парсинг - это ответственное мероприятие, поэтому не бомбардируйте несчастные сайты слишком частыми запросами (можно ограничить число запросов в секунду при помощи time.sleep(0.3), вставленного в теле цикла)




Часть 2. NLP.

1. Разбейте собранные данные на train/test, отложив 20-30% наблюдений для тестирования.
2. Примените tf-idf преобразование для текстового описания. Используйте как отдельные токены, так и биграммы, отсейте стоп-слова, а также слова, которые встречаются слишком редко или слишком часто (параметры min/max_df), не забудьте убрать l2 регуляризацию, которая по умолчанию включена.
3. Если в вашем датасете целевая переменная непрерывная (например, среднее число просмотров в день), то воспользуйтесь линейной регрессией, если дискретная (положительный/отрицательный отзыв), то логистической.
4. Постройте регрессию с настройкой параметра регуляризации, оцените качество при помощи соответствующих задаче метрик.
5. Визуализируйте получившиеся коэффициенты регрессии (возьмите топ-50 слов)
Проинтерпретируйте результаты.




P.S. Если с парсингом не задалось или данных собралось слишком мало - не отчаивайтесь, главное, что ваш парсер собрал хоть что-то! А для второй части задания можно скачать данные по отзывам на фильмы с сайта IMDB (https://www.kaggle.com/lakshmi25npathi/imdb-dataset-of-50k-movie-reviews), в которых для каждого отзыва поставлена семантическая оценка - "позитивный" или "негативный".
Векторные представления слов, работа с предобученными эмбеддингами
рассмотреть векторные представления слов;
работа с предобученными эмбеддингами.
30 января, 20:00 — 21:30
Лектор: Дмитрий Гайнуллин
Понятие языковой модели, RNN для работы с текстом
изучить применение рекуррентных архитектур для работы с текстами.
4 февраля, 20:00 — 21:30
Лектор: Мария Тихонова
Архитектура трансформер
рассмотреть архитектуру Transformer;
познакомиться с идеей attention mechanism.
6 февраля, 20:00 — 21:30
Лектор: Андрей Коняев
Transfer Learning. Архитектура BERT
познакомиться с идеей transfer learning и идеей pretraining+finetuning подхода для решения NLP задач;
изучить модель BERT.
11 февраля, 20:00 — 21:30
Лектор: Мария Тихонова
Домашние задания: 1
ДЗ
Почувствуй мощь трансформеров в бою. В качестве данных выберете возьмите датасет RuCola для русского языка https://github.com/RussianNLP/RuCoLA (в качестве train возьмите in_domain_train.csv, а в качестве теста in_domain_dev.csv)

Разбейте in_domain_train на train и val

Зафайнтьюньте и протестируйте RuBert или RuRoBerta на данной задаче (можно взять любую предобученную модель руберт с сайта huggingface. Например, ruBert-base/large https://huggingface.co/sberbank-ai/ruBert-base / https://huggingface.co/sberbank-ai/ruBert-large или rubert-base-cased https://huggingface.co/DeepPavlov/rubert-base-cased, ruRoberta-large https://huggingface.co/sberbank-ai/ruRoberta-large, xlm-roberta-base https://huggingface.co/xlm-roberta-base)




Возьмите RuGPT3 base или large и решите данное задание с помощью методов few-/zero-shot

1. переберите несколько вариантов затравок

2. протестируйте различное число few-shot примеров (0, 1, 2, 4)
Обучите и протестируйте модель RuT5 на данной задаче (пример finetun’а можете найти здесь https://github.com/RussianNLP/RuCoLA/blob/main/baselines/finetune_t5.py)


Сравните полученные результаты
Named Entity Recognition
рассмотреть векторные представления слов, word2vec;
рассмотреть примеры задач NLP;
создать диалоговые системы.
13 февраля, 20:00 — 21:30
Лектор: Мария Тихонова
Тематическое моделирование
обсудить тематическое моделирование;
рассмотреть общую схему решения задач NLP.
18 февраля, 20:00 — 21:30
Лектор: Мария Тихонова
Анализ временных рядов
В этом модуле вы познакомитесь с еще одним распространенным типом данных - временными рядами.

Мы разберем как классические методы работы с временными рядами, включая ARIMA-модель, так и продвинутые способы извлечения признаков и применения машинного обучения.

Также мы научимся решать задачу кластеризации, используя временные ряды, на примере финансовых котировок.
Анализ временных рядов. Часть 1: Постановка задачи, простейшие методы. ARIMA-модель
рассмотреть: простейшие методы, экспоненциальное сглаживание, семейство ARIMA.
27 февраля, 20:00 — 21:30
Лектор: Алексей Кисляков
Анализ временных рядов. Часть 2: Извлечение признаков и применение моделей машинного обучения. Автоматическое прогнозирование
извлечь признаки и применение моделей машинного обучения;
рассмотреть автоматическое прогнозирование.
4 марта, 20:00 — 21:30
Лектор: Алексей Кисляков
Домашние задания: 1
ДЗ
Что день грядущий нам готовит? Построение прогноза временного ряда с использованием изученных методов. Подготовка:

1. Скачиваем данные по загруженности метро вот отсюда https://archive.ics.uci.edu/ml/datasets/Metro+Interstate+Traffic+Volume
2. Проводим базовый EDA, вам понадобятся только 4 столбца датасета - traffic_volume (наша целевая переменная), date_time, holiday (является ли день некоторым праздником) и temp (температура воздуха).
3. По результатам EDA убеждаемся, что в этом временном ряду во-первых, есть дубликаты, а во-вторых, нарушена равномерность временных интервалов, т.е. не все значения отстоят друг от друга на 1 час - дубликаты удаляем, а временные интервалы выравниваем и заполняем пропуски при помощи линейной интерполяции (подсказка - в этом вам помогут функции pd.date_range, и interpolate, пример можно найти здесь - https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.interpolate.html).




Моделирование:

Теперь, когда ряд выглядит более-менее адекватно, настало время прогнозировать. Нашей целью будет построить модель, которая способна прогнозировать загрузку метро на ближайшую неделю (т.е, так как данные у нас дневные, модель должна предсказывать на 24*7 точек вперёд).
1. Отложите последние две недели в датасете для тестирования вашей модели - на этих данных вы будете проверять финальное качество всех моделек.
2. Теперь у вас осталось еще много-много наблюдений во временном ряду, исходя из графиков, трендов и т.д., попробуйте предположить, какие исторические данные действительно будут релевантны для прогнозов текущих значений, возможно, предыдущие три года уже не так сильно влияют на следующую неделю и можно значительную часть данных просто выкинуть.
3. Генерируем дополнительные признаки из индекса, особенно нужен день недели и час дня.
4. Строим baseline прогноз - по тем данным, которые вы решили оставить для обучения модели, посчитайте средние значения по часам и по дням (вам поможет data.groupby(["weekday", "hour"])["traffic_volume"].mean() и используйте эти значения в качестве прогноза на отложенную выборку - посчитайте метрики качества, которые вы посчитаете нужными.
5. А теперь свободное творчество - попробуйте построить разные модели, которые мы с вами разбирали, и побить качество базового прогноза.




Несколько советов:

- для SARIMA модели имеет смысл указать недельную сезонность (т.е. 24*7), чтобы она учла падения по выходным;
- попробуйте использовать температуру воздуха, как признак, в этом случае можно отдельно спрогнозировать температуру (например, используя SARIMA), а затем воспользоваться этими предсказаниями, когда будете делать прогноз для отложенной части выборки.




6. Наконец, когда вы подберете модель, устраивающую вас по качеству на отложенной выборке, используйте эту выборку для построения прогноза на следующую неделю и попробуйте построить доверительные интервалы для этого прогноза.
7. Теперь вы круто разбираетесь в прогнозировании и временных рядах :)
Анализ временных рядов Часть 3: Кластеризация временных рядов (ищем связанные котировки акций)
рассмотреть кластеризацию временных рядов.
6 марта, 20:00 — 21:30
Лектор: Алексей Кисляков
Рекомендательные системы
В этом модуле мы будем работать с различными типами рекомендательных систем. Разберем постановку задачи, познакомимся с популярными метриками качества и основными видами моделей рекомендательных систем.

Также мы научимся работать с одной из самых популярных питоновских библиотек для рекомендательных систем.
Введение в рекомендательные системы
формализовать задачу рекомендации;
изучить типы данных и методы разбиения на обучающую и тестовую выборки;
выполнить вычисление метрик оценки качества;
обзор классов рекомендательных моделей.
11 марта, 20:00 — 21:30
Лектор: Вероника Иванова
Простые рекомендательные модели. Коллаборативная фильтрация
использовать эвристические модели в качестве бейзлайнов;
обсудить проблему холодного старта;
познакомиться с методами коллаборативной фильтрации;
построить модели userKNN, itemKNN.
13 марта, 20:00 — 21:30
Лектор: Вероника Иванова
Контентная фильтрация, гибридные подходы. Ассоциативные правила
рассмотреть контентную фильтрацию, гибридные подходы;
обсудить ассоциативные правила.
18 марта, 20:00 — 21:30
Лектор: Мария Тихонова
Методы матричной факторизации
познакомиться с методами матричной факторизации;
изучить алгоритмы SVD и ALS.
20 марта, 20:00 — 21:30
Лектор: Вероника Иванова
Практическое занятие по рекомендательным системам
рассмотреть методы улучшения работы SVD и ALS алгоритмов.
25 марта, 20:00 — 21:30
Лектор: Вероника Иванова
Домашние задания: 1
ДЗ
Памперсы или пиво? Практический проект по созданию рекомендательной системы. 1. Выберите любой понравившийся вам набор данных по ссылке https://nijianmo.github.io/amazon/index.html, стоит обратить внимание на раздел "Small" subsets for experimentation, где представлены не самые большие датасеты (чтобы и в память поместился, и считался недолго).
2. Проведите базовый EDA - распределения рейтингов, количество уникальных товаров и т.д.
3. Сделайте разбиение данных на train и test методом leave-one-out.
4. На основании вашего датасета постройте 2-3 рекомендательных модели, можно включить простой бейзлайн типа модели, рекомендующей самые популярные товары.
5. Оцените качество полученных рекомендаций по метрикам HR@10, MRR@10, NDCG@10, coverage.
6. Сделайте выводы о качестве моделей.
ML в Apache Spark
построить ML в Apache Spark.
27 марта, 20:00 — 21:30
Лектор: Вадим Заигрин
Проектная работа
Заключительный месяц курса посвящен проектной работе. Свой проект — это то, над чем интересно поработать слушателю. То, что можно создать на основе знаний, полученных на курсе. При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей.
Выбор темы и организация проектной работы
выбрать и обсудить тему проектной работы;
спланировать работу над проектом;
ознакомиться с регламентом работы над проектом.
1 апреля, 20:00 — 21:30
Лектор: Мария Тихонова
Домашние задания: 1
ДЗ
Проектная работа. 1) Выбрать тему, ориентируясь на собственные интересы, потребности, возможности и методы, изученные на курсе.
2) Собрать, проанализировать и предобработать данные.
3) Построить первые baseline модели.
4) (опционально) Поучаствовать в двух предзащитах. В свободном формате рассказать про то, что было сделано, обсудить ход работы.
5) Провести эксперименты с более углубленными методами, доработать модели, протестировать дополнительные гипотезы.
6) Сравнить и проанализировать полученные результаты.
7) Презентовать проект, рассказать о своем исследовании, что вы сделали, каких результатов добились.
Предзащита проектных работ №1
обсудить прогресс по проектной работе;
решить сложности, возникшие при ее выполнении.
3 апреля, 20:00 — 21:30
Лектор: Мария Тихонова
Предзащита проектных работ №2
обсудить прогресс по проектной работе;
решить сложности, возникшие при ее выполнении.
8 апреля, 20:00 — 21:30
Лектор: Мария Тихонова
Защита проектных работ
защитить проект и получить рекомендации экспертов;
узнать, как получить сертификат об окончании курса, как взаимодействовать после окончания курса с OTUS и преподавателями, какие вакансии и позиции есть для выпускников (опционально - в России и за рубежом) и на какие компании стоит обратить внимание.
10 апреля, 20:00 — 21:30
Лектор: Мария Тихонова

Преподаватель

Дмитрий Сергеев
Data Science Manager, Staff Data Scientist в ŌURA
Руководит европейской Data Science командой в компании ŌURA, выпускающей умные кольца.

Больше 10 лет профессионального и преподавательского опыта. Работает в HealthTech уже 5 лет, до этого занимался машинным обучением в gamedev компаниях. Имеет как прикладной технический, так и управленческий опыт, в том числе на позиции Head of Data Science в стартапе WeatherWell. Консультирует различные стартапы по внедрению машинного обучения и построению ML команд.

Преподавал в ЦМФ МГУ, ФНК ВШЭ, Aalto University. Руководил программами и читал лекции на различных онлайн курсах и платформах, таких как OTUS, ODS.ai и др.

Образование: MSc Computer Science Aalto University, ДПО ФКН ВШЭ, ЦМФ МГУ, Эконом-мат РЭУ им. Плеханова
Преподаватель курсов:
Черная пятница в Otus! ⚡️
Скидка 15% на все курсы до 20.11 →