Методы ранжирования в рекомендательных системах

машинное обучение

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

Фаза отзыва соответствует различным алгоритмам рекомендаций, упомянутым в предыдущих статьях, таким как данныематериалКак уже говорилось, Spotify использовал как минимум три алгоритма для создания своего знаменитого плейлиста Discover Weekly, в том числе:

  1. Разложение матрицы для изучения коллективного разума;
  2. НЛП обработка музыкальных обзоров статей и отчетов;
  3. Аудио анализируется с помощью сверточной нейронной сети.

Эти алгоритмы имеют свои особенности.Анализ звука, очевидно, может быть использован для решения проблемы холодного запуска.НЛП-обработка музыкальных рецензий также может помочь в изучении предметной области профессионалов.Каждый из них работает независимо и дает свои собственные результаты.Из-за их независимости число алгоритмов может быть увеличена, а также итеративно изменена самостоятельно.

Этот процесс выбирает сотни или тысячи наборов кандидатов из десятков миллионов элементов, а затем выбирает 30 песен для каждого пользователя на этапе сортировки. Эту сортировку можно понимать как функцию,F(user, item, context), входными данными являются пользователь, элемент, среда, выводите оценку от 0 до 1 и берите песни с наивысшей оценкой. Этот процесс часто называют оценкой CTR.

В этой статье рассказывается об общей форме этой «функции» и о том, как она в основном работает.

LR

Самой простой является логистическая регрессия, обобщенная линейная модель.

Возьмите пользовательский портрет пользователя (вектор), например[3, 1], объединение изображения элемента, например[4, 0], плюс вектор, представляющий контекст[0, 1, 1]получить после[3, 1, 4, 0, 0, 1, 1], если пользователь имел контакт с элементом, метка равна 1, и в сумме они составляют положительную выборку.В то же время элемент, «пропущенный» пользователем, или популярный элемент, с которым пользователь не контактировал можно использовать как отрицательный образец Метка 0, и следующее уравнение подходит:

y = \frac{1}{1 + e ^ {- (w ^ {T}x + w_0)}}

вxэто вышеуказанный вектор,w- вес, соответствующий каждому элементу x,bявляется перехват. Его функция потерь:

loss =\sum_{(x, y) \in D}-y \log \left(y^{\prime}\right)-(1-y) \log \left(1-y^{\prime}\right)

вyэто label0 или 1 выборки,y^{\prime}число от 0 до 1, предсказанное моделью.

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

Традиционный LR может обрабатывать только большие объемы данных в автономном режиме пакетами и не может эффективно обрабатывать крупномасштабные онлайн-потоки данных. Обновление модели может занять сутки и более, что не достаточно своевременно. В 2013 году Google предложил «Следуй за регуляризованным лидером» (FTRL) — онлайн-алгоритм логистической регрессии. Метод изменяет целевую функцию логистической регрессии и добавляет различные системные инженерные оптимизации, чтобы параметры модели можно было динамически обновлять в каждой точке данных в режиме онлайн.
Многие реализации FTRL с открытым исходным кодом можно найти в Интернете, например,libftrl-python.

FM | FFM

FM и FFM — это аббревиатуры от Factorization Machine и Field-aware Factorization Machine соответственно.

Как обобщенная линейная модель, LR будет трудно иметь дело с нелинейной связью между собственными векторами и метками. В настоящее время необходимо объединить функции, такие как использование линейной модели для прогнозирования площади различных приблизительных прямоугольных форм.Две функции длинныеx_1с широкимx_2, то очевидно, что хорошую модель нельзя выучить, и в это время добавляется новая функцияx_3=x_1 * x_2, вы можете получить хорошие результаты.

В практических приложениях размерность вектора признаков очень высока, и трудно непосредственно увидеть такую ​​значимую комбинацию, как в приведенном выше примере.Учитывая все две комбинации признаков, уравнение линейной регрессии принимает вид:

y(\mathbf{x})=w_{0}+\sum_{i=1}^{n} w_{i} x_{i}+\sum_{i=1}^{n} \sum_{j=i+1}^{n} w_{i j} x_{i} x_{j}

Кроме оригиналаiВ дополнение к весам необходимо узнать веса, соответствующие каждой комбинации признаков.w_{ij}обучение требует многоx_iиx_jОднако из-за разреженности, вызванной горячим кодированием и другими причинами, это требование не может быть выполнено, тогда недостаточное количество обучающих выборок приведет кw_{ij}являются неточными, что влияет на качество модели.

Решение состоит в использовании матричной факторизации. в рекомендательных системахuser_item_matrixВыполните декомпозицию, изучите низкоразмерный вектор, чтобы пользователь и элемент представляли себя. Тогда ситуация здесь может быть аналогична выражению всех весов комбинации признаков в виде матрицы формы (i * i), тогдаw_{ij}То есть значение i-й строки и j-го столбца этой матрицы, и эта многомерная матрица декомпозируется, и для каждого признака можно получить скрытый вектор о весе.v_i,Такw_{i j}использоватьv_iскалярное произведениеv_jможет быть получен. Тогда линейное уравнение принимает вид:

y(\mathbf{x})=w_{0}+\sum_{i=1}^{n} w_{i} x_{i}+\sum_{i=1}^{n} \sum_{j=i+1}^{n}\left\langle\mathbf{v}_{i}, \mathbf{v}_{j}\right\rangle x_{i} x_{j}

Вышеупомянутая модель называется машиной факторизации.После некоторых математических преобразований и обработки модель может бытьO(kn)Это относительно эффективная модель для обучения и прогнозирования в условиях сложности .

На основе FM была предложена машина факторизации с учетом полей. Например, в векторе признаков имеется более 200 измерений, представляющих страну пользователя.country.ukиcountry.usПодождите, тогда эти более 200 признаков можно считать принадлежащими полю, разница в признакеx_iПри изучении скрытых векторов для каждого поля необходимо изучить соответствующий скрытый вектор и вес комбинации признаков.w_{ij}в соответствии сx_iоx_jСкрытый вектор поля умножается наx_jоx_iполучается из скрытого вектора поля, которому он принадлежит, и линейное уравнение принимает вид:

y(\mathbf{x})=w_{0}+\sum_{i=1}^{n} w_{i} x_{i}+\sum_{i=1}^{n} \sum_{j=i+1}^{n}\left\langle\mathbf{v}_{{i}, f_{j}}, \mathbf{v}_{{j, f_{i}}}\right\rangle x_{i} x_{j}

Этот метод работает лучше, а сложность прогнозирования увеличивается доO(kn^2). Есть библиотеки с открытым исходным кодомlibffmреализация для использования.

GBDT & LR

Подход Facebook к оценке CTR рекламы заключается в использовании схемы Gradient Boosting Decision Tree (GBDT) и LR.

Идея состоит в том, чтобы отфильтровать и объединить векторы признаков, изначально предназначенные для ввода в LR через GBDT, для создания новых векторов признаков, а затем отправить их в LR. как показано на рисунке:

В качестве ансамблевой модели GBDT будет использовать несколько деревьев решений, и каждое дерево будет соответствовать остатку предыдущего дерева, чтобы получить хороший эффект подгонки. Когда образец вводится в дерево, он спускается к конечному узлу в соответствии с условиями каждого узла, устанавливает значение этого узла в 1 и устанавливает остальные в 0. Например, для обучения используются 3 дерева решений, каждое дерево решений имеет 5 листовых узлов, а выборки попадают на 1-й, 2-й и 3-й узлы слева направо в каждом дереве, и получаются три однократных броска, закодированных как[1, 0, 0, 0, 0],[0, 1, 0, 0, 0],[0, 0, 1, 0, 0], соединенные вместе как преобразованный вектор признаков:[1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0], введите в модель LR, чтобы получить оценку.

Эта модель значительно улучшила рекламный эффект Facebook.В опубликованной статье также обсуждаются различные технические приемы и детали, в том числе частота обновления GBDT и LR, практика уменьшения дискретизации и т. д. Реализация GBDT может использовать открытый исходный кодПакет XGBoost.

Wide & Deep

Рейтинг рекомендаций Google для приложений в Google Play использует модель глубокой ширины под названием Wide & Deep. Как показано ниже:

Широкая часть представляет собой обобщенную линейную модель, и некоторые комбинации признаков добавляются соответствующим образом на основе исходных признаков Глубокая часть представляет собой нейронную сеть с прямой связью, которая может изучать низкоразмерный плотный вектор для некоторых разреженных признаков и комбинировать информация о Широких и Глубоких Дополнение, по-прежнему использующее Зигмонда для предсказания функции, выраженной как:

P(Y=1 | \mathbf{x})=\sigma\left(\mathbf{w}\_{w i d e}^{T}[\mathbf{x}, \phi(\mathbf{x})]+\mathbf{w}\_{d e e p}^{T} a^{\left(l_{f}\right)}+b\right)

в\sigmaфункция Сигмонда,W_{wide}^Tвес широкой части,\phi(\mathbf{x})представляет собой комбинированный элемент широкой части,a^{\left(l_{f}\right)}Вывод для последнего слоя Глубокой сети,b— смещение линейной модели.

Соедините две модели вместе для совместного обучения (в отличие от обучения ансамбля, которое требует, чтобы каждая модель обучалась отдельно, а затем объединяла результаты), чтобы дополнить недостатки друг друга (сложность разработки функций и плохая интерпретируемость). Эта модель сравнима с моделью Google Play. онлайн-доход, по сравнению с чистой моделью Wide, это приносит улучшение на 3,9%. Реализация может относиться кtensorflow/modelsпроект.