推薦系統(tǒng)中的矩陣補(bǔ)全算法

數(shù)據(jù)來(lái)源
電影數(shù)據(jù)
在推薦系統(tǒng)中,評(píng)分預(yù)測(cè)問(wèn)題是最基本的問(wèn)題。以用戶電影評(píng)分為例,也就是這個(gè)用戶-電影矩陣。

圖1中是用戶對(duì)電影的評(píng)分,但評(píng)分有缺失,因?yàn)橛脩舨豢赡軐?duì)所有電影作出評(píng)價(jià)。那么推薦問(wèn)題就是給用戶合理推薦一個(gè)沒(méi)看過(guò)的電影,合理是指,預(yù)測(cè)用戶應(yīng)該對(duì)這部電影評(píng)分較高.然后這個(gè)問(wèn)題就變成了矩陣補(bǔ)全,也就是填充表中的問(wèn)號(hào)。??
圖像數(shù)據(jù)
圖像修復(fù):簡(jiǎn)單來(lái)說(shuō)就是通過(guò)矩陣填補(bǔ)模型將“打碼”的圖片修復(fù)成原來(lái)的圖片,如下圖所示:

圖2中,圖像包含了很多的噪聲,可以通過(guò)一些方法,如RPCA將圖像進(jìn)行恢復(fù),或者將一些缺失的地方進(jìn)行填充。

低秩矩陣分解
矩陣的補(bǔ)全有無(wú)數(shù)種可能,所以如果不對(duì)用戶-電影矩陣(記為Y)的性質(zhì)作出一定假設(shè),那這個(gè)恢復(fù)問(wèn)題就不可能完成。所以首先作出的假設(shè)是Y是低秩的,如果Y是低秩的,那么Y就能夠由兩個(gè)較小的矩陣線性組合而來(lái)。
假設(shè)Y矩陣維度,即有部電影和
個(gè)用戶,P的維度是
?,Q的維度是
,k是特征的維度,也就是Y的秩,上式如果畫出來(lái)就是這樣。

這表示了一個(gè)電影對(duì)應(yīng)一個(gè)k維特征,一個(gè)用戶對(duì)應(yīng)了k個(gè)參數(shù),反映出有用戶對(duì)電影的K維特征的喜好程度。然后每個(gè)評(píng)分都可以看做是用戶參數(shù)和電影特征的點(diǎn)積。試想如果我們得到了P和Q兩個(gè)矩陣,我們就能對(duì)Y矩陣中的缺失值進(jìn)行預(yù)測(cè)。以上問(wèn)題可以用梯度下降來(lái)求解,因此我們可以構(gòu)造誤差函數(shù),并能計(jì)算偏導(dǎo)。
這個(gè)誤差函數(shù)的意義是對(duì)于Y矩陣中存在的值,用P和Q乘積計(jì)算出預(yù)測(cè)值,讓它們之間誤差最小.當(dāng)然,還加入了針對(duì)P和Q的L2正則項(xiàng).這個(gè)誤差函數(shù)對(duì)P和Q中每一項(xiàng)的偏導(dǎo)如下:
然后迭代求解即可。

協(xié)同過(guò)濾??
這個(gè)算法本質(zhì)上和低秩矩陣分解一樣,但它里面的K維特征具有現(xiàn)實(shí)意義。一個(gè)電影的K維特征,就是它對(duì)應(yīng)于K種電影風(fēng)格的分量,比如只有兩種風(fēng)格的時(shí)候:
設(shè)一個(gè)電影的k維特征向量為,那么就應(yīng)該存在一個(gè)用戶參數(shù)向量
。這實(shí)際上和矩陣分解里的P和Q意義相同。
但實(shí)際情況是,這個(gè)電影特征無(wú)法得到,還是要通過(guò)迭代算出來(lái)。針對(duì)電影特征和用戶參數(shù),對(duì)應(yīng)了兩個(gè)代價(jià)函數(shù)。
再分別求導(dǎo),用梯度下降迭代至收斂即可。

核范數(shù)矩陣補(bǔ)全
圖像恢復(fù)里經(jīng)常有這種問(wèn)題,比如圖像被隨機(jī)采樣,試圖從隨機(jī)采樣的圖像恢復(fù)出原圖。首先它將問(wèn)題定義為,認(rèn)為用戶-電影矩陣是由一個(gè)完全矩陣A下采樣而來(lái),而且還加上了噪音L就是那個(gè)下采樣變換。

然后問(wèn)題的解就是要求秩最小,如下:
但直接去優(yōu)化秩太困難了,這是一個(gè)NP難問(wèn)題,但可以通過(guò)核范數(shù)近似求解,核范數(shù)就是矩陣的奇異值之和。

代碼
代碼生成低秩數(shù)據(jù)
通過(guò)一些參數(shù)可以生成相應(yīng)的低秩數(shù)據(jù)集,并通過(guò)算法將該數(shù)據(jù)恢復(fù)。

參考
[機(jī)器學(xué)習(xí)矩陣分解解析Recommender.Matrix.Factorization - 簡(jiǎn)書 (jianshu.com)](https://www.jianshu.com/p/2fc8850e4a1c)