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

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

При совместной фильтрации на основе пользователей у нас есть активный пользователь, которому адресована рекомендация. Механизм совместной фильтрации сначала ищет похожих пользователей. То есть пользователи, которые разделяют шаблоны рейтингов активных пользователей. Совместная фильтрация основывает это сходство на таких вещах, как история, предпочтения и выбор, который пользователи делают при покупке, просмотре или получении удовольствия от чего-либо.

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

Предположим, что у нас есть простая матрица элементов пользователя, которая показывает оценки четырех пользователей для пяти разных фильмов. Предположим также, что наш активный пользователь посмотрел и оценил три из этих пяти фильмов. Давайте выясним, какой из двух фильмов, которые не смотрел наш активный пользователь, стоит порекомендовать ей. Первый шаг - выяснить, насколько активный пользователь похож на других пользователей. как нам это сделать? Что ж, это можно сделать с помощью нескольких различных статистических и векторных методов, таких как измерения расстояния или сходства, включая евклидово расстояние, корреляцию Пирсона, косинусное сходство и так далее.

Чтобы рассчитать уровень сходства между двумя пользователями, мы используем три фильма, которые оба пользователя оценили в прошлом. Независимо от того, что мы используем для измерения сходства, скажем, например, сходство между активным пользователем и другими пользователями может составлять 0,7, 0,9 и 0,4. Эти числа представляют собой веса сходства или близость активного пользователя к другим пользователям в наборе данных.

Следующим шагом будет создание взвешенной рейтинговой матрицы. Мы просто вычислили сходство пользователей с нашим активным пользователем на предыдущем слайде. Теперь мы можем использовать его для расчета возможного мнения активного пользователя о двух наших целевых фильмах. Это достигается путем умножения весов подобия на оценки пользователей. В результате получается матрица взвешенных оценок, которая представляет мнение соседей пользователя о двух фильмах-кандидатах на рекомендацию. Фактически, он учитывает поведение других пользователей и придает больший вес рейтингам тех пользователей, которые больше похожи на активного пользователя.

Теперь мы можем сгенерировать матрицу рекомендаций, суммируя все взвешенные ставки. Однако, поскольку три пользователя оценили первый потенциальный фильм, а два пользователя оценили второй фильм, мы должны нормализовать взвешенные значения рейтинга. Мы делаем это путем деления на сумму индекса сходства для пользователей. Результатом является потенциальная оценка, которую наш активный пользователь даст этим фильмам на основе ее сходства с другими пользователями. Очевидно, что мы можем использовать его для ранжирования фильмов и предоставления рекомендаций нашему активному пользователю.

Теперь давайте посмотрим, чем отличается совместная фильтрация на основе пользователей и элементов. При подходе, основанном на пользователях, рекомендация основывается на пользователях из того же района, с которыми он или она разделяет общие предпочтения. Например, поскольку пользователю 1 и пользователю 3 понравился элемент 3 и элемент 4, мы рассматриваем их как похожих или соседних пользователей и рекомендуем элемент 1, который положительно оценен пользователем 1, пользователю 3. При подходе на основе элементов аналогичные элементы строить окрестности на основе поведения пользователей. Обратите внимание, однако, что это не основано на их содержании. Например, элемент 1 и элемент 3 считаются соседними, поскольку они были положительно оценены как пользователем 1, так и пользователем 2. Таким образом, элемент 1 можно рекомендовать пользователю 3, поскольку он уже проявил интерес к элементу 3. Таким образом, рекомендации здесь следующие. на основе элементов в окрестностях, которые может предпочесть пользователь.

Совместная фильтрация - очень эффективная система рекомендаций. Однако с этим также есть некоторые проблемы.

Одна из них - разреженность данных. Редкость данных возникает, когда у вас есть большой набор данных пользователей, которые обычно оценивают только ограниченное количество элементов. Как уже упоминалось, рекомендатели на основе совместной работы могут прогнозировать оценку элемента только в том случае, если есть другие пользователи, которые его оценили. Из-за редкости у нас может не быть достаточного количества оценок в наборе данных пользовательских элементов, что делает невозможным предоставление правильных рекомендаций. Еще одна проблема, о которой следует помнить, - это холодный старт. Холодный старт связан с трудностями, с которыми система рекомендаций сталкивается при появлении нового пользователя, и поэтому профиль для них еще не существует. Холодный старт также может произойти, когда у нас есть новый предмет, который не получил оценки. Масштабируемость также может стать проблемой. По мере увеличения количества пользователей или элементов и увеличения объема данных алгоритмы совместной фильтрации начнут падать в производительности просто из-за роста и вычисления сходства.