這是一個理論問題。假設我已經實施了兩種類型的協作過濾:基於用戶的CF和基於項目的CF(形式爲Slope One)。如何處理推薦系統的新數據?
我有一個很好的數據集來運行這些算法。但後來我想做兩件事:
- 我想給數據集添加一個新的評級。
- 我想編輯現有評分。
我的算法應該如何處理這些變化(不做大量不必要的工作)?任何人都可以幫助我嗎?
這是一個理論問題。假設我已經實施了兩種類型的協作過濾:基於用戶的CF和基於項目的CF(形式爲Slope One)。如何處理推薦系統的新數據?
我有一個很好的數據集來運行這些算法。但後來我想做兩件事:
我的算法應該如何處理這些變化(不做大量不必要的工作)?任何人都可以幫助我嗎?
對於這兩種情況下,該策略是非常相似:
基於用戶的CF:
坡一:對於受影響的項(再次,一行和一列)
備註
如果你想看到的是如何實現這一點的一個例子,看看MyMediaLite(免責聲明:我公司的主要作者):https://github.com/zenogantner/MyMediaLite/blob/master/src/MyMediaLite/RatingPrediction/ItemKNN.cs 有趣的代碼是在方法RetrainItem(),它是由被稱爲AddRatings()和UpdateRatings()。
一般的東西叫做在線算法。
而不是重新訓練整個預測變量,它可以更新爲「在線」(同時保持可用)與新的數據只。
如果你谷歌的「在線斜率一個預測」你應該能夠找到一些相關的文獻方法。