Голосов: 0
#1
Machine Learning для начинающих [2022]
START ML [2022]
karpov.courses
Нерсес Багиян, Никита Табакаев, Эмиль Каюмов, Алексей Кожарин
Всё про самую увлекательную профессию 21 века: от сбора данных до оценки эффекта от моделей машинного обучения.
Мы включили в программу теорию по математике в необходимом для практики объеме. Она подаётся совместно с основным уроком, так что учить отдельно не придется.
Мы старались включить как можно больше приближенных к реальности заданий, чтобы задачи на работе не оказались для вас сюрпризом.
Для кого эта программа:
1. Старт карьеры
Хотите изучить машинное обучение, но не знаете, с чего начать. Курс научит вас необходимой математической базе для работы в ML и даст навыки для старта карьеры.2. Уже работает в IT
Вы уже работаете в IT, но хотите перейти в новую сферу или расширить свои знания и навыки, чтобы применить их в различных областях машинного обучения.
Модуль 1 - Прикладная разработка на Python
Python — один из самых популярных инструментов для анализа данных. В этом блоке мы научимся работать с этим языком, познакомимся с основными библиотеками для ML и узнаем, как грамотно использовать Python при командной работе. Полученных знаний будет достаточно для работы не только в области анализа данных, но и в классической разработке на Python.Модуль 2 - Машинное обучение и приложения
1. Основные сведения о Python
2. Функции. Ссылочная модель данных. Погружение в типы. Изменяемые типы, срезы, работа со строками
- Познакомимся с основными определениями, узнаем, что такое дин, типизация и проcтой синтаксис.
- Изучим базовые структуры данных — list, tuple, dict, set, и операции с ними.
- Узнаем, как писать for, while, if (пока без with, try/except), break, continue.
3. Внешние модули. Экосистема PyPi. Установка пакетов в виртуальные окружения
- Разберём, как написать свою функцию.
- Изучим обязательные аргументы, аргументы по-умолчанию и ссылочную модель данных.
- Рассмотрим изменяемые и неизменяемые типы.
- Выясним, как выглядит модификация неизменяемых типов «под капотом» и как устроен полный синтаксис.
4. Классы и ООП
- Импортируем встроенные модули, узнаем, где искать сторонние библиотеки и как их устанавливать от начала до конца на примере numpy, pandas.
- Разберёмся, зачем и как нужно создавать окружения, а также зачем нужно фиксировать версии библиотек.
5. Версионирование кода и git
- Познакомимся с понятием «класс» и философией ООП.
- Рассмотрим основные принципы построения классов и их реализацию на Python.
6. Обзор numpy, pandas, jupyter. Основы jupyter
- Познакомимся со способами применения и преимуществами версионирования и ветвления.
- Настроим git, разберем новые команды (clone,add,commit), научимся создавать «ветки».
- Познакомимся с merge и origin, изучим форматирование коммитов по шаблону и теги.
7. Pandas
- Обзор основных библиотек из арсенала DS: numpy, pandas, matplotlib.
- Начнём работать с jupyter и numpy.
8. Базы данных в Python: основы и ORM
- Познакомимся с основными операциями библиотеки pandas.
9. Backend-разработка: что это такое. Фреймворк FastAPI для прототипирования backend-сервера
- Рассмотрим SQL, научимся подключаться к БД в Python на примере PostgresSQL.
- Познакомимся с концепцией ORM, разберем интеграцию SQLAlchemy с pandas.
10. Airflow: обзор платформы
- Узнаем, чем может быть полезен backend-сервер в ML.
- Познакомимся с основами backend: методы GET, POST, передача параметров, JSON в body, status code, ответ сервера.
- Разберём подключение БД 3 способами: через сырые SQL, через SQLAlchemy, через веб-сервер.
11. Полезные вещи в разработке
- Познакомимся с возможностями Airflow: шедулинг задач, трекинг прогресса, логгирование.
- Рассмотрим основные концепции: DAG, task, operator.
- Напишем простой DAG с зависимостями и PythonOperator.
- Разберёмся, как Airflow может использоваться в ETL-процессах.
- Выясним, как передавать кредентиалы в код, как выносить подвижные части в config и когда это делать.
- Познакомимся с концепцией single source of truth и узнаем, как она упрощает жизнь разработчика.
- Разберёмся, что такое идемпотентность и как она помогает в Airflow и Jupyter notebook.
- Научимся расширять PYTHONPATH через консоль и через sys.path.append.
Классические методы машинного обучения — это основа для большинства современных способов анализа данных, например, для оптимизации банковского ценообразования. Мы изучим основной теоретический инструментарий для успешного построения ML-дизайна в острых проблемах реальной индустрии и отточим новые навыки на практике.Модуль 3 - Обзор основ Deep Learning
1. Введение в МО: векторное описание объектов, постановка задач
2. Линейная регрессия: градиентный спуск (OLS). Обобщающая способность модели. Кросс-валидация
- Узнаем, что такое МО и зачем оно нужно.
- Разберемся с основной терминологией при постановке задач: объекты, метрики, регрессия, классификация, ранжирование, выборка.
- Научимся решать задачу поиска коэффициентов линейной регрессии без кода (OLS) и готовить сырые данные.
3. Линейная регрессия: ЛЗ регрессоры, мультиколлинеарность и масштабирование. Регуляризация линейных моделей.
- Обсудим механику и интуицию градиентного спуска, установим теоретически возможные проблемы метода спуска.
- Реализуем OLS без привлечения сторонних библиотек.
- Разберем, как использовать кросс-валидацию для оценки модели.
4. Метрики качества регрессии: MAPE, MAE, ядровой подход и др.
- Обсудим природу возникновения мультиколлинеарности, научимся с ней бороться с помощью основных подходов регуляризации линейных моделей: Ridge и Lasso.
- Узнаем, зачем нормализовать фичи: интерпретация, вес оценки коэффициента и оптимальность градиентного спуска.
5. Обработка фичей
- Узнаем разницу между метрикой и лоссом.
- Обсудим цену знака ошибки и робастность при подборе функционала качества.
- Научимся подбирать правильную метрику и лосс в зависимости от бизнес-контекста задачи.
- Математически покажем разницу в ошибке для различных объектов, обсудим статистические свойства оценок при различных методах их получения.
6. Линейная классификация: оценка вероятности
- Научимся кодировать категориальные признаки.
- Покажем, как нелинейные преобразования фичей могут из плохой модели сделать идеальную и научимся подбирать функциональную зависимость по точкам.
7. ROC, PR-кривые. AUC-ROC, AUC-PR. Калибровка
- Научимся запускать и настраивать простейшую модель бинарной классификации — логистическую регрессию.
- Посмотрим, как могут меняться аутпуты на выбросах в зависимости от функции активации.
- Обсудим базовые методы оценки качества классификации: accuracy, precision, recall, F-мера.
8. Метод опорных векторов
- На примере с предыдущего занятия построим ROC, PR кривые, посчитаем метрики, сравним со случайно моделью.
- Формально введем определение ROC-AUC, PR-AUC, поговорим про калибровку вероятностей и научимся интерпретировать результаты логистической регрессии.
9. Метод K ближайших соседей: обоснование нелинейности, гиперпараметры и подбор метрики близости объектов
- Обсудим интуицию построения разделяющей гиперплоскости с помощью метода опорных векторов.
- Узнаем, чем знаменит SVM и сравним оценки качества модели с логрегом.
- Запустим SVM из коробки, сравним качество и порисуем.
- Научимся выбирать лучший метод для каждой задачи.
10. Отбор признаков и понижение размерности признакового пространства
- Познакомимся с первым нелинейным способом — моделью KNN как для задачи классификации, так и для задачи регрессии.
- Обсудим мелочи и научимся подбирать подходящую под конкретную задачу функцию расстояния между объектами.
11. Многоклассовая классификая: one vs rest, one vs one.
- Предложим альтернативы регуляризации при отборе фичей — валидацию на признаках.
- Узнаем, как бороться с разряженным признаковым пространством объектов с помощью метода главных компонент.
- Научимся визуализировать результаты сложных высокоразмерных меоделей с помощью t-SNE метода и делать адекватные выводы модели.
12. Решающее дерево
- Введем новую задачу многоклассовой классификации.
- Покажем формальные отличия от бинарной классификации.
- Запустим из коробки, сравним различия в качестве оценки при использовании двух подходов и закрепим навыки визуализации.
13. Композиции алгоритмов. Случайный лес.
- Узнаем, как устроены решающие деревья для задач машинного обучения.
- Запустим дерево на датасете для задачи регрессии и аналогичное дерево для задачи классификации.
- Изучим всевозможные гиперпараметры модели и поймем, на что влияет каждый из них.
- Узнаем критерии построения следующей вершины и все-все, что понадобится для механического и интуитивного понимания работы дерева.
- Научимся визуализировать и интерпретировать результаты модели.
14. Градиентный бустинг. Bias-variance trade-off.
- Узнаем основные методы ансамблирования, познакомимся с понятием метамодели.
- Обучим стекинг, случайный лес и убедимся в их невероятной пользе.
- Научимся выбирать лучший из способов ансамблирования в контексте разных задач.
15. Кластеризация
- Обсудим идею и интуицию градиентного бустинга.
- Узнаем про главную диллему машинного обучения: bias-variance tradeoff и на примере научимся раскладывать ошибку на смещение и разброс, сравнивая результат с аналогичными показателями для случайного леса.
16. Рекомендательные системы
- Рассмотрим задачу обучение без учителя, k-means, dbscan для кластеризации.
- Попрактикуемся в визуализации обученных кластеров (t-sne).
- Узнаем, как кластерный анализ может улучшить процесс построения классических моделей.
17. Машинное обучение: классические задачи и алгоритмы
- Введем задачу построения рекомендательной системы.
- Обсудим, почему старые методы работают относительно плохо.
- Научимся использовать user-based, item-based подходы и реализуем коллаборативную фильтрацию.
- Проведём полный разбор популярных, сложных и интересных кейсов, которые могут встретиться на будущих собеседованиях.
- Закрепим изученный материал: от описания конкретных параметров модели до ml-дизайна.
Глубинное обучение с использованием нейронных сетей появляется тогда, когда классические модели бессильны: детекция объектов с картинки, генерация осмысленного текста, определение тональности звуковой дорожки и многое другое. В данном курсе мы обзорно посмотрим на решения, которые можно сделать с помощью deep learning, и попробуем в них разобраться.Модуль 4 - Статистика и A/B тесты
1. Нейронные сети: полносвязный перцептрон
2. Градиентный спуск в обучении нейронных сетей
- Освоим главные библиотеки по работе с нейронными сетями: tensorflow, torch.
- Построим своей первый полносвязный перцептрон и познакомимся с базовыми структурными элементами DL.
3. Оптимизация в deep learning
- Поймём принцип обучения нейронных сетей.
- Рассмотрим проблемы затухания и взрыва градиента.
- Узнаем современные подходы: SGD, Adam.
- Замерим скорость и эффективность работы каждого из них.
4. Свёрточные нейронные сети
- Познакомимся с технологиями в рамках архитектуры нейронных сетей, которые помогают делать обучение еще более быстрым и эффективным: BatchNorm, DropOut.
5. Популярные архитектуры CNN
- Узнаем особенности работы свёрточных нейронных сетей для задач Computer Vision.
- Познакомимся с особенностями построения фильтров: receptive field, padding'и, pooling'и.
- Построим свою первую CNN архитектуру для классификации объектов изображений.
6. Какие еще задачи решают с помощью сверточных нейросетей?
- Узнаем о самых популярных существующих CNN системах.
- Поймем их архитектурные отличия.
- Разберем механику новых приемов, использующихся в этих сетях: например, data augmentation.
7. Способы кодировки слов: Эмбеддинги в NLP
- Обзор на прочие частые задачи, решаемые свёрточными нейросетями.
- Зачем нужны автокодировщики и как их обучать? Как решать задачи сегментации и детекции?
8. Рекуррентные нейронные сети: структура модели и backprop
- Научимся кодировать текст для обучения семантических моделей.
- Познакомимся с основными подходами: bag of words, word2vec, skip-gram.
9. Архитектуры нейросетей: LSTM и seq2seq
- Рассмотрим задачи NLP.
- Формально поставим задачу, укажем на особенности градиентного спуска для рекуррентных моделей, поговорим про память модели при обучении.
10. Машинное обучение: задачи про глубинное обучение
- Узнаем особенности подходов LSTM, seq2seq и применим их на практике.
- Проведем полный разбор ряда задач глубинному обучению из пула потенциальных вопросов на будущих собеседованиях.
В этом блоке мы изучим основные понятия математической статистики, необходимые для улучшения моделей. Научимся правильно проводить A/B тестирование, чтобы достоверно измерять влияние внедрения ML моделей на продукт и бизнес. Обсудим нюансы при проведении экспериментов и способы оценки метрик при невозможности проведения A/B-теста.Модуль 5 - Собеседования и как их пройти
1. Зачем нужна статистика и A/B тесты
2. Доверительные интервалы
- Узнаем, почему недостаточно сделать более классную модель.
- Разберёмся, как правильно оценивать онлайн-метрики и учитывать шум.
3. Статистики распределений, взаимосвязь случайных величин, показатели корреляции
- Изучим способы оценки доверительных интервалов случайных величин.
- Разберём примеры непрерывных случайных величин.
4. Проверка гипотез, параметрические статистические критерии
- Какие статистические показатели существуют для оценивания распределений: мода, медиана, математическое ожидание, дисперсия.
- Узнаем, как можно оценивать взаимосвязь двух случайных величин и как это можно применить в машинном обучении.
5. Непараметрические статистические критерии
- Узнаем, что стоит за проверкой статистических гипотез.
- Разберём разницу между ошибками первого и второго рода.
- Поймём суть параметрических статистических критериев и выясним, какие они бывают.
6. Метод максимума правдоподобия и ядерная оценка плотности
- Изучим суть непараметрических статистических критериев и узнаем, какие они бывают.
7. Дизайн A/B эксперимента
- Узнаем, как оценивать распределение: параметрический и непараметрический подходы.
8. А/А-эксперименты и валидация методики экспериментирования
- Выясним, как проходит A/B эксперимент: выбор метрики, определение проверяемой гипотезы, разделение на группы, определение длительности эксперимента и минимального размера выборки, применение статистического критерия.
9. Ошибки при проведении A/B тестов
- Разберёмся, как по историческим данным провалидировать метрики и схему проведения A/B экспериментов, как оценить мощность.
10. Увеличение чувствительности А/В тестов
- Узнаем, какие ошибки возникают при проведении A/B тестов: множественная проверка гипотез, проверка p-value каждый день, ложные прокраски из-за нарушения тестирования, ошибки в разбиение групп.
11. Невозможность проведения А/В тестов
- Разберём техники для уменьшения дисперсии и увеличения мощности тестов.
12. Собеседования по теории вероятности, статистике и А/B тестированию
- Выясним, в каких случаях и почему может не подходить классический A/B-тест.
- Узнаем, как проводить эксперименты при наличии сетевого эффекта и в других ситуациях.
- Разберём задачи, которые часто встречаются на собеседованиях.
В последнем блоке курса мы еще раз вспомним основные моменты из всего курса и обсудим, как проходят собеседования на младшего специалиста в машинном обучении, как к ним готовиться и как их проходить. Мы хотим поделиться своим опытом и помочь пройти первый этап в поиске профессии мечты.
1. Программирование на Python: что обычно спаршивают на собеседованиях, какие вопросы могут встречаться
2. Программирование на Python: сложность вычислений и их оценка
- Расскажем, о чем вас могут спросить в русских и зарубежных компаниях.
- В конце урока проведем пробное собеседование и подробно его разберем.
3. Программирование на Python: задачи и теория на массивы, одно/двух-связные списки, не алгоритмические вещи
- Узнаем, что означает "работает за квадратичное время".
- Научимся оценивать сложность по внутренностям цикла.
4. Программирование на Python: задачи и теория на деревья и графы
- Разберем задачи на массивы, которые могут встретиться на собеседованиях.
- Познакомимся с односвязным и двусвязным списком, рассмотрим связанные с ним задачи.
- Напоследок поговорим про отдельный тип задач на умение внимательно продумывать код и рассматривать граничные случаи — такие часто используются на собеседованиях для проверки внимательности кандидата.
5. Программирование на Python: задачи и теория про динамическое программирование
- Разберём задачи на графы и их популярную вариацию — деревья.
- Изучим основные алгоритмы на графах и популярные приемы при решении задач.
6. Машинное обучение
- Разберём новый тип задач и подход к их решению— динамическое программирование.
- Узнаем, как правильно подступаться к решению, какие есть подводные камни и попробуем свои силы на практических примерах.
7. Прикладная статистика
- В этом уроке мы вспомним материалы из блоков про машинное обучение и еще раз обсудим, с какими задачами можно столкнуться на собеседовании.
- В этом уроке мы вспомним материалы из блока про статистику и А/B теста и еще раз обсудим, с какими задачами можно столкнуться на собеседовании.
Для просмотра содержимого вам необходимо зарегистрироваться!Для просмотра содержимого вам необходимо зарегистрироваться!
Последнее редактирование модератором:
Симпатии:
Это понравилось Archi
- Статус
- В этой теме нельзя размещать новые ответы.