推薦系統相關算法(1):SVD

1. SVD簡介

      假如要預測Zero君對一部電影M的評分,而手上只有Zero君對若干部電影的評分和風炎君對若干部電影的評分(包含M的評分)。那麼能預測出Zero君對M的評分嗎?答案顯然是能。最簡單的方法就是直接將預測分定爲平均分。不過這時的準確度就難說了。本文將介紹一種比這個最簡單的方法要準上許多,並且也不算複雜的算法。
      SVD(Singular Value Decomposition)的想法是根據已有的評分情況,分析出評分者對各個因子的喜好程度以及電影包含各個因子的程度,最後再反過來根據分析結果預測評分。電影中的因子可以理解成這些東西:電影的搞笑程度,電影的愛情愛得死去活來的程度,電影的恐怖程度。。。。。。SVD的想法抽象點來看就是將一個N行M列的評分矩陣R(R[u][i]代表第u個用戶對第i個物品的評分),分解成一個N行F列的用戶因子矩陣P(P[u][k]表示用戶u對因子k的喜好程度)和一個M行F列的物品因子矩陣Q(Q[i][k]表示第i個物品的因子k的程度)。用公式來表示就是
R = P * T(Q)               //T(Q)表示Q矩陣的轉置

     下面是將評分矩陣R分解成用戶因子矩陣P與物品因子矩陣Q的一個例子。R的元素數值越大,表示用戶越喜歡這部電影。P的元素數值越大,表示用戶越喜歡對應的因子。Q的元素數值越大,表示物品對應的因子程度越高。分解完後,就能利用P,Q來預測Zero君對《七夜》的評分了。按照這個例子來看,Zero君應該會給《七夜》較低的分數。因爲他不喜歡恐怖片。注意不要糾結圖中的具體數值,因爲那些數值是我隨便填上去的。

      實際上,我們給一部電影評分時,除了考慮電影是否合自己口味外,還會受到自己是否是一個嚴格的評分者和這部電影已有的評分狀況影響。例如:一個嚴格評分者給的分大多數情況下都比一個寬鬆評分者的低。你看到這部電影的評分大部分較高時,可能也傾向於給較高的分。在SVD中,口味問題已經有因子來表示了,但是剩下兩個還沒有相關的式子表示。因此有必要加上相關的部分,提高模型的精準度。改進後的SVD的公式如下:
R = OverallMean + biasU + biasI + P * T(Q)    (1)
其中OverallMean表示所有電影的平均分,biasU表示用戶評分偏離OverallMean的程度,biasI表示電影評分偏離OverallMean的程度,P,Q意思不變。特別注意,這裏除了OverallMean之後,其它幾個都是矩陣。

     分解完後,即(1)式中的五個參數都有了正確的數值後,就可以用來預測分數了。假設我們要預測用戶u對電影i的評分:

bu表示第u個用戶的偏離程度,bi表示第i部電影的偏離程度,pu表示第u個用戶的因子愛好程度,qi表示第i部電影的因子程度。

    

2. SVD實現

     在第一部分的例子中,你也許會有疑問:明明評分矩陣有一個元素的值是空的,爲什麼還能得到兩個完整的矩陣P和Q呢?原因是那兩個矩陣是通過學習(learning)得到的。SVD使用隨機梯度下降(stochastic gradient descent)學習(1)式中除了OverallMean之外的參數。學習過程可以概括成這樣:先給各個參數一個初值,然後利用這些參數進行預測,並將預測結果與已知評分進行對比,最後根據對比結果修正各個參數。更準確點的說法是調整參數的值,使得以下式子能取到最小值:

ALPHA表示所有訓練樣本。被第一個圓括號括着的部分表示當前的預測結果與實際值的偏差。被第二個圓括號括着的部分是爲了防止過擬合(overfitting)。

     以上就是SVD實現時的主要思想了,至於具體實現可以參考我的代碼。這個實現版本在movielens 1M上的效果比《A Guide to Singular Value Decomposition for Collaborative Filtering》中提到的要好一點點。這裏,我主要提一下實現SVD時要注意的地方:
a. 更新qi時,要先保存
b. 預測分數時,範圍要限制在最小值和最大值內

     此外,這是我找到的一些有用的建議:
a. 所有參數的regularization 值是一樣的,不用特別區分bu, bi和 p,q
b. bu, bi不需要初始化,全部設成0
c. P,Q應該的初始化,一般使用  0.1 * rand(0,1) / sqrt(dim)  dim指特徵的維數

           

3. 擴展閱讀

      下面的幾篇文章儘管是英文的,但對SVD的講解非常好,強烈推薦給對SVD感興趣的人。

1. Netflix Update: Try This at Home

2. A Guide to Singular Value Decomposition for Collaborative Filtering

3. Matrix Factorization Techniques for Recommender Systems

發佈了34 篇原創文章 · 獲贊 18 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章