日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

机器学习(十四)——协同过滤的ALS算法(2)、主成分分析

發(fā)布時(shí)間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习(十四)——协同过滤的ALS算法(2)、主成分分析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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)=|XY||XY|=|XY||X|+|Y|?|XY|=xiyix2i????+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×nXm×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=?2i(rui?xTuyi)yi+2λxu=?2i(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.求xuO(k2N+k3m)

2.求yiO(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.μ=1mmi=1x(i)
2.x(i):=x(i)?μ
3.σ2j=1mi(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ù)為:

1mi=1m(x(i)Tu)2=1mi=1m(x(i)Tu)T(x(i)Tu)=1mi=1muTx(i)x(i)Tu=uT(1mi=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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。