Коллаборативная фильтрация
Коллаборативная фильтрация - 1 из основных методов построения рекомендательных систем, который основан на предположении, что если пользователям А и Б нравились одни и те же объекты в прошлом, то им будут нравиться и другие общие объекты. Простыми словами, это метод рекомендаций, использующий «коллективный разум»: система ищет людей со схожими вкусами и рекомендует то, что понравилось одним, другим.
В отличие от контентной фильтрации, которая анализирует свойства самих объектов (товаров, фильмов, статей), коллаборативная фильтрация работает только с историей взаимодействий пользователей и объектов. Она не требует понимания того, что представляет собой объект, а опирается исключительно на оценки и поведение пользователей. Этот подход лежит в основе рекомендаций Amazon («покупатели этого товара также купили»), Netflix, Ozon и Wildberries.
Основные принципы
[править]В основе коллаборативной фильтрации лежит матрица «пользователь-объект».
Матрица взаимодействий
[править]Вся информация для работы метода представляется в виде таблицы (матрицы), где строки - это пользователи, столбцы - объекты (товары, фильмы, статьи), а в ячейках - оценки или факты взаимодействия.
Оценки могут быть:
- Явными: пользователь сам поставил оценку (например, звёздочки от 1 до 5, лайк/дизлайк).
- Неявными: оценка выводится из поведения (просмотр, клик, добавление в корзину, время на странице).
Матрица обычно получается очень разреженной (sparse), так как каждый пользователь взаимодействует лишь с ничтожно малой долей всех объектов.
Основное предположение
[править]Ключевая гипотеза: пользователи, которые одинаково оценивали какие-то объекты в прошлом, будут сходно оценивать и новые объекты. Если двум людям нравится «Звёздные войны», «Властелин колец» и «Матрица», то с высокой вероятностью им обоим понравится и «Интерстеллар».
Типы коллаборативной фильтрации
[править]Существует 2 основных подхода к реализации метода.
User-based (на основе сходства пользователей)
[править]Этот подход ищет пользователей, похожих на текущего, и рекомендует то, что понравилось им, но ещё неизвестно текущему.
Алгоритм работы: 1. Найти для текущего пользователя U группу пользователей, максимально похожих на него по истории оценок. 2. Собрать все объекты, которые понравились этим похожим пользователям. 3. Исключить объекты, с которыми U уже взаимодействовал. 4. Рекомендовать оставшиеся объекты, отсортировав их по степени предпочтения у похожих пользователей.
Плюсы: интуитивно понятен, может давать неожиданные, но интересные рекомендации. Минусы: плохо масштабируется (поиск похожих пользователей среди миллионов требует огромных вычислений), страдает от проблемы «холодного старта» (новые пользователи).
Item-based (на основе сходства объектов)
[править]Этот подход ищет объекты, похожие на те, которые уже понравились пользователю. Именно он лежит в основе знаменитого блока «покупатели этого товара также купили».
Алгоритм работы:
- Посмотреть, с какими объектами пользователь уже взаимодействовал (купил, посмотрел, оценил).
- Для каждого такого объекта найти другие объекты, которые часто взаимодействуют с ним (их часто покупают вместе, смотрят после него и т.д.).
- Собрать все найденные объекты, отсортировать их по частоте совместных взаимодействий и рекомендовать пользователю.
Плюсы: лучше масштабируется, чем user-based (сходство между объектами можно предрассчитать заранее), хорошо работает на больших данных. Минусы: рекомендации получаются более предсказуемыми, реже выводят за пределы уже известных категорий.
Пример различий
[править]- User-based: «Другие люди с похожим на ваш вкусом также любят этот фильм».
- Item-based: «Люди, которым понравился этот фильм, также любят этот».
Математические основы
[править]Для определения «похожести» пользователей или объектов используются различные метрики.
Косинусное сходство
[править]Самая популярная метрика. Представляет пользователей (или объекты) как векторы в многомерном пространстве оценок. Сходство измеряется как косинус угла между векторами. Чем ближе векторы, тем выше сходство.
Корреляция Пирсона
[править]Учитывает не только совпадения, но и разброс оценок. Корректирует ситуацию, когда 1 пользователь ставит в основном четвёрки, а другой - пятёрки.
Евклидово расстояние
[править]Измеряет «физическое» расстояние между векторами. Чем меньше расстояние, тем выше сходство.
Коэффициент Жаккара
[править]Используется в основном для бинарных данных (купил/не купил). Показывает отношение размера пересечения множеств к размеру их объединения.
Проблемы и ограничения
[править]Несмотря на свою эффективность, коллаборативная фильтрация сталкивается с рядом серьёзных проблем.
Холодный старт (Cold Start)
[править]Классическая проблема всех рекомендательных систем, основанных на истории взаимодействий.
- Новый пользователь: система не знает его предпочтений и не может ничего рекомендовать, кроме самых популярных объектов.
- Новый объект: новый товар или фильм не имеет истории взаимодействий, и система не может его никому рекомендовать.
Разреженность данных (Sparsity)
[править]Матрица взаимодействий обычно очень разрежена. Пользователи взаимодействуют лишь с тысячной долей процента от всех доступных объектов. Это затрудняет поиск реальных сходств.
Масштабируемость
[править]Для миллионов пользователей и объектов расчёт сходств требует огромных вычислительных мощностей. Особенно это критично для user-based подхода.
Проблема «серой овцы» (Gray Sheep)
[править]Есть пользователи со странными, ни на кого не похожими вкусами. Для них сложно найти похожих людей, и рекомендации для них будут плохими.
Популярность и «пузырь фильтров»
[править]Система может зацикливаться на рекомендации популярных объектов, не давая пользователю увидеть что-то новое и нестандартное. Кроме того, она может запирать пользователя в «пузыре» однотипных рекомендаций, не выводя его за пределы уже известных предпочтений.
Математические методы
[править]Существуют разные математические подходы к реализации коллаборативной фильтрации.
Метод ближайших соседей (kNN)
[править]Классический подход, описанный выше (поиск k ближайших соседей и агрегация их оценок). Прост в реализации и понимании, но имеет проблемы с масштабированием.
Матричная факторизация
[править]Более современный и мощный подход. Матрица «пользователь-объект» разлагается на произведение 2 матриц меньшей размерности: матрицы скрытых факторов для пользователей и матрицы скрытых факторов для объектов. Эти факторы не задаются экспертами, а автоматически извлекаются алгоритмом в процессе обучения. Например, для фильмов факторами могут быть «комедийность», «боевиковость», «наличие определённого актёра».
Самый известный пример матричной факторизации - алгоритм SVD (Singular Value Decomposition), который прославился благодаря победе команды BellKor на конкурсе Netflix Prize.
Глубокое обучение
[править]Современные рекомендательные системы всё чаще используют нейросети и глубокое обучение для построения более сложных моделей, учитывающих последовательности действий пользователей (например, нейросетевые модели session-based recommendations).
Применение в маркетинге
[править]Коллаборативная фильтрация широко используется в интернет-маркетинге.
E-commerce
[править]Блоки «С этим товаром покупают», «Вам может понравиться», «Похожие товары» на сайтах Ozon, Wildberries и Яндекс Маркета построены именно на этом принципе. Они анализируют миллионы покупок, чтобы находить товары, которые люди часто берут вместе.
Контентные платформы
[править]YouTube, Netflix, Кинопоиск, Яндекс.Музыка используют коллаборативную фильтрацию для рекомендации видео, фильмов и треков.
Email-маркетинг
[править]Персонализированные рекомендации товаров в email-рассылках часто строятся на основе коллаборативной фильтрации.
Ретаргетинг
[править]Показ рекламы товаров, которые пользователь уже смотрел, - это простейший вид коллаборативной фильтрации (на основе его собственных действий).
