SVD電影推薦簡介

2021-06-22 03:38:53 字數 2163 閱讀 8868

(參考

利用svd方法進行推薦,其實就是對使用者-電影評分矩陣進行降維。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,r為n*m的矩陣。表示共有有n個使用者,m部電影。對r進行svd分解

a為f*f的方陣,f為我們設定的維度,代表f個電影中的某個因子。如:電影的搞笑程度,電影的愛情愛得死去活來的程度,電影的恐怖程度。。。。。。

p為n*f的矩陣,代表使用者對具有某個因子(搞笑程度等)的喜愛程度。

qt為f*m的矩陣,表示電影包含某個因子的(搞笑程度等)程度。

舉個例子(因子矩陣a未列出)

r矩陣中,元素數值越大,表示使用者越喜歡這部電影。p的元素數值越大,表示使用者越喜歡對應的因子。q的元素數值越大,表示物品對應的因子程度越高。分解完後,就能利用p,q來**使用者對《七夜》的評分了。按照這個例子來看,使用者應該會給《七夜》較低的分數。因為他不喜歡恐怖片。

現實中,不同使用者的評價標準會有差異。如:乙個嚴格評分者給的分大多數情況下都比乙個寬鬆評分者的低。電影本身的質量也是決定電影得分高低的重要因素。

所以,總結一下,影響乙個使用者對乙個電影的評分的因素包括:使用者本人的口味,使用者的評分標準(是否嚴格),電影本身的質量.

在svd中,口味問題已經有因子來表示了,但是剩下兩個還沒有相關的式子表示。因此有必要加上相關的部分,提高模型的精準度。改進後的

svd的公式如下:

r = overallmean + biasu + biasi + p * t(q)(1

)overallmean

表示所有電影的平均分,

biasu

表示使用者評分偏離

overallmean

的程度(即使用者的評價標準嚴格程度),

biasi

表示電影評分偏離

overallmean

的程度,(即電影本身質量的好壞)p,

q意思不變。特別注意,這裡除了

overallmean

之後,其它幾個都是矩陣。

則使用者u

對電影i

的評分可以用以下公式計算

表示第u

個使用者的偏離程度,

bi表示第

i部電影的偏離程度,

pu表示第

u個使用者的因子愛好程度,

qi表示第

i部電影的因子程度。

svd使用隨機梯度下降

(stochastic gradient descent)

學習(1

)式中除了

overallmean

之外的引數。學習過程可以概括成這樣:先給各個引數乙個初值,然後利用這些引數進行**,並將**結果與已知評分進行對比,最後根據對比結果修正各個引數。更準確點的說法是調整引數的值,使得以下式子能取到最小值:

表示所有訓練樣本。被第乙個圓括號括著的部分表示當前的**結果與實際值的偏差。被第二個圓括號括著的部分是為了防止過擬合

(overfitting)

。a. 更新qi時,要先儲存

b. **分數時,範圍要限制在最小值和最大值內

此外,這是我找到的一些有用的建議:

a. 所有引數的

regularization

值是一樣的,不用特別區分

bu, bi和p

,qb. bu, bi

不需要初始化,全部設成

0c. p,q

應該的初始化,一般使用

0.1 * rand(0,1) / sqrt(dim)  dim

指特徵的維數

參考

推薦 SVD演算法

矩陣作用於向量的意義是 對向量進行旋轉和縮放,更加抽象的說,是將這個向量從一組正交基空間旋轉到另一組正交基空間,並縮放 對於實對稱矩陣,存在 m v i lambda v i即存在一組正交基,m的作用只是拉伸 對應特徵分解 但是對於更加一般的矩陣m m v i lambda u i即不同組正交基之間...

電影推薦 Crash

今天看了個電影,名字叫crash,你猜imdb多少?8.5!當初看到這個數字時我就在想這電影我一定要看,2小時後,發覺這8.5果然不假!電影一開始有乙個一分鐘的鏡頭,描寫乙個大撞車,很多人都下來吵架 然後影片開始敘述撞車一天前的故事,分別描寫幾個毫無關聯的陌生人 其實就是後來撞車撞在一起的那些人 和...

好電影 推薦

19 我不是藥神 豆瓣9.0分。18 流感 戰疫 豆瓣7.7分。17 寄生蟲 豆瓣8.7分。16 太空救援 豆瓣7.7分。15 看不見的客人 豆瓣8.8分。14 前目的地 豆瓣7.8分。燒腦,穿越 悖論。13 機器俠 豆瓣5.2分。09年的,國產劇中科幻片我覺得算是不錯的,個人覺得可以有7.3分 1...