ПРОГРАММА КУРСА ://

ПРИКЛАДНАЯ РАЗРАБОТКА НА PYTHON
Python — один из самых популярных инструментов для анализа данных. В этом блоке мы научимся работать с этим языком, познакомимся с основными библиотеками для ML и узнаем, как грамотно использовать Python при командной работе. Также мы посвятим время изучению инструментов для работы с базами данных, как с помощью классического SQL, так и с помощью Python кода. Полученных знаний будет достаточно для работы не только в области анализа данных, но и в классической разработке на Python.
Смотреть уроки
1. Основные сведения о Python
Познакомимся с основными определениями, узнаем, что такое дин, типизация и проcтой синтаксис. Изучим базовые структуры данных — list, tuple, dict, set, и операции с ними. Узнаем, как писать for, while, if (пока без with, try/except), break, continue.
2. Функции. Ссылочная модель данных. Погружение в типы. Изменяемые типы, срезы, работа со строками
Разберём, как написать свою функцию. Изучим обязательные аргументы, аргументы по-умолчанию и ссылочную модель данных. Рассмотрим изменяемые и неизменяемые типы. Выясним, как выглядит модификация неизменяемых типов «под капотом» и как устроен полный синтаксис.
3. Внешние модули. Экосистема PyPi. Установка пакетов в виртуальные окружения
Импортируем встроенные модули, узнаем, где искать сторонние библиотеки и как их устанавливать от начала до конца на примере numpy, pandas. Разберёмся, зачем и как нужно создавать окружения, а также зачем нужно фиксировать версии библиотек.
4. Обзор numpy, pandas, jupyter. Основы jupyter
Обзор основных библиотек из арсенала DS: numpy, pandas, matplotlib. Начнём работать с jupyter и numpy.
5. Pandas
Познакомимся с основными операциями библиотеки pandas.
6. Базы данных в Python: основы и ORM
Рассмотрим SQL, научимся подключаться к БД в Python на примере PostgresSQL. Познакомимся с концепцией ORM, разберем интеграцию SQLAlchemy с pandas.
7. Классы и ООП
Познакомимся с понятием «класс» и философией ООП. Рассмотрим основные принципы построения классов и их реализацию на Python.
8. Версионирование кода и git
Познакомимся со способами применения и преимуществами версионирования и ветвления. Настроим git, разберем новые команды (clone, add, commit), научимся создавать «ветки». Познакомимся с merge и origin, изучим форматирование коммитов по шаблону и теги.
9. Backend-разработка: что это такое. Фреймворк FastAPI для прототипирования backend-сервера
Узнаем, чем может быть полезен backend-сервер в ML. Познакомимся с основами backend: методы GET, POST, передача параметров, JSON в body, status code, ответ сервера. Разберём подключение БД 3 способами: через сырые SQL, через SQLAlchemy, через веб-сервер.
10. Airflow: обзор платформы
Познакомимся с возможностями Airflow: шедулинг задач, трекинг прогресса, логгирование. Рассмотрим основные концепции: DAG, task, operator. Напишем простой DAG с зависимостями и PythonOperator. Разберёмся, как Airflow может использоваться в ETL-процессах.
11. Полезные вещи в разработке
Выясним, как передавать кредентиалы в код, как выносить подвижные части в config и когда это делать. Познакомимся с концепцией single source of truth и узнаем, как она упрощает жизнь разработчика. Разберёмся, что такое идемпотентность и как она помогает в Airflow и Jupyter notebook. Научимся расширять PYTHONPATH через консоль и через sys.path.append.
МАШИННОЕ ОБУЧЕНИЕ И ПРИЛОЖЕНИЯ
Классические методы машинного обучения — это основа для большинства современных способов анализа данных, например, для оптимизации банковского ценообразования. Мы изучим основной теоретический инструментарий для успешного построения ML-дизайна в острых проблемах реальной индустрии и отточим новые навыки на практике.
Смотреть уроки
1. Введение в МО: каким оно бывает и каковы основные компоненты
Обсудим, что такое МО и зачем оно нужно, познакомимся с таргетами и объектами. Выделим два вида таргета на примере краудфандинг-датасета и запустим fit-predict.
2. Введение в МО: метрики и задача линейной регрессии
Обсудим, что такое метрика, научимся решать задачи поиска коэффициентов линейной регрессии без кода (PLS). Уточним понятие матрицы, научимся запускать матричное решение на датасете с краудфандингом.
3. Градиентный спуск
Познакомимся с универсальным и быстрым способом оптимизации метрик. Научимся использовать методы градиентного спуска и визуализировать обучение для простой функции.
4. Обобщающая способность модели: метод отложенной выборки. Кросс-Валидация
Научимся справедливо сравнивать и оценивать обобщающую способность модели. Запустим кросс-валидацию, дадим оценку нашей модели с предыдущих уроков.
5. Мультиколлинеарность, регуляризация и масштабирование признаков
Узнаем, что такое ЛЗ векторов, научимся бороться с ней с помощью регуляции. Потренируем новые навыки на старом датасете, выясним, действительно ли регуляция помогает выбрасывать плохие признаки.
6. Методы отбора признаков
Разберемся с типами подсчёта корреляций и вычислением p-value.
7. Полезные приемы при работе с данными.
Поработаем с выбросами и пропущенными значениями. Узнаем дополнительные способы кодировки категориальных фичей.
8. Практика: Housing Market
Закрепим полученные знания и навыки на реальном бизнес-кейсе — научимся гридсерчиться на большом количестве признаков и регуляризаторах.
9. Линейная классификация: оценка вероятности
Поработаем с фичами на примере датасета, запустим логрег из коробки. Формально опишем задачу классификации.
10. Матрица ошибок и основные метрики классификации
Обсудим базовые методы оценки качества классификации: accuracy, precision, recall, F-меру. Посчитаем матрицу ошибок для выбранного ранее датасета, научимся влиять на метрики через threshold.
11. ROC, PR-кривые. AUC-ROC, AUC-PR. Калибровка.
Формально введём определения ROC-AUC, PR-AUC, обсудим калибровку вероятностей. Научимся строить ROC, PR кривые, посчитаем метрики.
12. Метод опорных векторов.
Узнаем, чем знаменит SVM, в каких задачах его стоит применять. Запустим SVM из коробки.
13. Многоклассовая классификая: one vs rest, one vs one
Введём новую задачу многоклассовой классификации, изучив два подхода к ней. Запустим из коробки и сравним различия в качестве оценки при использовании разных подходов.
14. Понижение размерности признакового пространства
Научимся рисовать и экономить ресурсы бизнесу. Будем использовать PCA и t- SNE для работы с нашим датасетом и обученной моделью.
15. Метод K ближайших соседей: обоснование нелинейности, гиперпараметры и подбор метрики близости объектов
Займёмся подбором метрик близости, научимся смотреть на смысл фичей. Запустим KNN на примере, научимся выбирать гипер параметры для модели.
16. Решающее дерево: постановка задачи регрессии/классификации и гиперпараметры модели и проблемы с обобщающей способностью и подбор гиперпараметров
Узнаем, как построить дерево с лучшим качеством оценки таргетов, почему деревья легко недообучить и переобучить. Запустим два дерева на датасете: для решения задач регрессии и классификации.
17. Композиции алгоритмов. Случайный лес
Изучим основные методы ансамблирования — стекинг, бустинг и другие. Рассмотрим случайный лес, бустрап и метод случайных подпространств. Обучим случайный лес и увидим связь между изменением гиперпараметров базового дерева и качеством модели.
18. Градиентный бустинг. Bias-variance trade-off
Обсудим идею и интуицию градиентного бустинга. Обучим случайный лес, проведём градиентный бустинг из коробки.
19. Кластеризация
Начнём разбирать задачу обучения без учителя, рассмотрим k-means и dbscan для кластеризации. Попробуем визуализацию обученных кластеров.
20. Рекомендательные системы
Рассмотрим задачу построения рекомендательный системы и коллаборативную фильтрацию.
21. Машинное обучение: классические задачи и алгоритмы 
Разбор задач на линейные модели классификации, регрессии и ансамбли.
ОБЗОР ОСНОВ DEEP LEARNING
Глубинное обучение с использованием нейронных сетей появляется тогда, когда классические модели бессильны: детекция объектов с картинки, генерация осмысленного текста, определение тональности звуковой дорожки и многое другое. В данном курсе мы обзорно посмотрим на решения, которые можно сделать с помощью deep learning, и попробуем в них разобраться.
Смотреть уроки
1. Введение. Полносвязные слои. Функции активации
Начнём осваивать библиотеку PyTorch*. Познакомимся с нейронными сетями.
2. Оптимизация нейронных сетей. Метод обратного распространения ошибки
Узнаем как устроена оптимизация нейронных сетей. Оптимизация в PyTorch*.
3. Свёрточные нейронные сети 
Знакомимся со свёрточными нейронными сетями. Учимся решать задачу классификации изображений. Узнаем продвинутые подходы, которые улучшают качество и обучение свёрточных нейронных сетей.
4. Популярные архитектуры свёрточных нейронных сетей. Перенос знаний
Узнаем популярные архитектуры свёрточных нейронных сетей, разберём концепт переноса знаний. Сравним различные модели между собой.
5. Детекция объектов
Научимся решать задачу детекции объектов на изображении.
6. Векторные представления изображений. Распознавание лиц
Узнаем как можно делать векторные представления изображений и решать задачу идентификации человека по фото.
7. Векторные представления слов. Рекуррентные нейронные сети

Узнаем как можно делать векторные представления слов. Учимся решать задачу классификации текста. Знакомимся с рекуррентными нейронными сетями.
8. LSTM. Трансформер. Механизм внимания
Завершим тему рекуррентных нейронных сетей. Начнем знакомство с архитектурой нейронных сетей Трансформер.
9. Трансформер 2 - Улица Сезам
Обсудим популярные архитектуры нейронных сетей, основанные на архитектуре Трансформер.
СТАТИСТИКА И A/B-ТЕСТЫ
В этом блоке мы изучим основные понятия математической статистики, необходимые для улучшения моделей. Научимся правильно проводить A/B тестирование, чтобы достоверно измерять влияние внедрения ML моделей на продукт и бизнес. Обсудим нюансы при проведении экспериментов и способы оценки метрик при невозможности проведения A/B-теста.
Смотреть уроки
1. Зачем нужна статистика и A/B тесты
Узнаем, почему недостаточно сделать более классную модель. Разберёмся, как правильно оценивать онлайн-метрики и учитывать шум.
2. Доверительные интервалы
Изучим способы оценки доверительных интервалов случайных величин. Разберём примеры непрерывных случайных величин.
3. Статистики распределений, взаимосвязь случайных величин, показатели корреляции
Какие статистические показатели существуют для оценивания распределений: мода, медиана, математическое ожидание, дисперсия. Узнаем, как можно оценивать взаимосвязь двух случайных величин и как это можно применить в машинном обучении.
4. Проверка гипотез, параметрические статистические критерии
Узнаем, что стоит за проверкой статистических гипотез. Разберём разницу между ошибками первого и второго рода. Поймём суть параметрических статистических критериев и выясним, какие они бывают.
5. Непараметрические статистические критерии
Изучим суть непараметрических статистических критериев и узнаем, какие они бывают.
6. Метод максимума правдоподобия и ядерная оценка плотности
Узнаем, как оценивать распределение: параметрический и непараметрический подходы.
7. Дизайн A/B эксперимента
Выясним, как проходит A/B эксперимент: выбор метрики, определение проверяемой гипотезы, разделение на группы, определение длительности эксперимента и минимального размера выборки, применение статистического критерия.
8. А/А-эксперименты и валидация методики экспериментирования
Разберёмся, как по историческим данным провалидировать метрики и схему проведения A/B экспериментов, как оценить мощность.
9. Ошибки при проведении A/B тестов
Узнаем, какие ошибки возникают при проведении A/B тестов: множественная проверка гипотез, проверка p-value каждый день, ложные прокраски из-за нарушения тестирования, ошибки в разбиение групп.
10. Увеличение чувствительности А/В тестов
Разберём техники для уменьшения дисперсии и увеличения мощности тестов.
11. Невозможность проведения А/В тестов
Выясним, в каких случаях и почему может не подходить классический A/B-тест. Узнаем, как проводить эксперименты при наличии сетевого эффекта и в других ситуациях.
12. Собеседования по теории вероятности, статистике и А/B тестированию
Разберём задачи, которые часто встречаются на собеседованиях.
СОБЕСЕДОВАНИЯ И КАК ИХ ПРОЙТИ
В последнем блоке курса мы еще раз вспомним основные моменты из всего курса и обсудим, как проходят собеседования на младшего специалиста в машинном обучении, как к ним готовиться и как их проходить. Мы хотим поделиться своим опытом и помочь пройти первый этап в поиске профессии мечты.
Смотреть уроки
1. Программирование на Python: что обычно спрашивают на собеседованиях, какие вопросы могут встречаться
Расскажем, о чем вас могут спросить в русских и зарубежных компаниях. В конце урока проведем пробное собеседование и подробно его разберем.
2. Программирование на Python: сложность вычислений и их оценка
Узнаем, что означает "работает за квадратичное время". Научимся оценивать сложность по внутренностям цикла.
3. Программирование на Python: задачи и теория на массивы, одно/двух-связные списки, не алгоритмические вещи
Разберем задачи на массивы, которые могут встретиться на собеседованиях. Познакомимся с односвязным и двусвязным списком, рассмотрим связанные с ним задачи. Напоследок поговорим про отдельный тип задач на умение внимательно продумывать код и рассматривать граничные случаи — такие часто используются на собеседованиях для проверки внимательности кандидата.
4. Программирование на Python: задачи и теория на деревья и графы
Разберём задачи на графы и их популярную вариацию — деревья. Изучим основные алгоритмы на графах и популярные приемы при решении задач.
5. Программирование на Python: задачи и теория про динамическое программирование
Разберём новый тип задач и подход к их решению— динамическое программирование. Узнаем, как правильно подступаться к решению, какие есть подводные камни и попробуем свои силы на практических примерах.
6. Машинное обучение
В этом уроке мы вспомним материалы из блоков про машинное обучение и еще раз обсудим, с какими задачами можно столкнуться на собеседовании. 
7. Прикладная статистика
В этом уроке мы вспомним материалы из блока про статистику и А/B теста и еще раз обсудим, с какими задачами можно столкнуться на собеседовании.