3

這是一個理論問題。假設我已經實施了兩種類型的協作過濾:基於用戶的CF和基於項目的CF(形式爲Slope One)。如何處理推薦系統的新數據?

我有一個很好的數據集來運行這些算法。但後來我想做兩件事:

  1. 我想給數據集添加一個新的評級。
  2. 我想編輯現有評分。

我的算法應該如何處理這些變化(不做大量不必要的工作)?任何人都可以幫助我嗎?

回答

1

對於這兩種情況下,該策略是非常相似:

基於用戶的CF:

  • 更新所有相似之處爲受影響的用戶(即,一排,並在相似性矩陣的一列)
  • ,如果你的鄰居是預先計算的,計算爲受影響的用戶的鄰居(一個完整的更新,您可能需要重新計算所有的鄰居,但我會用近似解棒)

坡一:對於受影響的項(再次,一行和一列)

備註

  • 更新頻率(僅在「添加」的情況下)和Diff矩陣條目:如果'相似性'不對稱,則需要更新一行和一列。如果它是對稱的,則自動更新一行會導致更新相應的列。 對於Slope-One,矩陣是對稱的(頻率)和偏斜對稱(差異),所以如果你處理你也需要更新一行或一列,並免費獲得另一行(如果你的矩陣存儲像這樣工作) 。

    如果你想看到的是如何實現這一點的一個例子,看看MyMediaLite(免責聲明:我公司的主要作者):https://github.com/zenogantner/MyMediaLite/blob/master/src/MyMediaLite/RatingPrediction/ItemKNN.cs 有趣的代碼是在方法RetrainItem(),它是由被稱爲AddRatings()和UpdateRatings()。

0

一般的東西叫做在線算法

而不是重新訓練整個預測變量,它可以更新爲「在線」(同時保持可用)與新的數據只。

如果你谷歌的「在線斜率一個預測」你應該能夠找到一些相關的文獻方法。