1. 程式人生 > 實用技巧 >協同過濾推薦

協同過濾推薦

推薦系統中的個性化推薦一定要有使用者模型或使用者記錄。需要獲取使用者資訊,有兩種獲取途徑顯式獲取和隱式獲取。

協同過濾(CF,Collaborative Filtering)

協同過濾推薦方法的主要思想是,利用已有使用者群過去的行為或意見預測當前使用者最可能喜歡哪些東西或對哪些東西感興趣。

輸入資料只有使用者-物品評分矩陣,輸出資料有1)當前使用者對物品喜歡或不喜歡程度的預測數值2)n項推薦物品的列表top-n。

協同過濾的常見問題:

  • 如何發現與我們要推薦的使用者有著相似偏好的使用者?
  • 如何衡量相似度
  • 如何處理還沒有購買經歷的新使用者?
  • 如果只有很少的評分該怎麼辦

純粹的協同過濾方法不會利用或要求任何有關物品本身的知識。

基於使用者的最近鄰推薦

給定一個評分資料集和當前使用者的ID作為輸入,找出與當前使用者過去有相似偏好的其他使用者,這些使用者有時也被稱為對等使用者或最近鄰;然後對當前使用者沒有見過的每個產品p,利用其近鄰對p的評分計算預測值。這種方法的潛在假設是1)如果使用者過去有相似的偏好,那麼他們未來也會有相似的偏好。2)使用者偏好不會隨時間而變化。

使用者集$U={u_{1},...,u_{n}}$和物品集$P={p_{1},...,p_{m}}$可以組成一個評分矩陣$R_{n×m}$矩陣。$r_{ij}$表示使用者i為物品j的評分。

相似使用者係數

推薦系統中通用的方法是Pearson相關係數。給定評分標準R,使用者a和b的相似度sim(a,b)可以用以下公式來表示。符號$\overline r_{a}$

代表使用者a的平均評分。

$sim(a,b) = \frac {\sum_{p \in P}(r_{a,p}- \overline r_{a})(r_{b,p}- \overline r_{b})}{\sqrt {\sum_{p \in P}(r_{a,p}- \overline r_{a})^2} \sqrt {\sum_{p \in P}((r_{b,p}- \overline r_{b})^2}}$

Pearson相關係數從+1正相關到-1負相關。選擇相關係數最高的使用者,可以解釋為兩個使用者最相似。追求其線性相關性。

下面公式考慮最相似的N個近鄰與使用者a的平均評分$\overline r_{a}$

的偏差,計算使用者a對物品p的預測值:(最相似N與總使用者數有一個自適應調整過程)

$pred(a,p)= {\overline r_{a}}+ \frac {\sum_{b \in N}sim(a,b)*(r_{b,p}-\overline r_{b})}{\sum_{b \in N}sim(a,b)}$

也可以用餘弦相似度、Spearman秩相關係數或均方差等其他方法來計算使用者間的接近程度。對於基於使用者的推薦系統,Pearson相關係數比其他方法更好。基於物品的推薦技術,餘弦相似度方法比Pearson相關度量更好。

基於近鄰評分的預測方法在遇到當前使用者只為非常少的共同物品評分時會出錯,導致不準的預測。(冷啟動問題)當評分資料集很小時,很難找到多個有共同評分物品的使用者。通過賦權因子修改,來提高預測準確率,提升很明顯,但還存在問題。

文獻研究

Herlocker et al.(1999)通過方差權重因子調整了物品權重。應該注重使用者有爭議的物品,對於熱門物品要降低權重,達到個性化推薦。Herlocker et al.1999通過重要性賦權,另一種復權因子,解決了使用者對很少物品評分的問題。Breese et al.1998通過調整預測權重,調高前面正相關的使用者,降低後面相關性不強的使用者。

基於物品的最近推薦

基於使用者的最近鄰推薦很難做到實時計算預測值。而基於物品的推薦,適合線下預處理,做到實時計算推薦。

主要思想是利用物品間相似度,而不是使用者間相似度來計算預測值。前面用Pearson係數表示使用者相似度,這裡用餘弦相似度測算物品相似度。

兩個物品a,b用對應的評分向量$\vec a,\vec b$來表示,相似度公式如下:

$sim(\vec a,\vec b) = \frac {\vec a \cdot \vec b} {|\vec a|*|\vec b|}$

相似度結餘0和1之間,越接近1越相似。基本的餘弦方法不會考慮使用者評分的平均值差異,改進版的能夠解決這個問題。在評分中減去平均值。

評分

顯式和隱式

顯式評分時使用者主動為物品評分,使用者很可能由於看不到好處二不願意提供。較難獲得。

隱式評分,比如講使用者購買行為、較長時間的瀏覽行為當做正向評分。某些領域,隱式反饋比顯式評分更能得到精確的使用者模型。

資料稀疏和冷啟動問題

通常情況,評分矩陣都很稀疏。可以利用性別、年齡等場外資訊對使用者做一個過濾,得到較不稀疏的評分矩陣。

Breese et al.1998預設投票描述另一種用來處理稀疏評分資料的技術。給那些只有一兩個使用者評分的物品賦予預設值,減少個別巧合因素對相似度的影響。

改進方法

矩陣因子分解

矩陣因子分解對提高推薦系統的預測準確性有幫助。推薦系統使用矩陣因子分解從評分模式抽取一組潛在的因子,通過這些因子向量描述使用者和物品。

Sarwar et al.2000;Goldberg et al.2001;Canny 2002在推薦系統中引入SVD奇異值分解和主成分分析等矩陣因子分解。

SVM,PCA

關聯規則挖掘

可以把關聯規則挖掘加入協同推薦。規則挖掘演算法Apriori,其目標是自動發現這樣的規則,並計算這些規則的質量。衡量標準是支援度和可信度。

研究小結

許多研究者將他們的測試結果與來自Breese et al.1998的結論做比較,公佈更準確的結果。鑑於過去十年裡提出的幾十種不同技術,我們迫切需要更新的對比基準。不太清楚最近幾年,協同過濾演算法的對比基準是哪個?需要閱讀最新相關文獻的實驗來判斷。

Empirical Analysis of Predictive Algorithms for Collaborative Filtering.

優秀綜述性論文:

  • Collaborative Filtering Recommender Systems.