SVD推薦算法(二)

SVD推薦算法(二)

這次講解的是model-based的SVD推薦算法。

跟ALS推薦算法一樣,都是矩陣分解的推薦算法,只不過求解的方式不同而已。

 

假如評分矩陣是R,那麼我們希望擬合這樣一個模型

R=U*M

其中U是user特徵,M是item特徵。

假如一個user的特徵是u,一個item的特徵是i,那麼這個user對這個item的評分就是

u*i(兩個特徵的內積)。

 

損失函數是:


然後我們的目標就是最小化這個E了。

 

這是SVD矩陣分解預測評分最基本的一種方法。

基於這個思想,各種最優化的方式和損失函數的改造也隨之提出來了,來優化這個算法。

 

最小化損失函數,我們可以用Batch Gradient Descent,Stochastic Gradient Descent等。

損失函數,我們可以加上正則項防止過擬合。

矩陣分解模型上,我們可以加上user評分偏差和item評分偏差。

 

我用了論文《A Guide to Singular Value Decomposition for Collaborative Filtering

》的一種方法,實現了一個單機版的SVD矩陣分解預測評分。

https://github.com/linger2012/svd-for-recommendation-implemented-by-java

 

用到的損失函數是



求解用SGD,對於每個已知user-item的評分,都更新一次模型。


1000次遍歷訓練集,對於測試集的rmse能達到0.96,還是不錯的。

用到的數據集是movielens的一個。

代碼和數據集都可以在上面我提供的github地址下載到。

 

 

 

參考資料:

 

 

A Guide to Singular Value Decomposition forCollaborative Filtering

http://www.csie.ntu.edu.tw/~r95007/thesis/svdnetflix/report/report.pdf

 

Collaborative Filtering for Netflix

https://classes.soe.ucsc.edu/cmps242/Fall09/proj/mpercy_svd_paper.pdf

 

在MovieLens數據集上用SVD進行評分預測

http://blog.csdn.net/daer520/article/details/19929523

 

基於矩陣分解的推薦算法,簡單入門 - kobeshow

http://itindex.net/detail/48960-%E7%9F%A9%E9%98%B5%E5%88%86%E8%A7%A3-%E6%8E%A8%E8%8D%90%E7%AE%97%E6%B3%95-kobeshow

 

 


本文作者:linger

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