1. 程式人生 > >協同過濾的ALS演算法

協同過濾的ALS演算法

原文地址:http://blog.csdn.net/antkillerfarm/article/details/53734658

ALS演算法原理

上面的網頁概括了ALS演算法出現之前的協同過濾演算法的概況。

ALS演算法是2008年以來,用的比較多的協同過濾演算法。它已經整合到Spark的Mllib庫中,使用起來比較方便。

從協同過濾的分類來說,ALS演算法屬於User-Item CF,也叫做混合CF。它同時考慮了User和Item兩個方面。

使用者和商品的關係,可以抽象為如下的三元組:<User,Item,Rating>。其中,Rating是使用者對商品的評分,表徵使用者對該商品的喜好程度。

假設我們有一批使用者資料,其中包含m個User和n個Item,則我們定義Rating矩陣Rm×n,其中的元素rui表示第u個User對第i個Item的評分。

在實際使用中,由於n和m的數量都十分巨大,因此R矩陣的規模很容易就會突破1億項。這時候,傳統的矩陣分解方法對於這麼大的資料量已經是很難處理了。

另一方面,一個使用者也不可能給所有商品評分,因此,R矩陣註定是個稀疏矩陣。矩陣中所缺失的評分,又叫做missing item。

這裡寫圖片描述

針對這樣的特點,我們可以假設使用者和商品之間存在若干關聯維度(比如使用者年齡、性別、受教育程度和商品的外觀、價格等),我們只需要將R矩陣投射到這些維度上即可。這個投射的數學表示是:

Rm×nXm×kYTn×k(1)

這裡的表明這個投射只是一個近似的空間變換。

不懂這個空間變換的同學,可參見《機器學習(十二)》中的“奇異值分解”的內容,或是本節中的“主成分分析”的內容。

一般情況下,k的值遠小於n和m的值,從而達到了資料降維的目的。

這裡寫圖片描述

幸運的是,我們並不需要顯式的定義這些關聯維度,而只需要假定它們存在即可,因此這裡的關聯維度又被稱為Latent factor。k的典型取值一般是20~200。

這種方法被稱為概率矩陣分解演算法(probabilistic matrix factorization,PMF)。ALS演算法是PMF在數值計算方面的應用。

為了使低秩矩陣X和Y儘可能地逼近R,需要最小化下面的平方誤差損失函式:

minx,yu,i is known(ruixTuyi)2

考慮到矩陣的穩定性問題,使用Tikhonov regularization,則上式變為:

minx,yL(X,Y)=minx,yu,i is known(ruixTuyi)2+λ(|xu|2+|yi|2)(2)

優化上式,得到訓練結果矩陣Xm×k,Yn×k。預測時,將User和Item代入rui=