«Слив топа Литрес»
«Слив топа Литрес»

Полная версия

«Слив топа Литрес»

Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
2 из 3

Формирование пула кандидатов: отобрать 500 книг с наивысшими предсказаниями.

Извлечение признаков: для каждой из 500 книг извлечь сотни поведенческих, семантических, контекстных и мета-признаков.

Запуск CatBoost: прогнать эти 500 книг через обученную модель градиентного бустинга, получив для каждой итоговый скор.

Сортировка и фильтрация: отсортировать книги по убыванию скора, убрать дубликаты, книги, которые пользователь уже читал, и книги, которые не соответствуют возрастным ограничениям.

Формирование ответа: отправить на ваш экран первые 20–30 книг, которые вы увидите.

И всё это должно произойти за менее чем 100 миллисекунд (0,1 секунды), чтобы вы не заметили задержки. Это инженерный подвиг, сопоставимый с управлением космическим кораблём.

Именно поэтому не все книги могут быть показаны всем пользователям. Вычислительные ресурсы конечны. И именно поэтому понимание алгоритмов — это не просто академический интерес. Это вопрос выживания в океане контента.

Итоги главы: что мы узнали

Рекомендательная система «ЛитРес» — двухэтапная. ALS отвечает за быстрый отбор кандидатов из миллионов книг на основе коллаборативной фильтрации. CatBoost — за точное ранжирование сотен кандидатов с учётом поведенческих, семантических и контекстных признаков.

Главная метрика — дочитывание до конца. Она перевешивает даже покупку.

Семантическая модель Sentence-BERT позволяет системе понимать не только жанр книги, но и её настроение, стиль, эмоциональную тональность, делая рекомендации гораздо более точными.

Матрица факторов ранжирования включает десятки параметров, от времени суток до устройства чтения. Некоторые факторы дают буст, другие — штрафуют книгу.

Идеальная книга с точки зрения алгоритма — это книга с точным названием, чётким жанром, качественной обложкой, «цепляющим» началом, удовлетворительной концовкой и оптимальным объёмом. Это книга, которую читают до конца и оставляют высокие оценки.

Понимание этих алгоритмов даёт автору неоспоримое преимущество. Вы больше не играете вслепую. Вы знаете правила игры.

А пока — запомните главное: «ЛитРес» не просто продаёт книги. «ЛитРес» продаёт предсказания. И чем точнее предсказание, тем больше денег зарабатывает и платформа, и авторы. А значит, ваша задача как автора — стать максимально предсказуемым для алгоритмов. Не уникальным, не гениальным, не нишевым. А предсказуемым. Звучит цинично? Возможно. Но это — суровый закон цифрового рынка. И чем раньше вы его примете, тем выше будет ваша книга в топе.

Противоборство ALS и CatBoost на книжной платформе — это не просто техническая схватка алгоритмов, а фундаментальная дуэль архитектурных парадигм. Это спор между быстрым, интуитивным предсказанием, основанным на коллективном опыте (ALS), и глубоким, взвешенным анализом сотен сигналов, который способен уловить тончайшие нюансы поведения и контекста (CatBoost).

Мы уже знаем, что эти два алгоритма работают в связке на разных этапах рекомендательного конвейера. Но если присмотреться, между ними разворачивается настоящая дуэль — не на уничтожение, а на эффективность. Один задаёт направление, другой — корректирует прицел. И от того, насколько слаженно работает этот дуэт, напрямую зависят продажи авторов и впечатления читателей.

ALS против CatBoost: дуэль алгоритмов на ваших продажах

ALS (Alternating Least Squares) — это рабочий класс системы рекомендаций. Его задача — максимально быстро, используя минимум ресурсов, сократить каталог из миллионов книг до нескольких сотен потенциальных кандидатов, которые могут быть интересны пользователю.

Главная сила ALS — в его способности работать с неявными данными (implicit feedback). Книжные платформы, как и многие другие сервисы, сталкиваются с тем, что пользователи неохотно ставят звёзды и пишут рецензии. Но зато каждый день они генерируют горы неявных сигналов: открыли книгу, пролистали пару страниц, добавили в избранное, купили, но так и не дочитали.

ALS виртуозно обрабатывает эту разреженную матрицу данных. Он представляет и пользователей, и книги в виде многомерных векторов (латентных факторов) в абстрактном пространстве «вкусов». Представьте, что каждому читателю и каждой книге присваивается уникальный «числовой паспорт» из, скажем, 50 параметров (rank). Эти параметры сами по себе не интерпретируемы, но их комбинация идеально описывает предпочтения.

Как это работает на практике. ALS итеративно (alternating) решает две задачи. Сначала, фиксируя векторы книг, он подбирает наилучшие векторы для пользователей. Затем, наоборот, фиксирует векторы пользователей и уточняет векторы книг. Цель — минимизировать разницу (least squares) между реальными действиями пользователя и предсказанием модели. На выходе мы получаем предсказание: насколько книга X понравится пользователю Y.

Этот метод отлично масштабируется и может обрабатывать миллиарды взаимодействий, что делает его идеальным для первого этапа фильтрации.

Но у 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, стал золотым стандартом для интернет-магазинов на годы вперёд.

Кульминацией же интереса к этой технологии стал Netflix Prize 2006 года. Стриминговый сервис пообещал 1 миллион долларов тому, кто сможет улучшить точность их собственной рекомендательной системы Cinematch на 10%. Этот конкурс привлёк тысячи исследователей и инженеров со всего мира, породил целый шквал инноваций в области матричного разложения и привёл к созданию гибридных моделей, которые до сих пор лежат в основе многих современных систем.

Любая коллаборативная модель начинается со сбора данных. Эти данные делятся на два типа, каждый из которых имеет свои преимущества и недостатки.

Явная обратная связь (Explicit Feedback) — это прямые действия пользователя, выражающие его мнение. Звёздный рейтинг на «ЛитРес» — самый яркий пример. Другие формы — лайки, дизлайки, написанные рецензии. Плюсы явной обратной связи в том, что она даёт чёткий и понятный сигнал: 5 звёзд — «мне очень нравится», 1 звезда — «это ужасно». Однако у неё есть два серьёзных недостатка. Во-первых, пользователи неохотно оценивают каждый товар. На «ЛитРес», как и на любом другом сервисе, абсолютное большинство книг, которые вы читаете, вы не оцениваете. Матрица «пользователь-товар» оказывается чудовищно разреженной. Во-вторых, явная обратная связь подвержена систематическим ошибкам: одни пользователи ставят 5 звёзд всему, что прочитали, другие — никогда не ставят выше 3.

Неявная обратная связь (Implicit Feedback) стала настоящим спасением для современных рекомендательных систем. Она включает в себя всевозможные действия пользователя, которые косвенно указывают на его предпочтения. На «ЛитРес» это:

Покупка книги — сильный, но не абсолютный сигнал (можно купить в подарок или по ошибке).

Факт прочтения — гораздо более надёжный сигнал.

Дочитывание до конца — самый сильный сигнал из возможных.

Время, проведённое на странице книги (долгое чтение = интерес).

Добавление в избранное, цитирование, репост.

Прокрутка страницы и клики.

Преимущество неявной обратной связи в её объёме и дешевизне. В отличие от звёздного рейтинга, эти данные собираются автоматически для каждого пользовательского сеанса. Проблема же в том, что эти сигналы неоднозначны. Покупка книги, которая так и не была прочитана, может означать всё что угодно: от разочарования до банальной нехватки времени. Поэтому современные алгоритмы, такие как ALS (Alternating Least Squares), специально адаптированы для работы с такими данными.

Независимо от того, использует система явную или неявную обратную связь, существует два фундаментальных подхода к поиску сходства.

Этот подход отвечает на вопрос: «Какие пользователи похожи на меня?»

Представьте себе многомерное пространство, в котором каждый пользователь — это точка, а координаты точки — это оценки, которые он поставил книгам. Алгоритм user-based находит пользователей, чьи векторы оценок наиболее близки к вашему. Обычно для этого используется метод k-ближайших соседей (k-NN), который находит k самых похожих на вас читателей.

Затем, чтобы сформировать рекомендацию, система смотрит на то, какие книги нравятся этим «соседям», но которые вы ещё не читали. Чем больше похожих пользователей оценили книгу высоко, и чем выше их сходство с вами, тем выше будет предсказанная оценка для вас.

Пример: Вы — поклонник твёрдой научной фантастики. Другой пользователь, Алиса, имеет с вами 90% совпадений в оценках по книгам Айзека Азимова, Артура Кларка и Филипа Дика. Система обнаруживает, что Алиса в восторге от романа «Слепое видение» Питера Уоттса, которого вы не читали. С большой вероятностью, этот роман будет вам рекомендован. Именно так работает принцип «друг читает то же, что и вы».

Преимущества UBCF:

Эффективен, когда пользователей относительно немного, а у каждого из них есть достаточно много оценок.

Способен предлагать неожиданные, «сёрендипные» находки (serendipity), которые могут выходить за рамки вашего обычного жанра.

Недостатки UBCF:

Плохо масштабируется: поиск похожих пользователей среди миллионов требует огромных вычислительных мощностей.

Страдает от проблемы «холодного старта» для новых пользователей (у которых ещё нет оценок).

Вкусы пользователей меняются со временем, и «сосед», который был похож на вас год назад, сегодня может им не быть.

Этот подход, напротив, отвечает на вопрос: «Какие книги похожи на те, что мне понравились?»

Здесь система ищет сходство не между пользователями, а между товарами. Она строит матрицу похожести книг: если пользователи часто покупают книгу А вместе с книгой Б, то между этими книгами возникает сильная связь. И как только вы прочитали книгу А, система автоматически рекомендует вам книгу Б. Именно этот подход лежит в основе знаменитого блока «Читатели, купившие эту книгу, также купили...» на Amazon.

Пример: На «ЛитРес» замечена сильная корреляция: 80% пользователей, купивших «Сто лет одиночества» Габриэля Гарсиа Маркеса, также купили «Игру в классики» Хулио Кортасара. Если вы купили Маркеса, система, не зная о ваших вкусах почти ничего, смело порекомендует вам Кортасара.

Преимущества IBCF:

Гораздо лучше масштабируется, так как количество товаров обычно стабильнее и меньше количества пользователей.

Менее чувствителен к смене вкусов: матрица похожести книг обновляется медленнее, чем профили пользователей.

Легче интерпретируем: «Вам рекомендуют эту книгу, потому что вы читали вот эту».

Недостатки IBCF:

Может привести к «пузырю фильтров»: вы будете получать рекомендации, очень похожие на то, что уже читали, и реже открывать для себя что-то совершенно новое.

Требует достаточного количества данных о совместных покупках. Для новой книги, которую ещё никто не покупал, связи построить невозможно («холодный старт»).

Поиск ближайших соседей (k-NN) — это мощный, но «жадный» алгоритм. Он требует попарного сравнения каждого пользователя с каждым или каждого товара с каждым, что для масштабов «ЛитРес» нереалистично. Именно поэтому современные системы используют модель, основанную на матричном разложении (Matrix Factorization).

Идея матричного разложения проста: представить огромную и разреженную матрицу «пользователи-книги» (в которой 99% ячеек пусты) как произведение двух (или более) матриц меньшего размера.

Представьте, что у каждого пользователя и каждой книги есть свой скрытый профиль — набор из 50-100 латентных факторов. Эти факторы не имеют чётких имён, но на практике один фактор может соответствовать «любви к магическому реализму», другой — «интересу к историческим детективам», третий — «склонности к короткой прозе» и так далее.

Профиль пользователя — это вектор (список) из 100 чисел, описывающих его вкус в этом многомерном пространстве. Профиль книги — это тоже вектор из 100 чисел, описывающих её «вкусовую геометрию». Предсказанная оценка — это просто скалярное произведение этих двух векторов. Если векторы сонаправлены (пользователь и книга «подходят» друг другу), произведение будет большим; если ортогональны (пользователю это неинтересно) — маленьким.

Задача алгоритма — подобрать эти профили (векторы) для всех пользователей и всех книг так, чтобы предсказанные оценки максимально совпадали с реальными (где они есть). Но как это сделать, когда большинство реальных оценок неизвестны? Здесь на сцену выходит ALS (Alternating Least Squares) — метод, который итеративно решает эту задачу.

Алгоритм ALS работает следующим образом:

Инициализация: Профилям книг случайным образом присваиваются небольшие числа.

Шаг 1: Фиксируем профили книг и решаем задачу наименьших квадратов, чтобы найти оптимальные профили пользователей.

Шаг 2: Фиксируем новые профили пользователей и решаем задачу наименьших квадратов, чтобы найти оптимальные профили книг.

Повторение: Эти шаги повторяются (alternating) многократно, пока профили не сойдутся к оптимальным значениям.

Прелесть ALS в том, что он позволяет эффективно работать с неявной обратной связью. Специальная версия ALS, ALS-WR (ALS with Weighted-λ-Regularization), вместо прямой предсказания оценки предсказывает уверенность (confidence) в том, что пользователю понравится книга. Именно этот алгоритм, адаптированный для неявных данных, используется в Apache Spark MLlib, популярном фреймворке для построения рекомендательных систем на больших данных. Аналогичные методы, по-видимому, применяются и в «ЛитРес».

Почему коллаборативная фильтрация стала доминирующим подходом в индустрии? У неё есть несколько ключевых преимуществ:

Не требует знания предметной области (No domain knowledge necessary). Чтобы предсказать, понравится ли вам книга, системе не нужно знать, что такое «сюжет», «стиль» или «атмосфера». Она просто находит математические закономерности в ваших действиях и действиях других людей. Это делает алгоритм универсальным: его можно обучить на данных о фильмах, музыке, книгах или товарах, практически не меняя код.

На страницу:
2 из 3