推薦系統—影視評分預測

本文根據Andrew Ng的Machine Learning的課寫就。算法


=======================================1、預測電影評分==========================================機器學習

全文以「預測電影評分」例子展開學習

r(i,j)=0則代表user_j沒有對movie_i 沒有評分,優化

推薦系統要作的就是經過預測user_j對這些movie {i|r(i,j)=0}的評分來給user_j 推薦其可能會喜歡的電影<預測評分較高的movie>spa

=======================================2、基於內容的推薦=======================================get


對每一個movie_i引入特徵x(i)=(x1, x2),這種特徵可能代表user對movie類型的偏好:浪漫or動做等io


對於每一個user引入一個參數theta,而後對評分矩陣的每列(對應一個user)作線性迴歸,數據是{ (x(i), y(i,j)) |r(i,j)=1,for some j all i}class

像機器學習同樣,x(i)添加個1變量x(i)=(1, x1, x2)變量

那麼對於未評分的movie_t,咱們可使用線性迴歸訓練的參數theta與對應特徵x(t)作內積來獲得其預測評分
im



對每一個用戶都訓練一個參數theta_j,優化模型以下:


優化算法:注意正則項是不約束x(i)=(1, x1, x2)中1對應的參數theta的第一項theta0,因此k=0與k=1,2分別對待


=======================================3、協同過濾=======================================


如今換個角度:若是知道theta for all user j,如何來預測x(i) = (x1, x2) all i

仍然可使用線性迴歸,爲訓練每一個x(i),須要評分矩陣的第i行數據{ (x(i), y(i,j)) |r(i,j)=1,for some i all j}

theta_j = (0, theta1, theta2) ;theta1=5說明user_j喜歡romance類movie, theta2=5說明user_j喜歡action類movie,只能有一個等於5哦,

我以爲也能夠是:theta_j = (0, 4, 1) ;喜歡romance 4 action 1.


對應的優化:


協同過濾:交替優化theta與x


=========================================4、協同過濾算法=======================================


優化:


優化:注意去掉了theta和x的添加項


=========================================5、實現細節補充=======================================



實現細節:


若是有user沒有對任何電影評分或者全部評分的電影都是0分,那麼所學習到的參數是零向量,

則預測都是0值,這是不合理的。經過 將評分矩陣減去其行均值再進行線性迴歸來「避免」這種狀況


=========================================6、一點思考==========================================

 

  • 協同過濾那塊,同時優化theta、x,這樣獲得的theta、x還有特定的意義<好比:x是否還表徵對影視類型的喜好與否>沒有?
  • 迴歸中,在x數據上不添加1-feature是否是由於後來引入的平均值化;若是不是,那會對結果有什麼影響?
  • 用x-feature來表徵一個movie,x-feature的各份量的可解釋性;應該會有一部分user應爲演員的緣故有一些"偏心"。
  • 這裏,講的"基於內容的推薦"與"協同過濾"跟之前對這兩個詞的認識/所指內容不一樣,查清楚、搞明白。
這周還會再更一篇關於此節課的算法實現,會對上述部分問題作出回答。
相關文章
相關標籤/搜索