圖書推薦系統-----基於用戶的協同過濾算法調研

  使用xmind整理了一下基於用戶的協同過濾算法的總體流程算法

  

  計算兩個用戶之間的類似度spa

  主要利用行爲的類似度計算興趣的類似度。3d

    給定用戶u和用戶v兩個用戶,N(u)表示用戶u曾經有過正反饋的物品集合,N(v)表示用戶v曾經有過正反饋的物品集合,有三種方法來計算類似度。blog

    餘弦類似度基礎

    

    皮爾遜類似度變量

    

    Jaccard公式bfc

    

    通過查閱相關資料,利用皮爾遜類似度來計算用戶間的類似度學校過比較理想。書籍

    皮爾遜類似度:要理解皮爾遜類似度首先要理解協方差,協方差是反映兩個隨機變量相關程度的指標,若是一個變量隨着另外一個變量同時變大或變小,那麼兩個變量的協方差就是正值,反之相反。公式以下:方法

      

      皮爾遜相關係數以下:im

      

  爲了更好地度量兩個隨機變量的相關程度,引入了皮爾遜相關係數,其在協方差基礎上除以了兩個隨機變量的標準差,容易得出,皮爾遜相關係數是介於-1到1之間的值,當兩個變量的線性關係加強時,相關係數趨於-1或1;當一個變量增大時,另外一個變量也跟着增大,說明它們之間是正相關的,相關係數大於0,;若一個變量增大,另外一個變量

減少,說明它們之間是負相關的,相關係數小於0;相關係數等於0說明它們之間不存在線性相關關係。

    

計算方法舉例

  好比有以下用戶-商品矩陣

         

    例如用戶A對物品{a,b,d}有過行爲,用戶B對物品{a,c}有過行爲,利用餘弦類似度公式計算用戶A和用戶B的興趣類似度爲

      

    可是,若是要對每對用戶都計算餘弦類似度,那在用戶很是多的狀況下很是耗時,由於它的時間複雜度是O(N^2),因此須要創建一張倒排表,這樣能夠排除無任何聯繫的用戶之間類似度的計算,再根據倒排表計算共同評分過的物品矩陣

        

    矩陣中每個數值都是餘弦類似度中的分子部分,分子除以分母能夠獲得最終用戶興趣類似度。

    例如,計算用戶A和B的用戶類似度。用戶A和B在矩陣中交集爲1,A總共評過度的物品爲3,B總共評過度的物品爲2,根據餘弦類似度算法,得出類似度爲根號6分之1

篩選出K個與目標用戶最類似用戶

    獲得的用戶之間類似度後,算法會給用戶推薦與他興趣最類似的K個用戶喜歡的物品。

    下面這個公式度量了用戶u對物品i的感興趣程度

            

      其中S(u,K)包含和用戶u興趣最接近的K個用戶,N(i)是對物品i有過行爲的用戶集合,Wuv是用戶u和用戶v的類似度,rvi爲1

        舉例來講,對用戶A進行推薦,選取K=3,用戶A對物品c、e沒有過行爲,因此能夠把這兩個商品推薦給用戶A。

        A對商品c、e的興趣是

          

 存在的問題

  對於一些熱門書籍,不能很好的說明用戶的興趣度類似,兩用戶對於冷門物品採起過一樣的行爲才更有說服力,因此對於類似度算法加以改進

          

相關文章
相關標籤/搜索