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

РАНЖИРОВАНИЕ И МАТЧИНГ
Алгоритмы автоматического сопоставления объектов позволяют решать множество важных задач бизнеса: выявление товаров-дублей, объединение данных о покупателях в онлайне и офлайне, анализ и мониторинг цен конкурентов. Разберём различные кейсы применения систем матчинга и ранжирования, рассмотрим технические тонкости их архитектур, познакомимся с передовыми подходами к обучению моделей и реализуем свою систему поисковых подсказок.
Смотреть уроки
1. Вводная лекция: ранжирование, матчинг, архитектурные особенности
Обсудим постановку задачи ранжирования с точки зрения машинного обучения. Разберёмся в тонкостях матчинга и верхнеуровнево познакомимся с архитектурой решения.
2. Метрики в задаче ранжирования. Особенности матчинга как подзадачи ранжирования
Рассмотрим различные метрики ранжирования: от самых базовых до актуальных и часто используемых. Обсудим их применение в разных ситуациях, углубимся в задачу матчинга и поговорим про особенности оценки результатов.
3. Функции потерь и базовые подходы к обучению моделей ранжирования
Продолжим углубляться в тему ранжирования и рассмотрим методы обучения моделей. Узнаем, какие существуют функции потерь и в каких случаях они используются.
4. Особенности работы с деревянными моделями. YetiRank
Перейдём к следующему этапу развития ранжирующих систем и познакомимся с популярными алгоритмами и их внутренним устройством.
5. Передовые подходы к ранжированию: обзор ушедшего десятилетия
Разберёмся, какие за последнее время были придуманы способы и приемы, повышающие качество и стабильность моделей. Проследим развитие идей и концепций.
6. Приближённый поиск ближайших соседей
С увеличением объёма данных возрастает сложность ранжирования и поиска объектов. Рассмотрим алгоритмы, позволяющие быстро и эффективно искать схожие объекты в огромной базе.
7. Модели для работы с текстом, введение в эмбеддинги. FastText, DSSM
Познакомимся с языковыми моделями для извлечения информации из текстов в векторном виде для её последующей утилизации моделями. Разберём принципы работы и обучения моделей FastText, узнаем, чем они отличаются от Word2Vec, и перейдём к структурированным синтаксическим моделям — DSSM.
8. Сложные языковые модели для высокоточной работы: BERT и трансформеры
Продолжим знакомство с текстовыми моделями. Разберём передовые архитектуры и посмотрим, в какой задаче матчинга трансформер может «выстрелить».
9. Парсинг данных из Интернета, сбор датасетов
Научимся выживать в ситуациях, когда данных нет, но они очень нужны. Разберём основы парсинга web-страниц и сбора сырых данных.
10. Толока как инструмент для оценки моделей и обновления датасетов
Познакомимся с инструментом ручной разметки данных от компании Яндекс и узнаем, какую пользу он может принести в работе.
Финальный проект модуля
Используем полученные знания для разработки сервиса на основе моделей ранжирования. В качестве бонуса обсудим задачи, которые можно решить с минимальными изменениями текущего пайплайна.
ДИНАМИЧЕСКОЕ ЦЕНООБРАЗОВАНИЕ
Эффективность деятельности многих компаний зависит от способности устанавливать оптимальные цены на продукцию с учётом различных факторов и изменений, происходящих на рынке. Научимся предсказывать ценовые диапазоны, рассмотрим актуальные для ценообразования метрики, познакомимся с «многорукими бандитами» и обучим одного из них выбирать стратегию расчёта цен для оптимизации выручки и маржинальности продаж.
Смотреть уроки
1. Постановка задачи ценообразования
Начнём с основ экономической теории: узнаем, из чего складывается цена, каковы её основные компоненты и от каких факторов она зависит. Также познакомимся с понятием волатильности.
2. Построение модели предсказания цены в зависимости от факторов
Закрепим теорию практикой: научимся грамотно просматривать и анализировать данные рынка и с их помощью выявим реальные факторы, влияющие на цену продукта. Порешаем задачи предсказания цен на уже существующих данных.
3. Постановка задачи динамического ценообразования
Более детально рассмотрим, чем постановка задачи динамического ценообразования отличается от предыдущей задачи и какие факторы в данном случае могут влиять на цену. Обсудим зависимость динамического ценообразования от групп покупателей, времени, рыночных условий, спроса и задач проникновения.
4. Первое знакомство с динамическим ценообразованием

Проанализируем практическую применимость концепции «‎цена как функция, зависящая от факторов», и построим первые простейшие модели динамического ценообразования.
5. Предсказание диапазонов цен
Поговорим о том, как работают алгоритмы предсказания диапазонов цен. Познакомимся с понятием квантильной регрессии и затронем проблему выбора лучшей цены.
6. Скрещивание динамического и классического ценообразования
Поговорим о кластеризации временных рядов и прогнозировании диапазонов цен. Посмотрим, какие бывают инструменты для прогнозирования временных рядов и применим их на практике. Обсудим некоторые специфические функции потерь, такие как quantile loss и RMSLE, и рассмотрим метрики для прогнозирования диапазонов цен.
7. Метрики и тесты для определения лучшей цены
Поговорим о том, на какие метрики следует смотреть для определения лучшей цены. Узнаем, как применить A/B-тестирование для решения этой задачи.
8. Многорукие бандиты и обучение с подкреплением
Узнаем, как использовать обратный сигнал для корректировки и задания диапазонов цен. Познакомимся с многорукими бандитами и теорией, которая лежит в их основе. Рассмотрим, как они позволяют ускорить A/B-тесты в проде.
9. Практическое применение многоруких бандитов

Рассмотрим реализацию многоруких бандитов и получение обратной связи для корректировки цены в коде.
Финальный проект модуля
На основе пройденного материала создадим собственный сервис по предсказанию цен для 1000 товаров. Построим для него несколько моделей и постараемся решить задачу максимальных продаж без провисания маржи.
UPLIFT-МОДЕЛИРОВАНИЕ
Сегментация потребителей по чистому эффекту от маркетингового воздействия позволяет бизнесу сосредоточить рекламный бюджет на клиентах, готовых выполнить целевое действие только при наличии коммуникации. Научимся оценивать величину этого эффекта с помощью uplift-моделей, разберём интересные кейсы из практики, спроектируем библиотеку факторов и построим свой алгоритм для поиска оптимальной аудитории.
Смотреть уроки
1. Введение в uplift-моделирование
Обоснуем необходимость использования uplift и научимся правильно ставить задачу для эффективного моделирования. Рассмотрим популярные решения и метрики качества uplift-моделей.
2. Разбор методов построения uplift-моделей
Поговорим о том, как проводить разведочный анализ данных (EDA) при uplift-моделировании. Разберём такие подходы к построению uplift-деревьев, как meta-learners и uplift trees.
3. Uplift сложных метрик. Expected value framework
Узнаем, что такое декомпозиция бизнес-эффекта (expected value decomposition) и как с её помощью продумывать изменение интересующей метрики и схемы прогноза. Рассмотрим сложный кейс из офлайн-ритейла.
4. Как спроектировать свою библиотеку факторов
Для построения любой модели необходимы данные: например, важно понимать, откуда к нам пришёл тот или иной клиент и какие у него предпочтения. Узнаем, как проводить эксперименты с разными наборами предикторов и как понять, какой набор является оптимальным для решения задачи. Убедимся, что оформление кода для расчёта предикторов в библиотеку — это самый быстрый путь вывода модели в продакшн.
5. Workshop: пишем приложение с применением модели
Собственными руками построим приложение с применением uplift. Сначала продумаем последовательность действий (pipeline) для подготовки данных и применения модели и организуем репозитории с исходным кодом, а затем настроим логирование и уведомления. Также обсудим механику сохранения промежуточных результатов и подъёма приложения при его падении.
Финальный проект модуля

Напишем свой веб-сервис для запуска uplift-модели и организуем маркетинговую кампанию на основе транзакционных данных клиентов.
ПРОДВИНУТОЕ A/B ТЕСТИРОВАНИЕ
Важными задачами в A/B-тестировании являются ускорение тестов и повышение их чувствительности. Это позволяет компаниям быстрее внедрять позитивные изменения и вовремя отказываться от негативных. Научимся применять современные методы повышения чувствительности A/B-тестов, рассмотрим полный пайплайн тестирования и реализуем свой сервис для оценки экспериментов.
Смотреть уроки
1. Введение: основы статистики
Вспомним основы теории вероятностей и математической статистики, которые понадобятся в курсе. Научимся строить точечные оценки и доверительные интервалы.
2. Основы статистики и статистические критерии
Поговорим о том, что такое A/B-тестирование и чем оно отличается от других способов принятия решений. Узнаем, какие статистические критерии применяются в A/B-тестировании и как построить доверительный интервал с помощью метода Bootstrap.
3. Метрики в А/B-тестировании
Рассмотрим различные метрики А/B-тестирования и их классификацию. Выделим среди них те, которые используются чаще всего. Разберём наиболее удачные комбинации метрик.
4. MDE, sample size
Научимся рассчитывать минимальный детектируемый эффект и подбирать необходимый размер групп для проведения эксперимента. Познакомимся с идеями повышения чувствительности тестов.
5. Стратификация
Обсудим, в чём опасность проведения экспериментов на малом количестве данных. Узнаем, как дополнительные знания о наблюдаемых объектах помогают снижать дисперсию данных. Научимся сокращать дисперсию с помощью стратификации.
6. CUPED. Гильбертово пространство случайных величин
Проанализируем общие черты гильбертова пространства и CUPED. Научимся снижать дисперсию данных и повышать чувствительность теста за счёт использования исторических данных.
7. Линеаризация. Многопараметрический дельта-метод
Познакомимся с особенностями тестирования ratio-метрик. Рассмотрим общие черты многопараметрического дельта-метода и линеаризации. Поговорим о том, как они связаны между собой.
8. Множественное тестирование, 2 + 2= -2
Рассмотрим ситуацию, когда два улучшения могут привести к ухудшению ситуации, и научимся справляться с этой проблемой: узнаем, как организовать параллельное проведение большого количества экспериментов и как проводить эксперименты с несколькими вариантами изменений.
9. Peeking problem, последовательное тестирование
Поговорим о том, что происходит с корректностью теста, если оценивать эксперименты до их окончания. Научимся динамически определять момент завершения пилота.
10. Auto-ML, полный пайплайн
Узнаем, как выглядит полный пайплайн A/B-тестирования, и рассмотрим применение ML-алгоритмов для повышения чувствительности тестов.
Финальный проект модуля
Применим все полученные знания на практике и реализуем собственный веб-сервис для оценки большого числа экспериментов.
СЦЕНАРИИ ДЕПЛОЯ ML-СЕРВИСОВ
ML-инженеру важно уметь интегрировать свои решения в существующую инфраструктуру с учётом высоких требований к производительности и отказоустойчивости приложений. Рассмотрим различные сценарии развёртывания сервисов, обсудим принципы их проектирования и поддержания с точки зрения современного бэкенда и научимся грамотно выводить приложения в продакшн.
Смотреть уроки
1. Инфраструктура и процессы в современных бэкендах
Начнём со знакомства с инфраструктурой и микросервисной архитектурой. Поговорим о процессах в современных бэкендах.
2. Application Service & Service Discovery

Поговорим о проектировании приложения для сёрвинга и познакомимся с паттерном Service Discovery.
3. Процессы. Демонизация. Веб-серверы
Рассмотрим, как работают процессы в системе, и разберёмся, в каком виде будут деплоиться наши приложения. Поговорим о функциях веб-серверов.
4. Docker Runtime + Docker Compose

Познакомимся поближе с Docker и Docker Compose и поговорим о некоторых паттернах их применения.
5. Docker Swarm + Container Lifecycle
Организуем оркестрацию нашего приложения в Swarm-кластере, проследим жизненный цикл контейнера и сформируем представление о том, из чего складывается оркестрация.
6. GitLab CI/CD
Используем GitLab CI/CD для выстраивания полноценного процесса сборки и доставки.
7. Сценарии развёртывания. Часть 1

Рассмотрим сценарии развёртывания приложения без использования докера и окрестраторов, в которых балансировка есть из коробки. Обсудим разные варианты доставки, хранения и деплоя кода, демонизируем наши приложения через systemd и настроим nginx балансировать трафик по нашим приложениям.

8. Сценарии развёртывания. Часть 2

Продолжим обсуждение «бездокеровских» сценариев. Рассмотрим полезные функции bash для написания своих сценариев деплоя. Познакомимся с системами автоматической конфигурации ansible и salt, выполнив по одному типу развёртки с помощью каждой.

9. MLflow и MLflow Model Registry
Поднимем MLflow и MLflow Model Registry, интегрируем их в наш сёрвинг и рассмотрим удобные способы регистрации моделей, выходящие за рамки стандартных «коробок».
Финальный проект модуля
Построим и развернём на сервере прототип QA-системы, реализуем механизм её бесшовного обновления.