Как пользоваться учебником
Это не линейный курс. Модули связаны учебными зависимостями, несколько веток идут параллельно и сходятся в местах сборки. Карта на главной показывает именно эти связи, а не порядок, в котором модули писались.
Что полезно знать заранее
Учебник не начинается с нуля по математике и программированию: формулы выводятся, но базовые понятия предполагаются знакомыми. Ничего из списка ниже не нужно знать глубоко — достаточно узнавать запись и понимать смысл. Если чего-то нет, читать всё равно можно: в тексте каждый раз сказано, что именно считается и зачем.
- Python и numpy
- На уровне чтения кода: массивы, срезы, векторные операции вместо циклов. Весь код моделей здесь — numpy; PyTorch встречается только в обучении нейросетевых модулей.
- Линейная алгебра
- Вектор, скалярное произведение, косинус угла, умножение матриц, разложение матрицы на две меньшие. На этом стоят и похожесть айтемов, и матричная факторизация, и эмбеддинги.
- Вероятность и статистика
- Распределение, среднее и медиана, условная вероятность, выборочный шум. Ближе к инженерной части понадобятся доверительные интервалы и бутстрэп — сама техника объясняется на месте, но идея «разница может быть случайной» должна быть привычной.
- Основы машинного обучения
- Разделение на обучение и тест, переобучение, функция потерь, градиентный спуск, логистическая регрессия и градиентный бустинг на уровне «что это делает». Нейросети нужны только в своих модулях и разбираются там с нуля.
- Инженерная база
- Полезна, но не обязательна: HTTP и API, SQL, представление о кэше, очереди и батч-джобе. Нужна ближе к production-блокам, где речь про задержки, обновление признаков и выкатку.
Чего заранее знать не нужно — собственно рекомендательных систем: ни постановки задачи, ни метрик ранжирования, ни двухстадийной архитектуры. Всё это и есть содержание учебника.
С чего начать
С модуля Popularity baseline: там весь путь «данные → модель → метрика → выдача» помещается на одну страницу, и дальше каждый следующий модуль меняет в этом пути ровно одну вещь. Дальше карта сама подскажет — у каждого модуля указано, что нужно пройти до него и что он открывает.
Два модуля — справочники: их открывают в любой момент и возвращаются к ним из других страниц. Метрики, Протокол эксперимента.
Как устроена карта
Верхний уровень — 8 блоков и связи между ними. Блок раскрывается по клику, внутри — его модули. Связи идут сверху вниз: сплошная линия означает, что модули нижнего блока опираются на модули верхнего, пунктир — что верхний блок полезно знать, но он не обязателен.
- База и справочники
- Как устроен учебник, первый end-to-end pipeline и два справочника, к которым возвращаются отовсюду. Модулей: 4.
- Классические модели
- Контент, соседство и латентные факторы — три способа получить похожесть. Модулей: 4.
- Данные и методология оценки
- Как из логов получается обучающая выборка и почему честный замер выглядит скромнее. Модулей: 5.
- Retrieval и ranking
- Отбор кандидатов отдельно от их упорядочивания — и цена приближённого поиска. Модулей: 4.
- Сборка воронки
- Стадии соединяются в систему, и появляются вопросы уровня системы. Модулей: 2.
- Production и продуктовые ограничения
- Что ломается между офлайн-метрикой и живой выдачей: фичи, холодный старт, правила, наблюдаемость. Модулей: 5.
- Capstone
- Вся воронка на реальном логе с происхождением каждой позиции витрины. Модулей: 1.
- Специализации
- Отдельные ветки, которые становятся осмысленными после ядра. Модулей: 5.
Метки у модулей
Меток всего две, и обе про разное. Первая стоит только на факультативных модулях — их 9 из 30; всё остальное считается основным путём и никак не подписано. Обратной метки («база») нет намеренно: она была бы на почти каждой карточке и ничего бы не сообщала.
- факультатив
- можно взять по интересу или под задачу — на остальной путь не влияет. Факультативные модули не хуже и не проще: они просто нужны не всем и не сразу. Проверяется тестом, что у основного пути нет предпосылок снаружи — иначе «необязательное» становилось бы обязательным втихую.
Вторая метка — про готовность самого текста. Каждый модуль проходит независимое экспертное ревью, и пока оно идёт, это видно прямо на карточке. Сейчас ревью закрыто у 12 модулей из 25 открытых, ещё 5 запланированы.
- ✓ проверено
- модуль прошёл независимое ревью. Замечания ревью разобраны и закрыты, правки внесены в код и в текст.
- ◐ в ревью
- модуль доступен, ревью ещё идёт. Содержание на месте целиком — проверяются выводы, формулировки и протокол замеров.
- ○ запланирован
- страницы пока нет. В карте такой модуль показан, но ссылки у него пока нет.
Чего карта не делает
Она ничего не блокирует. Любой модуль открывается в любой момент — если предпосылки не пройдены, страница об этом скажет и даст ссылки, но не закроется. Порядок здесь — рекомендация, а не замок.
И она не хранит отдельного «порядка уроков»: карта, метки и связи строятся из одного описания графа, которое проверяется тестами. Если модуль окажется в пути, где у него не выполнена предпосылка, или ссылка уедет на несуществующую страницу — падает сборка, а не читатель.
Как читать числа в модулях
Почти все замеры сделаны на реальных данных — MovieLens в базовой части и лог чек-инов Brightkite в инженерной. Числа на страницах не набраны руками: они приезжают из артефактов, которые собираются офлайн, и это тоже проверяется тестами. Там, где механика синтетическая — например, симуляторы A/B или расхождения фичей, — это написано на самой странице рядом с цифрами.