Проходил 2 августа 2018 года в 20:00

Открытый вебинар Data Scientist
Наивный байесовский классификатор

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

На открытом вебинаре рассмотрим один из простейших генеративных классификаторов − наивный байесовский классификатор, в применении к задаче категоризации документов.

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

Можно просто смотреть, а можно выполнять заготовленный код для лучшего усвоения. Для этого понадобится скачать .ipynb ноутбук и настроить окружение: python3, jupyter notebook, scikit-learn, matplotlib.
Преподаватель
Максим Кретов

Запись

О курсе

Data Scientist
50 000 ₽
Начало в августе
  • Знание алгоритмов машинного обучения и понимание принципов их работы.
  • Освоение современных методов и инструментов анализа и обработки данных.
  • Умение проектировать архитектуру нейросетей, создавать предсказательные модели, работать с ограниченными датасетами, проводить статистические исследования, интерпретировать результаты по данным.
  • Способность извлекать из крупных массивов данных ценную информацию и эффективно ее использовать.
{% …
Программа курса
Модуль 1
Введение в машинное обучение
Модуль 2
Продвинутые алгоритмы машинного обучения
Модуль 3
Применение методов машинного обучения к разным типам данных (текст, рекомендации, графы, временные ряды)
Модуль 4
Нейронные сети и глубокое обучение
Модуль 5
Проектная работа
Введение в машинное обучение
В первом модуле разберем: задачи, которые решают методы машинного обучения; необходимые темы из математического анализа, линейной алгебры и теории вероятности; базовые инструменты анализа данных в python; простые методы машинного обучения (линейная регрессия, логистическая регрессия, lDA, наивный Байес)
Базовые инструменты анализа данных в Python.
Цели:
Участники узнают, какие задачи они смогут решать по окончании курса, научатся настраивать рабочее окружение и узнают функционал базовых библиотек для работы с данными в python.

Программа:
1. Обзор курса. Типы решаемых задач.
2. Окружение Python. Введение в Python, Numpy, Pandas, Sklearn. API Sklearn.
Домашние задания: 1
ДЗ
Работы с данными в библиотеках numpy и pandas и реализация библиотеки для сбора данных. см. файл Описание ДЗ.pdf
Необходимые понятия из мат. анализа и линейной алгебры
Цели:
Участники освоят весь необходмый для данного курса материал из линейной алгебры и математического анализа: научатся решать задачи на собсвенные числа и собственные вектора матриц, находить производные функций и матричных выражений и применять это для задач оптимизации функций, эффективно применять данные алгоритмы в python.


Программа:
1. Линейная алгебра: Вектор, матрица, определитель матрицы, обратная матрица, собственные числа и вектора, норма, разложения матрицы (по собственным векторам, SVD).
2. Мат. анализ: Производная, интеграл, производные матричных выражений, якобиан, дифференцирование сложной функции.
3. Оптимизация: выпуклая, поиск глобального экстремума.
4. Типы данных в Python и векторизация вычислений (примеры + время работы).
Необходимые понятия из теории вероятности
Цели:
Участники изучат необходимые для курса основы теории вероятности: случайная величина, основные виды распределений случайных величин, научатся считать мат. ожидание, дисперсию случайных величин.


Программа:
1. Теория вероятности: вероятность (частотная и Байесовская трактовки), случайные величины, примеры распределений, мат. ожидание и т.д.
2. Экспоненциальное семейство распределений.
3. Основы статистики.
4. Примеры на Python.
Визуализация
Цели:
Участники освоят основные библиотеки для визуализации данных в python, будут правильно выбирать виды графиков для визуализации данных разных типов.
Домашние задания: 1
ДЗ
Группировка и визуализация данных в Python + EDA. https://drive.google.com/file/d/1UgVyxmOumex9-gFTnX583KtCWCIdkWyQ/view?usp=sharing
Feature engineering
1. Отбор признаков.
2. Преобразование исходных данных в подходящий для модели формат.
3. Преобразование признаков для повышения точности модели.
4. Выбор части признаков.
Задача классификации. Метод ближайших соседей (kNN)
Алгоритм kNN. Влияние нормализации данных в kNN. Структуры данных для оптимизации kNN. Кросс валидация. Методы оценки качества алгоритмов классификации.
Линейная регрессия
Цели:
Участники научатся делать описательный анализ данных с помощью библиотеки pandas и визуализацию данных с помощью различных библиотек python (matplotlib, seaborn, plotly, bokeh)

Программа:
1. Линейная регрессия - метод наименьших квадратов
2. Вероятностная трактовка линейной регрессии
3. Полиномиальная регрессия
3. Регуляризация в линейной регрессии
Обучение с учителем. Логистическая регрессия
Реализации логистической регрессии с помощью метода стохастического градиентного спуска
Домашние задания: 1
ДЗ
Обучение с учителем. Логистическая регрессия.. См. homework.ipynb
Практическое занятие по темам, изученным в 1 модуле
Продвинутые алгоритмы машинного обучения
Метод опорных векторов
1. Метод опорных векторов(SVM), интерпретация.
2. Случай линейно неразделимых данных.
3. kernel trick, representer theorem, примеры ядер.
4. Пример SVM в sklearn.
Деревья решений
1. Классификация и регрессия с помощью деревьев решений.
2. Обзор алгоритмов. Алгоритм CART. Выбор оптимального сплита, суррогатный сплит.
3. Обзор реализации в sklearn.
Домашние задания: 1
ДЗ
Эксперименты с решающими деревьями. Подробное описание содержится в jupyter-ноутбуке с домашним заданием.
Обучение без учителя. K-means, EM алгоритм
Обучение без учителя. Алгоритмы кластеризации, области применения. K-means. Оценка качества обучения, ограничения и подбор алгоритма для задачи. Алгоритмы с lower-bound. EM алгоритм.
Домашние задания: 1
ДЗ
Обучение без учителя. Кластеризация. См. homework-clustering.ipynb

Реализовать один из алгоритмов кластеризации.
Применение готовых алгоритмов кластеризации к датасету с Kaggle
Иерархическая кластеризация, DB-Scan
1. Иерархическая кластеризация
2. DB-Scan.
3. Optics. Спектральная кластеризация.
Домашние задания: 1
ДЗ
Вывод EM-алгоритма. Произвести математический вывод EM-алгоритма, результат в jupyter-notebook.
Поиск выбросов в данных
Методы уменьшения размерности
1. Метод главных компонент (Principle component analysis).
2. Метод t-sne.
3. Примеры визуализации с помощью метода t-sne.
Домашние задания: 1
ДЗ
Уменьшение размерности датасета медицинской тематики. см. jupyter: homework
Ансамбли моделей.
1. Ансамблирование.
2. Случайный лес.
3. Бустинг, бэггинг, стекинг, блендинг.
Градиентный бустинг
1. Градиентный бустинг теория
2. Примеры библиотек: xgboost, catboost, lightgbm
3. Стекинг, блендинг
Домашние задания: 1
ДЗ
Применение бустинга для построения лучшей модели
Применение методов машинного обучения к разным типам данных (текст, рекомендации, графы, временные ряды)
Анализ текстовых данных. Часть 1
1. Сбор данных из открытых источников.
2. Очистка данных, подготовка данных для анализа.
3. Задача обработки текста. Введение, обзор задач, токенизация, лемматизация. TF-IDF.
4. Обзор библиотек для Python для работы с русским и английским языками.
Анализ текстовых данных. Часть 2
1. Повторение "основы текстовой аналитики"
2. Тематическое моделирование
3. Общая схема решения задач NLP
4. Обсуждения домашнего задания
Домашние задания: 1
ДЗ
Реализация процесса сбора данных через API. Реализация процесса сбора данных через API.
Преобразование текста, подготовка текста для анализа.
Применение машинного обучения для предсказания характеристик пользователей.
Анализ текстовых данных. Часть 3. практическое занятие
векторные представления слов, примеры задач NLP, создание диалоговых систем
Домашние задания: 1
ДЗ
Избавление от полисемии в предобученном W2V.
Рекомендательные системы
1. Коллаборативная фильтрация основанная на схожести пользователей и товаров.
2. Коллаборативная фильтрация основанная на факторизации матриц.
3. Проблема "холодного старта", контентная фильтрация, гибридные подходы.
4. Ассоциативные правила.
5. Метрики оценки качества рекомендательной системы.
Домашние задания: 1
ДЗ
Сравнение разных алгоритмов рекомендательных систем. Работа с датасетом MovieLens

https://grouplens.org/datasets/movielens/

См книгу
Python for Data Analysis, Wes McKinney
2. Introductory Examples, MovieLens 1M Data Set (стр. 26)

1. Оценить количество фильмов, пользователей и оценок
2. Оценить распределения (предлагается построить распределения количества оценок по фильмам и пользователям и увидеть т.н. "длинные хвосты" в распределениях)
3. Оценить средние оценки по фильмам и по пользователям
4. Выбрать критерий, показывающий, что фильм нравится всем, или не нравится никому, и вывести топ фильмов из этих списков. Знаете ли вы эти фильмы, согласны ли с оценками?
5. Выбрать лучшие фильмы
6. Посмотреть на смещение оценок, увидеть сколько пользователей занижают оценки и завышают оценки.
7. Построить рекомендательную систему с помощью библиотеки surprise (или другой, по желанию). Применить подбор параметров модели на сетке, оценить качество полученной модели по выбранной вами метрике.
8. Получить рекомендации для нового пользователя, совпадают ли они с лучшими фильмами?
9. Поставьте оценку какому-нибудь фильму (который вы знаете и можете поставить оценку) и получите рекомендации, насколько они качественные по вашим ощущениям? Сделайте это для фильма с негативной оценкой и для фильма с позитивной оценкой.
10. Добавляйте оценки и посмотрите, как изменяются рекомендации фильмов. Соответствуют ли они вашим предпочтениям? Есть ли недостатки у системы? Сколько нужно оценок для того, чтобы рекомендации стали релевантными? (в этом пункте добавляйте оценки в том числе из интересного вам жанра для пункта 11)
11. Построить рекомендательную систему по подвыборке - выбрать интересный вам жанр. Изменились ли рекомендации? Стали лучше\хуже?
12(*). сделать самостоятельное исследование и выяснить, как добавить нового пользователя\фильм в систему без переобучения всей модели, описать архитектуру такого решения
Анализ временных рядов
1. Постановка задачи.
2. Экспоненциальное сглаживание.
3. Стационарность. SARIMA. Выбор признаков во временных рядах.
4. Применение моделей машинного обучения
Домашние задания: 1
ДЗ
Предсказание временных рядов. 1. Скачать датасет Х.
2. Используя модель ARIMA из лекции, перебором подобрать наилучший набор параметров.
3. Написать реализацию модели Хольта-Уинтерса (без использования готовых методов из библиотек)
4. Натренировать одну из ML моделей на предсказание значения временного ряда.
Алгоритмы на графах
Социальные сети, выделение сообществ
АБ тестирование
1. Тестирование гипотез. Постановка задачи.
2. Терминология, мощность, статистическая значимость.
3. Параметрические методы: t-критерий, 1p, 2p proportion.
4. Непараметрические методы bootstrap
Методы оптимизации
SGD, модификации SGD
Нейронные сети и глубокое обучение
Простейшие нейронные сети и метод обратного распространения ошибки.
1. Начальные сведения о нейронных сетях.
2. Теорема об универсальной аппроксимации.
3. Алгоритм обратного распространения ошибки.
Обучение нейронных сетей
1. Пример к предыдущей лекции: разбор word2vec.
2. Предпосылки для глубоких нейронных сетей, представления.
3. Стохастический градиентный спуск.
20 июля, 10:00 — 11:30
Лектор: Александр Никитин
Домашние задания: 1
ДЗ
Простые НС и метод обратного распространения ошибки. 1. Реализовать полносвязную сеть: два скрытых слоя с функцией активации ReLU, на выходе softmax по количеству классов (задается как параметр).
2. Обучить НС на модельный датасет "make_moons" из skelarn. Визуализировать разделяющую поверхность.
3. Обучить НС на датасете MNIST.

Сверточные нейронные сети ч.1
1. Структура сверточных сетей.
2. Пример на MNIST (Pytorch).
3. Обзор Pytorch.
4. Примеры на Pytorch (усложняем сеть, увеличиваем точность) -- сделать inclass соревнование на Kaggle.
6 августа, 20:00 — 21:30
Лектор: Султан Исалы
Сверточные нейронные сети ч.2
1. Функции активации.
2. Регуляризация (BatchNorm, Dropout)
3. Инициализация весов.
4. Модификации SGD.
10 августа, 10:00 — 11:30
Лектор: Султан Исалы
Сверточные нейронные сети ч.3
1. Ансамблирование.
2. Аугментация данных, transfer learning.
3. Использование предобученных сетей.
13 августа, 20:00 — 21:30
Лектор: Султан Исалы
Домашние задания: 1
ДЗ
Сверточные сети на Pytorch. 1. Реализовать сверточную сеть заданной архитектуры на Pytorch.
2. Написать слой BatchNorm и добавить его в НС.
3. Написать оптимизатор RMSProp и сравнить с обычным SGD.
Рекуррентные сети ч.1
1. Простой вариант: RNN.
2. LSTM, GRU.
3. Примеры для текста (языковая модель).
17 августа, 10:00 — 11:30
Лектор: Александр Никитин
Рекуррентные сети ч.2
1. Механизм внимания: пример на переводе, на картинке. Типы внимания.
2. Пример: Image captioning.
20 августа, 20:00 — 21:30
Лектор: Дмитрий Музалевский
Домашние задания: 1
ДЗ
Рекуррентные сети на Pytorch. 1. Реализовать language model.
2. Выполнить задачу NER на датасете ConLL2003.
Примеры работы глубоких НС
1. Изображения и видео.
2. Текст: задача POS-tagging, NER, перевод.
3. Прочее.
24 августа, 10:00 — 11:30
Лектор: Александр Никитин
Проектная работа
В рамках курса предусмотрена защита проекта.

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

Проект готовится в течение месяца и включает в себя следующие этапы:
1. Постановка задачи. Предлагается самостоятельно найти предметную область и обосновать применение в ней машинного обучения
2. Разработка данных. Одно из требований к проекту - Использование данных из открытых источников. Необходимо разработать процесс сбора и очистки данных
3. Поиск алгоритма и модели для решения задачи. Необходимо выполнить подготовку данных, выбрать алгоритм и подобрать параметры для построения модели
4. Использование модели для достижения поставленной цели. Необходимо реализовать применение разработанной модели
5. Построение процесса. Решение задачи необходимо оформить в единый процесс по обработке данных от источника до предсказания, не требующий участия эксперта
6. Обоснование процесса

Вводное занятие по проектной работе
27 августа, 10:00 — 11:30
Лектор: Александр Никитин
Домашние задания: 1
ДЗ
Проектная работа. Проект включает в себя следующие этапы:
1. Постановка задачи. Предлагается самостоятельно найти предметную область и обосновать применение в ней машинного обучения
2. Разработка данных. Одно из требований к проекту - Использование данных из открытых источников. Необходимо разработать процесс сбора и очистки данных
3. Поиск алгоритма и модели для решения задачи. Необходимо выполнить подготовку данных, выбрать алгоритм и подобрать параметры для построения модели
4. Использование модели для достижения поставленной цели. Необходимо реализовать применение разработанной модели
5. Построение процесса. Решение задачи необходимо оформить в единый процесс по обработке данных от источника до предсказания, не требующий участия эксперта
6. Обоснование процесса
Консультация по проектной работе
14 сентября, 20:00 — 21:30
Лектор: Александр Никитин
Защита проектной работы
24 сентября, 10:00 — 11:30
Лектор: Александр Никитин

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

Максим Кретов
Ведущий исследователь в лаборатории нейронных сетей и глубокого обучения (МФТИ).

Области интересов: байесовские методы в машинном обучении, обработка естественного языка.

Закончил МГУ им. М.В.Ломоносова в 2009 (химия). Кандидат физ.-мат. наук (МГУ, 2012).