Как обрабатывать новые данные для системы рекомендаций?

Вот теоретический вопрос. Давайте предположим, что я реализовал два типа совместной фильтрации: CF на основе пользователя и CF на основе элементов (в форме Slope One).

У меня есть хороший набор данных для этих алгоритмов. Но тогда я хочу сделать две вещи:

  1. Я хотел бы добавить новый рейтинг к набору данных.
  2. Я хотел бы редактировать существующий рейтинг.

Как мои алгоритмы должны обрабатывать эти изменения (не делая много ненужной работы)? Кто-нибудь может мне помочь с этим?

2 ответа

В обоих случаях стратегия очень похожа:

основанный на пользователя CF:

  • обновить все сходства для затронутого пользователя (то есть одну строку и один столбец в матрице сходства)
  • если ваши соседи предварительно вычислены, вычислите соседей для затронутого пользователя (для полного обновления вам, возможно, придется пересчитать всех соседей, но я бы придерживался приблизительного решения)

Склон-One:

  • обновить частоту (только в случае "добавления") и записи в матрице различий для затронутого элемента (опять же, одна строка и один столбец)

Примечание: если ваше "сходство" асимметрично, вам необходимо обновить одну строку и один столбец. Если это симметрично, обновление одной строки автоматически приводит к обновлению соответствующего столбца. Для Slope-One матрицы являются симметричными (по частоте) и косо-симметричными (по разности), поэтому, если вы обрабатываете, вам также необходимо обновить одну строку или столбец и получить другую бесплатно (если хранилище вашей матрицы работает так).

Если вы хотите увидеть пример того, как это может быть реализовано, взгляните на MyMediaLite (отказ от ответственности: я являюсь основным автором): https://github.com/zenogantner/MyMediaLite/blob/master/src/MyMediaLite/RatingPrediction/ItemKNN.cs Интересный код находится в методе RetrainItem(), который вызывается из AddRatings() и UpdateRatings().

Общее, что называется онлайн алгоритмы.

Вместо переподготовки всего предиктора, он может обновляться "онлайн" (оставаясь пригодным для использования) только с новыми данными.

Если вы воспользуетесь "онлайн-предиктором наклона один", вы сможете найти некоторые подходы из литературы.

Другие вопросы по тегам