Леха Захаров – «Слив топа Литрес» (страница 4)
Этот метод отлично масштабируется и может обрабатывать миллиарды взаимодействий, что делает его идеальным для первого этапа фильтрации.
Но у ALS есть серьёзный недостаток — он не может предсказать вкусы новых пользователей, у которых ещё нет истории действий, и не знает, что делать с новой книгой, у которой нет оценок. Эта проблема называется «холодный старт». ALS может только «развести руками», присвоив новым объектам NaN-значения.
Кроме того, ALS — это «чёрный ящик». Он даёт ответ («вам понравится эта книга»), но не может объяснить, почему. Он не знает, что книга — фэнтези, а пользователь любит детективы. Он видит только цифры. Это принципиальное ограничение, которое и призван преодолеть CatBoost.
Если ALS — это артиллерийская подготовка, то CatBoost (Categorical Boosting) — это работа снайпера. Получив от ALS список из нескольких сотен книг-кандидатов, CatBoost начинает кропотливую работу по их сортировке. Он не просто отбирает лучших, он ранжирует их в идеальном порядке, начиная с самой релевантной и заканчивая наименее подходящей.
CatBoost — это мощный алгоритм градиентного бустинга на деревьях решений, разработанный компанией Яндекс. Если очень упрощённо, представьте себе группу экспертов, которые по очереди оценивают книгу. Первый говорит: «У неё высокая средняя оценка». Второй уточняет: «Но у неё мало покупок». Третий добавляет: «Зато её часто дочитывают до конца». Четвёртый замечает: «Автор этой книги уже имеет бестселлеры». В итоге, взвесив все мнения, система выносит вердикт. Именно так, последовательно исправляя ошибки предыдущих, и работает градиентный бустинг.
Главное преимущество CatBoost — его способность работать с любыми типами данных: числовыми, категориальными и даже текстовыми. Для книжной платформы это означает, что он может учитывать:
Категориальные данные: жанр книги, имя автора, издательство, наличие аудиоверсии.
Поведенческие данные: время, проведённое на странице книги, дочитывание до конца, возвращение к книге, частота чтения.
Контекстные данные: время суток (утром читают одно, вечером — другое), устройство (на телефоне в метро — короткие рассказы, на планшете дома — романы), сезонность.
Текстовые данные: название, аннотация, описание книги, которые CatBoost может анализировать встроенными методами NLP.
Именно благодаря этому многомерному анализу CatBoost способен совершить «снайперский выстрел», предложив книгу, о которой пользователь даже не подозревал, но которая окажется идеальной. Он не просто предсказывает вероятность покупки, он прогнозирует глубину вовлечения: дочитает ли пользователь книгу, поставит ли высокую оценку, порекомендует ли друзьям.
Давайте посмотрим, как эта дуэль разворачивается в реальных сценариях на «ЛитРес». Мы рассмотрим двух авторов и одну новинку.
Автор Иван: пишет крепкие детективы в духе Агаты Кристи. У него уже есть лояльная аудитория, но продажи стабильны и не растут.
Автор Пётр: экспериментирует со стилями, пишет смесь киберпанка, любовного романа и философской притчи. Его книги — либо «бомбы», либо «пустышки».
Ситуация 1: Автор Иван выпускает новую книгу в своём жанре.ALS легко находит «соседей» по вкусам среди поклонников детективов. Он формирует пул кандидатов, куда попадает книга Ивана. CatBoost, проанализировав факторы, даёт книге высокий ранг. Результат — стабильные продажи, попадание в тематические подборки, но без сюрпризов.
Ситуация 2: Автор Пётр выпускает новый роман.ALS не может определить его аудиторию. Книга не похожа ни на что, что пользователи читали раньше. ALS может включить её в пул кандидатов наугад или на основе общих факторов (например, новизны). Здесь всё решает CatBoost. Если первые пользователи, которым случайно показали книгу, проявят к ней интерес (начнут читать, дочитывать до конца), CatBoost мгновенно уловит этот сигнал и начнёт активно рекомендовать книгу похожим пользователям. Роман Петра может «выстрелить», став неожиданным хитом. Но если первые читатели не оценят эксперимент, CatBoost быстро «закопает» книгу, перестав её рекомендовать.
Ситуация 3: На платформе появляется супер-бестселлер (например, новый роман Пелевина).Здесь алгоритмы работают в особом режиме. ALS и CatBoost могут быть временно отключены, и книга начнёт показываться всем подряд, даже тем, кто предпочитает любовные романы. Это делается для максимизации прибыли и создания эффекта «мейнстрима».
Исход дуэли между ALS и CatBoost зависит от множества параметров, которые настраивают инженеры машинного обучения.
Ключевые параметры ALS:
rank: Количество латентных факторов (измерений) для описания пользователей и книг. Чем выше ранг, тем точнее модель, но выше риск переобучения и ниже скорость.
regParam: Параметр регуляризации, который штрафует модель за сложность и предотвращает переобучение.
alpha: Параметр, который определяет, насколько сильно ALS доверяет неявным сигналам (например, просмотру страницы) по сравнению с явными (покупкой).
Ключевые параметры CatBoost:
iterations / depth: Количество и глубина деревьев решений в ансамбле.
learning_rate: Скорость обучения. Более низкая скорость требует больше деревьев, но может привести к более точной модели.
loss function: Функция потерь, которую оптимизирует модель. Для ранжирования книг могут использоваться специальные функции, такие как YetiRank, PairLogit, NDCG.
CatBoost также предлагает уникальные методы борьбы с переобучением, такие как стохастический градиентный бустинг (SGB) и байесовский бутстрап.
Так кто же выходит победителем из этой дуэли? Ответ — никто. ALS и CatBoost не конкуренты, а партнёры. Их дуэль — это не бой, а танец. Каждый алгоритм делает то, что умеет лучше всего, компенсируя недостатки другого.
ALS — это стратегия: быстрый, дешёвый и масштабируемый метод, который задаёт направление.
CatBoost — это тактика: медленный, дорогой, но невероятно точный метод, который корректирует прицел и делает решающий выстрел.
Для автора это означает, что для успеха нужно угодить обоим алгоритмам.
Чтобы угодить ALS, нужно создать книгу, которая будет «похожа» на другие успешные книги в жанре. Не нужно изобретать велосипед — нужно делать качественные велосипеды.
Чтобы угодить CatBoost, нужно сделать книгу, которая будет вызывать глубокую вовлечённость: её должны дочитывать до конца, перечитывать, цитировать, рекомендовать.
В конечном счёте, побеждает тот автор, который пишет качественные книги, находит свою аудиторию и заставляет читателей возвращаться снова и снова. Алгоритмы лишь помогают читателю найти то, что ему действительно нужно. Понимание их внутренней кухни — это не магическая таблетка, а мощный инструмент, который позволяет использовать систему, а не бороться с ней.
Коллаборативная фильтрация: почему друг читает то же, что и вы
Представьте, что вы — заядлый читатель детективов. Вы только что закончили очередной роман о сыщике Эрасте Фандорине и, закрывая книгу, видите в блоке рекомендаций «ЛитРес» предложение: «Вам также может понравиться этот автор». И там — незнакомый вам Иван Любенко, у которого, как выяснится, есть свой сыщик, Клим Ардашев. Или знаменитая «Красная тайна» Наташи Бойд.
Вы думаете: «Откуда платформа узнала, что мне нравится? Слежка? Анализ моих биометрических данных? Или, может быть, магия?» На самом деле, всё проще и сложнее одновременно: в основе лежит коллаборативная фильтрация. Этот принцип, сформулированный ещё в начале 1990-х годов, гласит:
В контексте книг это означает, что если два человека читали и оценили примерно одинаковые произведения, то книга, которая понравилась одному из них, с большой вероятностью понравится и другому. Это как невидимый книжный клуб, где мнения миллионов читателей сводятся воедино, и на основе этого «коллективного разума» генерируются ваши персональные рекомендации.
Давайте разберемся, как работает этот «коллективный разум» и почему его часто называют «сердцем» любого современного рекомендательного сервиса, включая «ЛитРес».
Идея использования коллективных данных для рекомендаций не нова. Ещё в 1990 году шведский учёный Юсси Карлгрен впервые описал концепцию «цифрового книжного шкафа», где система могла бы советовать книги, анализируя предпочтения пользователя и его соседей по интересам. Однако первая практическая система, Tapestry, появилась в исследовательском центре Xerox PARC в 1992 году. Она создавалась для управления большим потоком электронной почты: пользователи вручную аннотировали сообщения, а система на основе этих пометок помогала отсеивать ненужные письма. Tapestry была умной, но полностью зависела от человеческих усилий.
Настоящий прорыв случился в 1994 году с рождением GroupLens — системы, которая впервые автоматизировала процесс. Именно тогда была предложена фундаментальная для всей отрасли идея: автоматически предсказывать оценку, которую пользователь поставит элементу, основываясь на оценках этого элемента другими пользователями.
Но подлинную популярность коллаборативной фильтрации принесла электронная коммерция. В 1998 году Amazon запустила свой легендарный алгоритм «покупатели, купившие этот товар, также купили...». Это был не просто академический эксперимент, а коммерчески успешное решение, которое мгновенно увеличило продажи. Алгоритм Amazon, основанный на item-based collaborative filtering, стал золотым стандартом для интернет-магазинов на годы вперёд.