1 Обзор
В условиях информационного взрыва одна из проблем, с которыми сталкиваются люди, заключается в том, как быстро и легко найти то, что им больше всего нужно, из огромного количества предлагаемых товаров или информации. Для решения этой проблемы и возникла «рекомендательная система». Вначале система рекомендаций была простой стратегией совместной фильтрации, но с развитием системы развилась сложная структура отзыва-сортировки-перестановки. Отзыв находится во главе этой системы и определяет потолок сортировки. В этой статье рассматриваются наиболее распространенные методы совместной фильтрации. Совместная фильтрация основана на идее «коллективного разума», которая заключается в убеждении, что люди склонны тяготеть к определенным частям населения, которые являются для них общими. Например, если вы хотите посмотреть фильм, но не знаете, какой из них посмотреть, большинство людей будут спрашивать у окружающих и, как правило, выбирают рекомендации от людей, которые обычно имеют схожие вкусы с их хобби. Преимущество совместной фильтрации заключается в том, что метод не чувствителен к предметной области, то есть ему не нужно много знать о рекомендуемой транзакции, а эффект часто лучше, чем у метода на основе содержимого. Но совместная фильтрация создает проблему «холодного старта». Далее в основном обсуждаются несколько часто используемых алгоритмов совместной фильтрации.
2. Алгоритмы
2.1 Окрестность CF
2.1 Принцип
Алгоритм совместной фильтрации на основе соседства является одним из наиболее распространенных алгоритмов для рекомендаций. Преимущества: низкая стоимость реализации, не так легко ошибиться, быстрая скорость расчета, хороший эффект и возможность рекомендовать элементы с длинным хвостом. Недостатком является то, что пользователи и элементы с небольшим числом кликов хвоста склонны к плохой регистрации. «Метод ближайшего соседа» включает в себя «совместную фильтрацию на основе элементов» и «совместную фильтрацию на основе пользователей». «Совместная фильтрация на основе элементов» — на основе элементов относится к поиску других элементов, похожих на элемент а. другие похожие элементы для пользователей. «Совместная фильтрация на основе пользователей» — на основе пользователей относится к поиску других пользователей B, C, D, которые похожи на пользователя A. Если пользователь A и пользователь B имеют схожие предпочтения просмотра, потому что пользователь A и пользователь B имеют схожие зрительские предпочтения Очень похожи, тогда считается, что другие элементы b, которые видел пользователь B, также, вероятно, понравятся пользователю A. Взяв диаграмму Корена в качестве примера для иллюстрации пользовательского метода, Джо нравятся три фильма a, b , c слева, и рекомендует его Джо При поиске фильма найдите похожих на него пользователей A, B и C. Все трое смотрели Фильм 1, Спасти рядового Райана. первый рекомендованный фильм.
2.2 Метод расчета
Возьмем метод базового элемента в качестве примера, чтобы проиллюстрировать, как вычислить сходство между элементами. Предположим, что пользователь А просмотрел или щелкнул элемент a, b (далее в совокупности именуемый кликом), аналогичным образом пользователь B щелкнул элемент b, элемент d, пользователь C щелкнул элемент a, элемент b, элемент c.
| item a | item b | item c | item d | |
|---|---|---|---|---|
| user A | 1 | 1 | ||
| user B | 1 | 1 | ||
| user C | 1 | 1 | 1 |
Разверните последовательность кликов, чтобы получить матрицу
2.3 Заключение
- Будут некоторые «непользовательские клики», то есть поисковые роботы и т. д., которые характеризуются чрезмерными кликами и должны быть удалены.
- Среди элементов, хотя мы хотим, чтобы каждый элемент был передан пользователю хотя бы один раз, что хорошо работает для длинного хвоста, в некоторых случаях качество по умолчанию не высокое для тех, у кого особенно мало кликов, и его также можно удалить. .
- При вычислении не расширяйтесь в вектор, а отдельно вычисляйте количество вхождений элемента a, количество вхождений элемента b и количество совместных вхождений элемента a и элемента b. Поэтому этот метод подходит для распараллеливания.
- Совместная фильтрация по элементам и пользователям выбирается по разным сценариям. Например, на торговой площадке Amazon количество пользователей значительно превышает количество товаров, и предпочтения пользователей сильно меняются, вещи, купленные в разные периоды, неодинаковы, сходство непостоянно, количество элементы относительно малы по сравнению с пользователями, и сходство между элементами более стабильно, поэтому чаще используется элемент на основе.
2. OCF (заказ-ср)
2.1 Принцип
Item-CF предназначен для расчета сходства между элементом и элементом после получения полного объема информации и одинаковой обработки всех элементов, на которые нажали, без учета порядка щелчков. OCF учитывает порядок последовательности кликов. Например, в новостном сценарии статья B, на которую нажали после того, как нажали на статью A, более релевантна статье A, чем статья C, на которую нажали до статьи A.
2.2 Метод расчета
| символ | значение |
|---|---|
| i,j | item |
| order(i,j) | В определенной транзакции j клик после i записывается как 1, в противном случае он записывается как 0 |
| click(i) | Общее количество кликов по мне |
| N | Общее количество транзакций |
2.3 Улучшение ОСФ
В приведенном выше методе по умолчанию все клики после статьи A одинаково важны. Однако интересы пользователей часто меняются с течением времени. Например, после нажатия для просмотра статьи а статья б, на которую нажимают сразу, может быть более похожей, чем статья в, на которую нажимают после 10 статей. Потому что с увеличением статей интерес пользователя может постоянно передаваться. На основе приведенных выше предположений предлагается oicf, основанный на гипотезе местоположения, и формула выглядит следующим образом:
По сути, это придание каждой позиции разного веса: чем ближе к исходной статье, тем больше вес клика.
3. SCF
3.1 Принцип
Этот метод взят из статьи Али «Инженерная реализация алгоритма рекомендаций в реальном времени SWING на основе структуры графа». Предположим, как показано на рисунке ниже
3.2 Расчет
| символ | значение |
|---|---|
| i,j | item |
| u,v | user |
| параметр | |
| Коллекция пользователей, которые нажали на i | |
| Совокупность пользователей, которые нажали на j |
SCF больше использует коллективный разум пользователя
3.3 Заключение
Из формулы видно, что если больше людей нажмут i и j одновременно,больше. Многие пользователи переходят на пошлые статьи, и их легко вывести на передний план, поэтому SCF легко стать популярным и пошлым. Его можно контролировать и решать другими средствами.
Элемент, на который нажимает пользователь, составляет не более нескольких сотен в день, при подсчете это не является большой проблемой. Однако на элемент будут нажимать миллионы или даже десятки миллионов пользователей, и эти пользователи составят пару для расчета, поэтому это займет много времени. Здесь нужна некоторая оптимизация. Ключом к оптимизации является комбинация (u1, u2).
- Карта трансляции (элемент, список пользователей) и Карта (пользователь, список элементов);
- Поместите RDD (u1, i1) -> RDD (u1, itemList) -> RDD ((i1, i2), u) -> RDD ((i1, i2), (u1, u2)) -> вычислите каждую пару ( i1 , i2) оценка -> сумма по ключу (i1, i2)
- Другое улучшение заключается в том, что вы можете вычислять только (userA, userB), потому что score(A,B)=score(B,A) , писать (userA, userB, score) и (userB, userA, score) при сохранении.
4. Матричное разложение ФМ
В отличие от предыдущего простого расчета, матричная факторизация является модельным методом и требует оптимального решения.
4.1 Основное преобразование матрицы
Суть матричного преобразования — это функция, в отличие от обычных функций, матричное преобразование получает вектор и выдает вектор. То есть вектор перемещается в другой вектор, а исходный единичный вектор перемещается в новую позицию. Например, есть векторДо преобразования
после преобразования
Предположение
,
,
получить
То есть, если преобразовать
и
Определяется положение , т. е. новая система отсчета координат, и может быть получен любой вектор в этом пространстве.
позиция. Запись этих двух векторов вместе является матричным умножением
Он представлен графически как:
4.2 Базовая модель
Основная модель матричной факторизации:,в
— рейтинг элемента i пользователем u,
- вектор элемента,
вектор для пользователя u. Цель оптимизации:
известен
Набор (u,i) .
Поскольку ни q, ни p не известны, это уравнение не является выпуклой функцией, а метод его решения — ALS (чередование наименьших квадратов).Один из них фиксируется в момент времени, например, p, тогда эта задача оптимизации эквивалентна квадратичной Задача оптимизации. Используйте SGD, чтобы найти оптимальное решение относительно p, затем исправьте p и решите задачу оптимизации относительно q и т. д.
4.3 Учет предвзятости
Из-за различных потребительских привычек каждого пользователя некоторые пользователи, как правило, дают каждому фильму более высокую оценку, а некоторые пользователи, как правило, имеют более низкую оценку, поэтому смещение накладывается на базовую модель.
Цель оптимизации:
является средним значением всех предметов. Например, чтобы спрогнозировать рейтинг Джо для «Титаника», средний балл для всех фильмов составляет 3,7, «Титаник» — хороший фильм, и он на 0,7 выше, чем средний фильм. пользователей, поэтому итоговая оценка составила 3,9 (3,7+0,5-0,3).
4.4 Сценарии неявной обратной связи
Наиболее распространенным вариантом использования приведенной выше матричной факторизации является явная обратная связь, и то, что нам нужно сделать сейчас, — это неявная обратная связь. Отображение обратной связи означает, что пользователи четко знают свое отношение, например, оценку фильма и т. д. Неявная обратная связь не отражает напрямую отношение пользователя, например, данные о кликах, данные просмотра, и клик пользователя не означает, что ему нравится элемент или новость. Неявная обратная связь очень отличается от явной обратной связи: неявная обратная связь более плотная и стабильная, а явная обратная связь более разреженная. Неявная обратная связь более реалистична, и данные легче получить; явная обратная связь лучше отражает отношение пользователей. Неявные данные обрабатываются иначе, чем явные данные. В настоящее время существует два метода для этих двух типов данных: точечный (предсказание предпочтения для точки) и парный (упорядочивание двух элементов). Для неявных данных метод оптимизации становится (в соответствии с исходным текстом, p, q заменяются на x, y соответственно):