机器学习(十四)——协同过滤的ALS算法(2)、主成分分析
http://antkillerfarm.github.io/
Kendall秩相關(guān)系數(shù)(Kendall rank correlation coefficient)
對(duì)于秩變量對(duì)(xi,yi),(xj,yj):
(xi?xj)(yi?yj)???>0,=0,<0,concordantneither concordant nor discordantdiscordant
τ=(number of concordant pairs)?(number of discordant pairs)n(n?1)/2
注:Sir Maurice George Kendall,1907~1983,英國(guó)統(tǒng)計(jì)學(xué)家。這個(gè)人職業(yè)生涯的大部分時(shí)間都是一個(gè)公務(wù)員,二戰(zhàn)期間出任英國(guó)船運(yùn)協(xié)會(huì)副總經(jīng)理。1949年以后擔(dān)任倫敦大學(xué)教授。
參見(jiàn):
https://en.wikipedia.org/wiki/Kendall_rank_correlation_coefficient
Tanimoto系數(shù)
T(x,y)=|X∩Y||X∪Y|=|X∩Y||X|+|Y|?|X∩Y|=∑xiyi∑x2i????√+∑y2i????√?∑xiyi
該系數(shù)由Taffee T. Tanimoto于1960年提出。Tanimoto生平不詳,從名字來(lái)看,應(yīng)該是個(gè)日本人。在其他領(lǐng)域,它還有另一個(gè)名字Jaccard similarity coefficient。(兩者的系數(shù)公式一致,但距離公式略有差異。)
注:Paul Jaccard,1868~1944,蘇黎世聯(lián)邦理工學(xué)院(ETH Zurich)博士,蘇黎世聯(lián)邦理工學(xué)院植物學(xué)教授。ETH Zurich可是出了24個(gè)諾貝爾獎(jiǎng)得主的。
參見(jiàn):
https://en.wikipedia.org/wiki/Jaccard_index
ALS算法原理
http://www.cnblogs.com/luchen927/archive/2012/02/01/2325360.html
上面的網(wǎng)頁(yè)概括了ALS算法出現(xiàn)之前的協(xié)同過(guò)濾算法的概況。
ALS算法是2008年以來(lái),用的比較多的協(xié)同過(guò)濾算法。它已經(jīng)集成到Spark的Mllib庫(kù)中,使用起來(lái)比較方便。
從協(xié)同過(guò)濾的分類(lèi)來(lái)說(shuō),ALS算法屬于User-Item CF,也叫做混合CF。它同時(shí)考慮了User和Item兩個(gè)方面。
用戶(hù)和商品的關(guān)系,可以抽象為如下的三元組:<User,Item,Rating>。其中,Rating是用戶(hù)對(duì)商品的評(píng)分,表征用戶(hù)對(duì)該商品的喜好程度。
假設(shè)我們有一批用戶(hù)數(shù)據(jù),其中包含m個(gè)User和n個(gè)Item,則我們定義Rating矩陣Rm×n,其中的元素rui表示第u個(gè)User對(duì)第i個(gè)Item的評(píng)分。
在實(shí)際使用中,由于n和m的數(shù)量都十分巨大,因此R矩陣的規(guī)模很容易就會(huì)突破1億項(xiàng)。這時(shí)候,傳統(tǒng)的矩陣分解方法對(duì)于這么大的數(shù)據(jù)量已經(jīng)是很難處理了。
另一方面,一個(gè)用戶(hù)也不可能給所有商品評(píng)分,因此,R矩陣注定是個(gè)稀疏矩陣。矩陣中所缺失的評(píng)分,又叫做missing item。
針對(duì)這樣的特點(diǎn),我們可以假設(shè)用戶(hù)和商品之間存在若干關(guān)聯(lián)維度(比如用戶(hù)年齡、性別、受教育程度和商品的外觀、價(jià)格等),我們只需要將R矩陣投射到這些維度上即可。這個(gè)投射的數(shù)學(xué)表示是:
Rm×n≈Xm×kYTn×k(1)
這里的≈表明這個(gè)投射只是一個(gè)近似的空間變換。
不懂這個(gè)空間變換的同學(xué),可參見(jiàn)《機(jī)器學(xué)習(xí)(十二)》中的“奇異值分解”的內(nèi)容,或是本節(jié)中的“主成分分析”的內(nèi)容。
一般情況下,k的值遠(yuǎn)小于n和m的值,從而達(dá)到了數(shù)據(jù)降維的目的。
幸運(yùn)的是,我們并不需要顯式的定義這些關(guān)聯(lián)維度,而只需要假定它們存在即可,因此這里的關(guān)聯(lián)維度又被稱(chēng)為L(zhǎng)atent factor。k的典型取值一般是20~200。
這種方法被稱(chēng)為概率矩陣分解算法(probabilistic matrix factorization,PMF)。ALS算法是PMF在數(shù)值計(jì)算方面的應(yīng)用。
為了使低秩矩陣X和Y盡可能地逼近R,需要最小化下面的平方誤差損失函數(shù):
minx?,y?∑u,i?is known(rui?xTuyi)2
考慮到矩陣的穩(wěn)定性問(wèn)題,使用Tikhonov regularization,則上式變?yōu)?#xff1a;
minx?,y?L(X,Y)=minx?,y?∑u,i?is known(rui?xTuyi)2+λ(|xu|2+|yi|2)(2)
優(yōu)化上式,得到訓(xùn)練結(jié)果矩陣Xm×k,Yn×k。預(yù)測(cè)時(shí),將User和Item代入rui=xTuyi,即可得到相應(yīng)的評(píng)分預(yù)測(cè)值。
同時(shí),矩陣X和Y,還可以用于比較不同的User(或Item)之間的相似度,如下圖所示:
ALS算法的缺點(diǎn)在于:
1.它是一個(gè)離線(xiàn)算法。
2.無(wú)法準(zhǔn)確評(píng)估新加入的用戶(hù)或商品。這個(gè)問(wèn)題也被稱(chēng)為Cold Start問(wèn)題。
ALS算法優(yōu)化過(guò)程的推導(dǎo)
公式2的直接優(yōu)化是很困難的,因?yàn)閄和Y的二元導(dǎo)數(shù)并不容易計(jì)算,這時(shí)可以使用類(lèi)似坐標(biāo)下降法的算法,固定其他維度,而只優(yōu)化其中一個(gè)維度。
對(duì)xu求導(dǎo),可得:
?L?xu=?2∑i(rui?xTuyi)yi+2λxu=?2∑i(rui?yTixu)yi+2λxu=?2YTru+2YTYxu+2λxu
令導(dǎo)數(shù)為0,可得:
YTYxu+λIxu=YTru?xu=(YTY+λI)?1YTru(3)
同理,對(duì)yi求導(dǎo),由于X和Y是對(duì)稱(chēng)的,因此可得類(lèi)似的結(jié)論:
yi=(XTX+λI)?1XTri(4)
因此整個(gè)優(yōu)化迭代的過(guò)程為:
1.隨機(jī)生成X、Y。(相當(dāng)于對(duì)迭代算法給出一個(gè)初始解。)
Repeat until convergence {
2.固定Y,使用公式3更新xu。
3.固定X,使用公式4更新yi。
}
一般使用RMSE(root-mean-square error)評(píng)估誤差是否收斂,具體到這里就是:
RMSE=∑(R?XYT)2N?????????????√
其中,N為三元組<User,Item,Rating>的個(gè)數(shù)。當(dāng)RMSE值變化很小時(shí),就可以認(rèn)為結(jié)果已經(jīng)收斂。
算法復(fù)雜度:
1.求xu:O(k2N+k3m)
2.求yi:O(k2N+k3n)
可以看出當(dāng)k一定的時(shí)候,這個(gè)算法的復(fù)雜度是線(xiàn)性的。
因?yàn)檫@個(gè)迭代過(guò)程,交替優(yōu)化X和Y,因此又被稱(chēng)作交替最小二乘算法(Alternating Least Squares,ALS)。
隱式反饋
用戶(hù)給商品評(píng)分是個(gè)非常簡(jiǎn)單粗暴的用戶(hù)行為。在實(shí)際的電商網(wǎng)站中,還有大量的用戶(hù)行為,同樣能夠間接反映用戶(hù)的喜好,比如用戶(hù)的購(gòu)買(mǎi)記錄、搜索關(guān)鍵字,甚至是鼠標(biāo)的移動(dòng)。我們將這些間接用戶(hù)行為稱(chēng)之為隱式反饋(implicit feedback),以區(qū)別于評(píng)分這樣的顯式反饋(explicit feedback)。
隱式反饋有以下幾個(gè)特點(diǎn):
1.沒(méi)有負(fù)面反饋(negative feedback)。用戶(hù)一般會(huì)直接忽略不喜歡的商品,而不是給予負(fù)面評(píng)價(jià)。
2.隱式反饋包含大量噪聲。比如,電視機(jī)在某一時(shí)間播放某一節(jié)目,然而用戶(hù)已經(jīng)睡著了,或者忘了換臺(tái)。
3.顯式反饋表現(xiàn)的是用戶(hù)的喜好(preference),而隱式反饋表現(xiàn)的是用戶(hù)的信任(confidence)。比如用戶(hù)最喜歡的一般是電影,但觀看時(shí)間最長(zhǎng)的卻是連續(xù)劇。大米購(gòu)買(mǎi)的比較頻繁,量也大,但未必是用戶(hù)最想吃的食物。
4.隱式反饋非常難以量化。
ALS-WR
針對(duì)隱式反饋,有ALS-WR算法(ALS with Weighted-λ-Regularization)。
首先將用戶(hù)反饋分類(lèi):
pui={1,0,preferenceno preference
但是喜好是有程度差異的,因此需要定義程度系數(shù):
cui=1+αrui
這里的rui表示原始量化值,比如觀看電影的時(shí)間;
這個(gè)公式里的1表示最低信任度,α表示根據(jù)用戶(hù)行為所增加的信任度。
最終,損失函數(shù)變?yōu)?#xff1a;
minx?,y?L(X,Y)=minx?,y?∑u,icui(pui?xTuyi)2+λ(∑u|xu|2+∑i|yi|2)
除此之外,我們還可以使用指數(shù)函數(shù)來(lái)定義cui:
cui=1+αlog(1+rui/?)
ALS-WR沒(méi)有考慮到時(shí)序行為的影響,時(shí)序行為相關(guān)的內(nèi)容,可參見(jiàn):
http://www.jos.org.cn/1000-9825/4478.htm
參考
參考論文:
《Large-scale Parallel Collaborative Filtering forthe Netflix Prize》
《Collaborative Filtering for Implicit Feedback Datasets》
《Matrix Factorization Techniques for Recommender Systems》
其他參考:
http://www.jos.org.cn/html/2014/9/4648.htm
http://www.fuqingchuan.com/2015/03/812.html
http://www.docin.com/p-714582034.html
http://www.tuicool.com/articles/fANvieZ
http://www.68idc.cn/help/buildlang/ask/20150727462819.html
主成分分析
真實(shí)的訓(xùn)練數(shù)據(jù)總是存在各種各樣的問(wèn)題。
比如拿到一個(gè)汽車(chē)的樣本,里面既有以“千米/每小時(shí)”度量的最大速度特征,也有“英里/小時(shí)”的最大速度特征。顯然這兩個(gè)特征有一個(gè)是多余的,我們需要找到,并去除這個(gè)冗余。
再比如,針對(duì)飛行員的調(diào)查,包含兩個(gè)特征:飛行的技能水平和對(duì)飛行的愛(ài)好程度。由于飛行員是很難培訓(xùn)的,因此如果沒(méi)有對(duì)飛行的熱愛(ài),也就很難學(xué)好飛行。所以這兩個(gè)特征實(shí)際上是強(qiáng)相關(guān)的(strongly correlated)。如下圖所示:
我們的目標(biāo)就是找出上圖中所示的向量u1。
為了實(shí)現(xiàn)這兩個(gè)目標(biāo),我們可以采用PCA(Principal components analysis)算法。
數(shù)據(jù)的規(guī)則化處理
在進(jìn)行PCA算法之前,我們首先要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,使之規(guī)則化。其方法如下:
1.μ=1m∑mi=1x(i)
2.x(i):=x(i)?μ
3.σ2j=1m∑i(x(i))2
4.x(i)j:=x(i)j/σj
多數(shù)情況下,特征空間中,不同特征向量所代表的維度之間,并不能直接比較。
比如,攝氏度和華氏度,雖然都是溫度的單位,但兩種溫標(biāo)的原點(diǎn)和尺度都不相同,因此需要規(guī)范化之后才能比較。
步驟1和2,用于消除原點(diǎn)偏差(常數(shù)項(xiàng)偏差)。步驟3和4,用于統(tǒng)一尺度(一次項(xiàng)偏差)。
雖然上面的辦法,對(duì)于二次以上的偏差無(wú)能為力,然而多數(shù)情況下,這種處理,已經(jīng)比原始狀態(tài)好多了。
PCA算法推導(dǎo)
回到之前的話(huà)題,為了找到主要的方向u,我們首先觀察一下,樣本點(diǎn)在u上的投影應(yīng)該是什么樣子的。
上圖所示是5個(gè)樣本在不同向量上的投影情況。其中,X表示樣本點(diǎn),而黑點(diǎn)表示樣本在u上的投影。
很顯然,左圖中的u就是我們需要求解的主成分的方向。和右圖相比,左圖中各樣本點(diǎn)x在u上的投影點(diǎn)比較分散,也就是投影點(diǎn)之間的方差較大。
由《機(jī)器學(xué)習(xí)(十一)》一節(jié)的公式4,可知樣本點(diǎn)x在單位向量u上的投影為:xTu。
因此,這個(gè)問(wèn)題的代價(jià)函數(shù)為:
1m∑i=1m(x(i)Tu)2=1m∑i=1m(x(i)Tu)T(x(i)Tu)=1m∑i=1muTx(i)x(i)Tu=uT(1m∑i=1mx(i)x(i)T)u=uTΣu
即:
maxus.t.uTΣuuTu=1
其拉格朗日函數(shù)為:
L(u)=uTΣu?λ(uTu?1)
總結(jié)
以上是生活随笔為你收集整理的机器学习(十四)——协同过滤的ALS算法(2)、主成分分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 机器学习(十二)——机器学习中的矩阵方法
- 下一篇: 机器学习(十五)——loss funct