矩陣分解模型MF如何進行在線更新

目前在評分預測方面,Matrix factorization模型是performance最好的一個模型。但它的缺點是整個模型訓練完後是靜態的。所謂靜態是指模型無法對更新做出靈活的改變。而更新在現實情境下十分常見的,比如用戶新評價了一個物品,一個新用戶註冊了,一個新物品被添加了。這就要求模型能較好地反映出這些變化。那爲什麼即使用SGD訓練模型,也不能直接在評分r_ij對應的用戶i特徵向量和物品j特徵向量更新呢?因爲對SGD來說,順序很重要。它訓練的過程是:

for i in 1:總共要迭代的次數

   for j in 1:物品個數
           使用物品 j 更新模型
   end

end


因此,拿新來的評分直接更新原有的模型會產生不同的更新序列。[1]指出,對於現有的評分集合R和新來的評分r,分別使用R和R∪r更新模型,產生的模型整體上差別應該不大;而且若該評分對應的用戶(物品)已給出(獲得)很多的評分,那麼該用戶(物品)對應的特徵向量也不需要更新。結合上述兩點,要依據新評分更新模型時,只用更新對應用戶(物品)的參數,而保持其他參數不變即可。


但是如何判斷要不要依據新評分更新模型呢?作者提出了兩點:①更新的概率隨用戶評論增多而減少②看現有評分能不能足夠好地預測該新評分。若可以則忽略該新評分,否則更新。個人覺得第二種方法十分reasonable,因爲就算用戶評論的物品再多,沒有代表性的話,對用戶特徵貢獻度也是不大的。作者在Netflix和Moivelen上的實驗顯示,這樣的更新策略能很好地近似使用所有評分訓練得到的模型。


最後,值得指出的是作者在MF中引入了kernel函數。Kernel函數本身可以是線性的,多項式的,或者是RBF等等。從論文的數據看,logistic kernel在文中獲得了最好的性能。


參考文獻:

[1]Online-Updating Regularized Kernel Matrix Factorization Models for Large-Scale Recommender Systems

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章