天天看點

推薦系統中的協同過濾算法

協同過濾Collaborative Filtering (CF)算法是推薦算法的一個大分支,基本思想是推薦相似的物品,或者推薦相似使用者(隐式或者顯式)評分過的物品。CF方法主要可以分為兩類:基于鄰域和基于隐語義。

①基于鄰域的方法利用“兩個使用者共同評分過的物品”(user-based)或者“共同評價兩個物品的使用者”(item-based)分别計算使用者間的相似度和物品間的相似度。而相似度的計算有餘弦相似度,皮爾遜相似度和一種被稱為“Conditional Probability-Based“的Similarity[4]。[4]中指出,第三個方法的弊端在于由于每個物品(人)鄰域的大小不同,流行物品或評分多的使用者會引起問題。皮爾遜系數與餘弦相似度的不同在于,皮爾遜系數還能捕捉負關系。是以,實際中一般采用帶權的皮爾遜相似度(P. 2) [2]。但基于鄰域方法的缺點是:由于實際使用者評分的資料是十分稀疏,使用者之間可能根本沒有相同的評論;而且用啟發式的方法很難考慮全面使用者和物品之間的所有關系。具體可以參看項亮的《推薦系統實踐》。

By the way,item-based模型較user-based模型有一下優點:更好的精确度,更容易對推薦産生解釋,參數更少(因為使用者一般比物品多)。另外,[3]中指出,在user-based模型中內建隐式評分矩陣的效果沒有在item-based模型中的好。

②基于隐語義的方法則不依賴于共同評分。其基本思想是将使用者和物品分别映射到某種真實含義未知的feature向量。使用者feature代表使用者對不同類别電影的喜好程度(如:動作片5,驚悚片5),物品feature代表電影中大緻屬于哪類電影(如:愛情片3,喜劇片5)。然後通過兩個feature向量的内積來判斷使用者對一個物品的喜好程度。雖然這個方法不要求共同評分,但推薦系統還是面臨很大的資料稀疏問題。

下面具體介紹幾個隐語義模型。

Probabilistic Matrix Factorization

[1]中作者提出了Probabilistic Matrix Factorization,它與一般FM十分類似。它假設評分的真實值和預測值間的誤差是服從高斯分布的,并假設不同評分之間是互相獨立的(即并非采用混合高斯模型)。同時,使用者特征向量U和物品特征向量V都加上了zero-mean spherical Gaussian priors。為了自動設定Hyperparameters,該模型為Hyperparameters也引入了priors。這個模型被作者成為”PMF”。進一步,作者提出了”Constrained PMF”。它在使用者的特征向量上做了限制:看的電影類似的使用者,他們的特征向量也應該是類似的。據論文顯示,Constrained PMF在使用者評分很少的情況下(20-)能取得顯著高于其他模型的performance。文章還指出,單單知道使用者評論了哪些物品(但不知道其評分,相當于0-1評分)也能得到比推薦average rating高的performance。通過混合,作者在Netflix資料集上得到的最高performance是0.8861。不過他最好單模型Constrained PMF隻有0.9016。 

Asymmetric-SVD

[2] 是Koren 2008年的文章,作者首先提出改良的item-based CF模型。傳統的neighbourhood定義是user-specific的:假設求使用者u對物品i的評分,那麼物品i的neighbourhood定義為”使用者u評過分的物品中與物品i最相似的前k個物品”。而新模型中,neighbourhood定義為A與B的交集(其中A是使用者u評過分的物品,B是與i最相似的前k個物品)。有了全局的neighbourhood,就可以使用機器學習的方法來訓練物品相似度。接着作者指出将相似度看成一種增益,如此一來內建隐式評分也是自然而然的事情(P. 4)。 其中,作者還對累計的增益值做歸一化,因為使用者的評分數有多有少。然後,使用矩陣分解和使用物品表示使用者的思想,作者提出了“Asymmetric-SVD”。使用物品表示使用者的好處有兩個好處:①能處理新來的使用者,因為所有參數都是基于物品的。②一般來說使用者數要大于物品數,是以這樣還能減少參數個數。值得一提的是Asymmetric-SVD既保留了基于領域方法的特點,又能獲得不錯的performance。Koren指出,他在競賽中學到的一個lesson是隐語義模型與鄰域模型捕捉的是很不一樣的兩類關系:其中隐語義模型善于捕捉物品間的整體關系,而領域模型則擅長捕捉個别之間的強聯系。最後,Asymmetric-SVD獲得的RMSE是0.9000

SVD++

同樣是在[2]中,作者學到的另一個lesson是:應內建使用者不同的輸入。于是,他在傳統的FM模型裡加入了隐式評分資訊,稱之為SVD++。它取得了0.8911的成績。

PS. 其實[2]中,用物品來表示使用者就已經實作了[1]中constrain的效果。

參考文獻:

[1] Probabilistic Matrix Factorization

[2] Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model

[3] Factor in the Neighbors Scalable and Accurate Collaborative Filtering

[4] Evaluation of Item-Based Top-N Recommendation Algorithms

繼續閱讀