協同過濾算法簡析

  推薦系統必須有快速反應能力,衆所周知,現在網絡上充滿着各種各樣的信息,而且數量相當龐大,並且還在以相當驚人的速度增長,如何在海量的信息中快速的找到我們所需要的信息並快速的反饋給用戶,是互聯網推薦系統需要考慮的一個十分重要的問題。

  推薦系統中最核心和關鍵的部分就是使用的推薦算法,其在很大程度上決定了推薦系統性能的優劣。推薦算法大致可以分爲以下幾類:1、基於內容的推薦算法(content-based recommendation)2、協同過濾推薦算法(collaborative filtering recommendation)3、基於知識的推薦算法(knowledge-based recommendation)。

  傳統的基於內容的過濾是直接分析內容進行推薦,推薦質量相對較差。基於協同過濾算法的推薦,針對用戶的愛好進行分析,在用戶羣中找到具有相同愛好的用戶,分析這些相同用戶對相關特定信息的評價,預測該指定用戶對此信息的愛好程序。另外考慮到與spark庫中現有的基於movielens數據庫做的ALS(Alternating Least Squares)算法,我們可以利用這個算法做基於spark streaming的流式協同過濾算法。下面分幾個部分分別介紹協同過濾算法。

一、協同過濾算法的前提假設

  協同過濾的前提假設是:

1、所有用戶的興趣資料均來自用戶對不同事物的評分。

2、不同的用戶羣是通過對不同的用戶興趣劃分的。

3、所有用戶對事物的評價將和與其具有相同興趣的用戶羣中的用戶評價相同。 

二、協同過濾算法的步驟

  經典的協同過濾推薦過程一般分爲下面兩步:首先,獲取用戶信息,在本文中指的是獲得用戶對某些物品的評分信息,如用戶根據其喜好對部分物品的評分是1-5的整數,其中5分表示喜歡,1分表示不喜歡;其次,分析用戶之間的相似性並預測目標用戶對某一物品的喜好。如下圖所示。

三、典型的協同過濾算法

  下面介紹兩種典型的協同過濾算法。

1、 基於用戶的協同過濾算法

  首先根據相似度計算出目標用戶的鄰居集合,然後用鄰居用戶評分的加權組合,排序後爲目標用戶作推薦。

2、 基於物品的協同過濾算法

  該算法基於這樣一個假設:用戶更傾向於選擇與其喜歡的物品相關或相似的物品。算法會首先計算所有物品與目標物品的相似性,以獲取目標物品的最近鄰集合,然後根據目標用戶對最近鄰集合中的物品的評分信息來預測對其目標物品的評分情況,最後選擇評分預測值最高的前n項作爲結果推薦給用戶。

  不論是基於用戶還是基於物品的協同過濾算法都涉及到數據之間相似度的計算,相似度函數的設計必須滿足以下三點要求:非負性、對稱性和三角不等性。常用的相似度的計算方法主要由歐式距離法、皮爾遜相關係數法和夾角餘弦相似度法。

  其中皮爾遜相關係數法的度量公式如下圖所示

  上式中<x,y>表示向量x和向量y的內積,||x||表示向量x的第二範數,這樣計算的話,不同特徵之間的量級對皮爾遜係數影響不大。

  餘弦相似度的度量公式如下圖所示。

  另外在現實中的數據往往並不是像想象中的那樣規整,比較常見的一種現象是在用戶數據中會出現很多未評分的項,如下圖所示。

  對於這樣稀疏的矩陣,用基本的推薦算法效率很低,可以利用奇異值分解(SVD)算法將稀疏矩陣映射到另一個空間,取出物品的比較明顯的幾個特徵來進行計算相似度可以較大的提高算法的速度。

四、協同過濾算法的評價指標

  推薦系統的評價方法往往採用以下兩種評價指標之一:

1、 預測準確度MAE

  MAE計算了預測評分與真實評分之間的差值的平均值,其計算公式如下圖所示。

  其中n是所有用戶評分個數的總和,Pui是用戶u對物品i的預測評分,而rui是真實的評分。

1、 均方根誤差RMSE

  推薦系統預測比賽中最有名的Neflix大獎就將其作爲評價推薦電影的評價指標。

  RMSE的計算公式如下式所示

  RMSE的值越小說明預測值越精確。



參考博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章