推薦系統——隱因子的矩陣分解法

來源:互聯網
上載者:User

標籤:12c   pwm   omr   master   abi   oci   bmc   mtd   cnn   

  在新手接觸推薦系統這個領域時,遇到第一個理解起來比較困難的就是協同過濾法。那麼如果這時候百度的話,得到最多的是奇異值分解法,即(SVD)。SVD的作用大致是將一個矩陣分解為三個矩陣相乘的形式。如果運用在推薦系統中,首先我們將我們的訓練集表示成矩陣的形式,這裡我們以movielen資料集為例。這個資料集包含了使用者對電影的評分。那麼矩陣形式大致為:

  movie1  movie2  movie3 moive4
user1 1      
user2 2     3
user3   5 4  
user4 2     4

  其中1~5就是對應使用者對電影的評分。空餘處表示資料集中沒有對應使用者和電影的資訊。如果我們想使用SVD,一般講空餘處都填為0.假設此矩陣為V.那麼運用SVD可以得到

                          V = UΣVT

  但是上面的等號並不能取到,只能是約等於。那麼我們將得到的三個矩陣相乘得到V‘(注意與V不同)。那麼原來的空白處(也就是0處)可能就不再為0,那麼這就是對該user-moive對的預測。這就是SVD的主要原理。因為SVD有很多現成的演算法,也不用迭代就可直接得到,所以使用比較方便。

 

  但是我們會看到,上面方法有一個致命的缺陷,那就是將未知的評分全都設為0.這其實是極其不合理的,因為使用者不給某個電影打分並不是很不喜歡(0分),而是有可能還沒有看過這個電影。這樣就加入了我們主觀臆斷的資訊,最後造成錯誤。解決的方法就是使用隱因子的矩陣分解法。注意矩陣分解法和SVD有相似的地方也有不同的地方,下面我就對矩陣分解法進行詳細介紹。

  在矩陣分解法中,有一個假設,就是每一個使用者都有一個長度為k的特徵向量,每一部電影也有一個相同長度的特徵向量(k一般需要使用者指定)。那麼所有使用者的特徵向量排列成一個矩陣 U 的維度為UserNum * k。其中使用者i對應的向量為Ui。所有電影的特徵向量排列成一個矩陣M 的維度為MoiveNum * k。其中電影j對應的向量為Uj。那麼使用者i對電影j的評分 Vij = <Ui , Mj>(<>代表點乘)。那麼所有使用者和所有電影之間的評分就可以用兩個矩陣相乘來得到:

                          V‘ = UMT

  注意這裡是V‘而不是V。那麼問題來了,我們如何確定這個U和M?一個自然的想法就是讓V‘和V儘可能地相等。那麼這又有一個問題,那就是V(即資料集)有很多地方是沒有評分的,如何判斷和V‘是否相等?那麼我們在這裡只計算有評分處的MSE。這樣既沒有使用額外的資訊,又能判斷兩者是否接近。那麼自然而然得就引入了我們的lost function:

      

  這裡Iij表示使用者i對電影j有評分記錄。後面兩項是懲罰因子,目的是防止過擬合。那麼利用梯度下降法,我們就可以通過迭代得到U和M的值。其對U和對M的求到如下:

  到這裡我們就已經完成了基礎的矩陣分解法。那麼進一步,為了實現更好的效果,我們要考慮每個個體打分的影響,因為有些使用者打分偏高,有些使用者打分偏低。同樣對於電影和所有的評分。所以我們評分的計算公式應該改為:

      Vij = <Ui,Mj> + overall_mean + ai +bj

  其中overall_mean是所有評分的平均值,ai是使用者i打分的平均值,bj是電影j得分的平均值。其中overall_mean認為是一個常數,而ai和bj都是需要最佳化的參數。這裡我們就不給出對他們求導的式子,我直接給出矩陣形式的演算法,便於大傢具體實現。(INCOMING)

 

  我自己寫了一個python版的,有興趣可以參考 https://github.com/ccienfall/RecommandSystem/blob/master/script/Factorize.py

  參考文獻:《A Guide to Singular Value Decomp osition for Collaborative Filtering》

推薦系統——隱因子的矩陣分解法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.