使用SVD++進行協同過濾(算法原理部分主要引用自他人)


 

    SVD++是基於SVD(Singular Value Decomposition)的一種改進算法。SVD是一種常用的矩陣分解技術,是一種有效的代數特征提取方法。SVD在協同過濾中的主要思路是根據已有的評分情況,分析出評分者對各個因子的喜好程度以及電影包含各個因子的程度,最后再反過來分析數據得出預測結果。

其在協同過濾中的具體應用方法是先對user_movierating矩陣的缺失值用隨機數據予以填充,然后將預處理之后的矩陣作為SVD算法的輸入,進行迭代求解。

為了更好的說明SVD算法,需要首先對matrix factorization modelBaseline Predictors進行簡單的介紹。

matrix factorization model:

 

圖表 1 評分矩陣形式(引用)

評分矩陣U(形式如上圖)可被分解為兩個矩陣相乘

 

 

將這種分解方式體現協同過濾中,即有:

            (matrix factorization model )

 

        在這樣的分解模型中,Pu代表用戶隱因子矩陣( 表示用戶u對因子k的喜好程度),Qi表示電影隱因子矩陣( 表示電影i在因子k上的程度)。

 

Baseline Predictors:

Baseline Predictors使用向量bi表示電影i的評分相對於平均評分的偏差,向量bu表示用戶u做出的評分相對於平均評分的偏差,將平均評分記做μ

            (Baseline Predictors)

SVD:

SVD就是一種加入Baseline Predictors優化的matrix factorization model

SVD公式如下:

    

加入防止過擬合的 λ 參數,可以得到下面的優化函數:

     

對上述公式求導,我們可以得到最終的求解函數:

 

     

     

     

     

SVD++:

SVD算法是指在SVD的基礎上引入隱式反饋,使用用戶的歷史瀏覽數據、用戶歷史評分數據、電影的歷史瀏覽數據、電影的歷史評分數據等作為新的參數。

   

      求解公式如下:

      

      

      

      使用用戶的歷史評價數據作為隱式反饋,算法流程圖如下:

      

      

      

 

 

【Reference】

   【1】從item-base到svd再到rbm,多種Collaborative Filtering(協同過濾算法)從原理到實現http://blog.csdn.net/dark_scope/article/details/17228643     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM