基于貝葉斯概率模型的非負(fù)矩陣分解

原文:《A non negative matrix factorization for collaborative filtering recommender systems based on a Bayesian probabilistic model》

摘要:將評分矩陣分解為兩個非負(fù)矩陣肄扎,其component在[0,1]范圍內(nèi)无牵,使我們可以準(zhǔn)確地預(yù)測用戶的評分并找到具有相同偏好的用戶組。

一罕模、引言

(一)推薦系統(tǒng)的分類

?基于內(nèi)容的推薦系統(tǒng):要求通過一些特征或口頭描述來描述項目溯街,這種推薦系統(tǒng)需要用戶告知他們喜歡的物品種類的偏好(可以通過觀察用戶消費的項目類型來隱式獲得)诱桂。

?基于協(xié)同過濾的推薦系統(tǒng):使用評分矩陣M,其中每個用戶u提供他有多喜歡某些項目的信息呈昔。這種推薦系統(tǒng)不使用關(guān)于用戶或項目的特征的信息挥等,而是通過用戶已經(jīng)做出的評分來檢測用戶的品味。

(二)基于協(xié)同過濾的推薦系統(tǒng)的分類

根據(jù)用于預(yù)測用戶品味的算法的類型可以將基于協(xié)同過濾的推薦系統(tǒng)分為兩個大類

(1)基于記憶

基本上使用K-Nearest Neighbor算法(K-NN算法)來預(yù)測用戶的品味

優(yōu)點:直觀堤尾、可解釋性強(qiáng)肝劲、若能使用合適的相似度函數(shù)則預(yù)測質(zhì)量會很高、可衡量預(yù)測的可靠性

缺點:沒有使用可擴(kuò)展的(scalable)算法(對于要處理大量項目和用戶的推薦系統(tǒng)來說這是一個致命的缺點 T_T )

KNN的工作原理:給定與用戶u具有相同品味的一些用戶已經(jīng)對項目i給出了正向的評分郭宝,那么KNN認(rèn)為用戶u也會喜歡項目i辞槐。

反過來在KNN中也是成立的...

KNN還具有該性質(zhì):如果推薦系統(tǒng)預(yù)測用戶u會喜歡項目i,那么必定有與用戶u具有相同品味的一些用戶已經(jīng)對項目i給出了正向的評分粘室。(記作Proposition1)

(2)基于模型

使用模型來預(yù)測用戶評分榄檬,需要一個學(xué)習(xí)過程以在推薦系統(tǒng)啟動之前找出用戶和項目矩陣

優(yōu)點:1??涉及可擴(kuò)展的推薦算法,對具有大量用戶或項目的大型推薦系統(tǒng)是非秤兀可取的
? ? ? ? ? ?2??一旦學(xué)習(xí)階段結(jié)束丙号,基于模型的推薦系統(tǒng)可以非诚入快速地預(yù)測用戶的評級

Latent factor models隱因子模型

模型之一缰冤,Latent factor models隱因子模型將評分矩陣分解為用戶矩陣和項目矩陣。

通過最小化目標(biāo)函數(shù)(即學(xué)習(xí)過程)找出K個未知的隱因子喳魏,每個用戶u和每個項目i分別與具有K個components的向量\vec{a} _u\vec棉浸_i 相關(guān)聯(lián),因此刺彩,預(yù)測用戶u對項目i的評分為p_{ui}=\vec{a}_u\cdot\vec迷郑_{i} ?(在Yehuda-矩陣分解一文中對這個“經(jīng)典矩陣分解“模型進(jìn)行了一些拓展,如加入偏置等)

優(yōu)點:隱因子模型(或矩陣分解)是所有基于模型的協(xié)同過濾算法中accuracy in predictions最好的(也優(yōu)于基于記憶的推薦系統(tǒng))

經(jīng)典矩陣分解在學(xué)習(xí)\vec{a}_u \vec创倔_i 時認(rèn)為\vec{a}_u 嗡害、\vec_i 畦攘、r_{ui}服從正態(tài)分布

缺點:1??鑒于高斯分布變量取值的特點霸妹,因此\vec{a}_u \vec_i 的components不具有直觀的概率解釋

? ? ? ? ? ?2??由于\vec{a}_u \vec知押_i 很難解釋叹螟,因此模型無法證明它的預(yù)測是正確的

? ? ? ? ? ?3??不滿足Proposition 1

(ps:當(dāng)r_{ui}為隱式反饋的矩陣時鹃骂,如矩陣中的值表示消費次數(shù),\vec{a}_u 罢绽、\vec畏线_i r_{ui}服從泊松分布,顯然可解釋性增強(qiáng)良价,因為兩個向量都只取正值)

二寝殴、對比

(一)矩陣分解原理在基于內(nèi)容的推薦系統(tǒng)中的應(yīng)用

矩陣分解等技術(shù)也已應(yīng)用于基于內(nèi)容的推薦系統(tǒng):在表示項目的口頭描述的矩陣中,每個分量(x_{i,j} )描述每個詞w_{i} 在每個項目j的描述中出現(xiàn)的次數(shù)明垢。分解此矩陣的主要技術(shù)包括:LSA杯矩、pLSA和LDA。

?潛在語義分析(LSA):基于解釋每個項目描述中每個單詞的頻率的隱因子袖外,將描述矩陣分解為與單詞相關(guān)(每行是每個單詞的單詞向量aw)和與項目的描述相關(guān)(每列bi是每個單詞的項目向量)的兩個矩陣史隆。由于這些矩陣的組成部分可能采用任意實際值,因此可能很難理解曼验。——對照經(jīng)典矩陣分解

?概率潛在語義分析(pLSA):pLSA分解的兩個矩陣的組成部分有正值約束泌射。此技術(shù)可計算單詞出現(xiàn)在文檔中的概率。實際上隱因子可被視為項目的集群鬓照,分解所得的兩個矩陣的組成部分可被視作 單詞出現(xiàn)在每個項目集群的描述中的概率 以及 項目屬于每個項目集群的概率熔酷。——對照非負(fù)矩陣分解

?隱狄利克雷分布(LDA): 通過貝葉斯概率模型拓展pLSA,解決了pLSA的過擬合問題豺裆。 與pLSA一樣拒秘,此技術(shù)可計算單詞出現(xiàn)在文檔中的概率。 分解所得的兩個矩陣的組成部分可被視作 單詞出現(xiàn)在每個項目集群的描述中的概率 以及 項目屬于每個項目集群的概率臭猜。 ——對照基于貝葉斯概率模型的非負(fù)矩陣分解

與協(xié)同過濾中使用的評分矩陣不同躺酒,該矩陣的所有項都已知(盡管包含許多0值)。若將LSA蔑歌,pLSA或LDA等技術(shù)應(yīng)用于評分矩陣羹应,則隱含地用0填充矩陣中的未知值,因此這些技術(shù)不適合預(yù)測顯式反饋(如評分)次屠。

(二)在評分預(yù)測中矩陣分解的應(yīng)用

原始評分矩陣

經(jīng)典矩陣分解??非負(fù)矩陣分解??基于貝葉斯概率模型的非負(fù)矩陣分解

(1)經(jīng)典矩陣分解

經(jīng)典矩陣分解的預(yù)測結(jié)果
經(jīng)典矩陣分解所得的用戶矩陣园匹,行代表\vec{a}_u
經(jīng)典矩陣分解所得的項目矩陣,列代表\vec劫灶_i

(2)非負(fù)矩陣分解

非負(fù)矩陣分解的預(yù)測結(jié)果

(3)基于貝葉斯概率模型的非負(fù)矩陣分解

基于貝葉斯概率模型的非負(fù)矩陣分解的預(yù)測結(jié)果
基于貝葉斯概率模型的非負(fù)矩陣分解所得的用戶矩陣裸违,行代表\vec{a}_u
基于貝葉斯概率模型的非負(fù)矩陣分解所得的用戶矩陣,列代表\vec本昏_i

很明顯本文提出的模型滿足proposition1供汛,因此我們可以證明并理解它所產(chǎn)生的所有推薦。

隱因子表示在我們的推薦系統(tǒng)中具有相同品味的用戶組, 參數(shù)K表示組數(shù)(為了在推薦系統(tǒng)中獲得準(zhǔn)確的預(yù)測紊馏,本文的模型中的參數(shù)K小于經(jīng)典矩陣分解中的K)料饥。

該模型中a_{u,k} b_{k,i} 屬于[0,1]范圍內(nèi),具有有可理解的概率意義上的解釋朱监,分別表示 用戶u屬于用戶組k的概率 以及 組k中的用戶喜歡項目i的概率岸啡,其中向量\vec{a} _u非常稀疏,只有極少數(shù)分量值較大赫编,而許多分量的取值接近0(因此預(yù)測評分p_{u,i} 通常很快)巡蘸。

三、本文的概率模型

(一)模型輸入

原始的評分矩陣值為\rho _{ui}?(取值為0,1,2,3,4) 擂送,歸一化的評分矩陣為r_{u,i}^* =\frac{\rho _{u,i} }{R} ,其中R=4

(二)模型輸出

與用戶關(guān)聯(lián)的N×K矩陣(a_{u,k} )??where\sum_{i=1}^K a_{u,k} =1?悦荒;與項目關(guān)聯(lián)的K×M矩陣(b_{k,i}

?根據(jù)算法的輸出,我們可以立即計算用戶u喜歡項目i的概率,即p_{u,i}=\sum_{k=1...K}a_{u,k}\cdot b_{k,i}

一旦我們計算出用戶u喜歡項目i的概率嘹吨,我們就可以對其進(jìn)行轉(zhuǎn)換以獲得用戶u對項目i的非歸一化評分

(三)模型參數(shù)

? K∈N? ?表示算法要找出來的用戶組數(shù)

? α∈(0,1) 表示 獲得overlapping用戶組的概率搬味,α接近0表示用戶往往只屬于一個組,α越大表示我們允許用戶在多個組中

? β> 1 與算法推斷出一組用戶喜歡某個項目所需的證據(jù)量有關(guān)蟀拷, β越大則所需的證據(jù)越多

(四)用戶對項目評分的概率模型

用戶u屬于哪一組是一個隨機(jī)變量X碰纬,取值為{1,...,K}

,他屬于第k組的概率為p(X=k|\vec{\theta}_u )=\theta_k


類似地问芬,對物品i給出評分的用戶u屬于哪一組也是一個隨機(jī)變量

記作z_{u,i}\sim Cat(\vec{\theta}_{u})?悦析,取值為{1,...,K}


\vec{\phi } _u中的K個分量表示用戶u屬于每個組的概率,\vec{\phi } _u=[\theta _1,\theta _2,...,\theta _K]=\vec{\theta} _u

由多項式分布的共軛先驗分布為狄利克雷分布可得此衅,\theta_k\sim Dir(\alpha )强戴,\vec{ \theta}_u\sim Dir(\alpha,...,\alpha )


物品i是否被第k組的用戶喜歡是一個隨機(jī)變量{i,k},取值為0或1,{i,k}\sim Bin(N_{k} ,\vec{\kappa }_i)

物品i被第1組用戶喜歡的概率為p(i,k=1|N_1,\kappa _{i,1} )=\binom {N_1} {i,k=1}\kappa _{i,1}^{i,k=1} (1-\kappa _{i,1})^{N_1-{i,k=1}}

其中{i,k=1}表示第一組用戶中喜歡物品i的人數(shù),N_1表示第一組的用戶數(shù)


\vec{\kappa} _{i}中的K個分量表示物品i被每個組的用戶喜歡的概率挡鞍,\vec{\kappa} _{i}=[\kappa _{i,1},\kappa _{i,2},...,\kappa _{i,K}]

由二項分布的共軛先驗分布為Beta分布可得骑歹,{ \kappa}_{i,k}\sim Beta(\beta,\beta )?

(Beta分布采用[0,1]內(nèi)的值,\beta 是用戶u喜歡或不喜歡項目的置信度)

\rho _{u,i}是可觀測的變量匕累,服從二項分布陵刹,取值為0到R(set R=4)?

\rho _{u,i} \sim Bin(R,\kappa_{i,z_{u,i}})

而我們要做的就是根據(jù)已知的變量\rho _{u,i}默伍,找出未知的隱變量的后驗概率分布欢嘿。

使用二項分布對評分進(jìn)行建模的原因如下:

1??二項分布是離散的,推薦系統(tǒng)中的評分也是離散的也糊;2??若使用分類分布的話炼蹦,它不會考慮評分的順序關(guān)系;3??二項分布可合理地對用戶對項目的評分方式建模:用戶評估項目的R個特征狸剃,評分的數(shù)值則表示用戶喜歡的特征的數(shù)量掐隐;4??二項分布只有一個未知參數(shù)(用戶喜歡項目的某個特征的概率),這避免了模型過擬合。

(五)用變分貝葉斯推斷求解隱變量的后驗概率分布的近似解

由于我們的模型具有共軛指數(shù)結(jié)構(gòu)虑省,因此有:變量服從指數(shù)分布族中的分布匿刮,變量的后驗分布和變量的先驗分布是同分布的。

故我們用近似后驗分布q(\vec{\phi }_u,\kappa _{i,k},z_{u,i} )來逼近真正的后驗分布p(\vec{\phi }_u,\kappa _{i,k},z_{u,i}|\rho_{u,i} )

(六)求得{\gamma _{u,k},\epsilon_{{i,k}}^+, \epsilon_{{i,k}}^-,\lambda _{u,i,k} }后探颈,計算模型的輸出

(1)目的1——找出具有相同品味的用戶群

對每個用戶u都有?\sum_{i=1}^K a_{u,k} =1

(2)目的2——預(yù)測用戶偏好

p_{u,i}表示用戶u喜歡物品i的概率?

這個寫法不準(zhǔn)...作者應(yīng)該是忘記加小帽子了

正確寫法p_{u,i}=E(\hat r_{u,i})=\frac{1}{R} E(\hat \rho_{u,i})=E(    \frac{\hat \rho_{u,i}}{R} )=\sum_{k=1}^Ka_{u,k} b_{k,i}  ? ??

(七)算法的實現(xiàn)過程

我們使用常用于變分推理技術(shù)的坐標(biāo)上升算法來計算{\gamma _{u,k},\epsilon_{{i,k}}^+, \epsilon_{{i,k}}^-,\lambda _{u,i,k} }熟丸,然后才能計算 a_{u,k} b_{k,i}

(八)模型參數(shù){K,\alpha ,\beta }對輸出的影響

參數(shù)α∈(0,1)與用戶向量的稀疏程度有關(guān),一般是α越小伪节,用戶向量越稀疏光羞,可以通過交叉驗證來選擇適當(dāng)?shù)膮?shù)α(結(jié)合我們在模型中希望的用戶向量的稀疏度)。

參數(shù)β> 1 與我們的模型推斷用戶喜歡或不喜歡某個項目所需的證據(jù)程度有關(guān)怀大,β越高則模型推斷出用戶喜歡或不喜歡某個項目需要的證據(jù)越多纱兑,可以通過交叉驗證來設(shè)定參數(shù)β。

(九)衡量模型的表現(xiàn)(從計算和內(nèi)存成本的角度)

方法1:推薦系統(tǒng)計算每個用戶u在每個項目i上的p_{u,i}化借,以p_{u,i}>S的方式向每個用戶推薦項目i潜慎。與經(jīng)典矩陣分解不同的是,本文提出的模型p_{u,i}和S都具有概率意義:如果用戶u會喜歡項目i的預(yù)測概率p_{u,i}>S蓖康,則將項目i推薦用戶u勘纯。

方法2:好好利用用戶向量和項目向量的components都是0-1內(nèi)的正數(shù)

本文模型產(chǎn)生推薦的算法
推薦的運行速度快于經(jīng)典矩陣分解方法(原因:只需要求部分和)

方法3:進(jìn)一步利用用戶向量很稀疏的特點

對于每個用戶u,存儲兩個長度一樣的小列表钓瞭,列表長度為N_u<<K

k_{u,n}:?\vec{a}_u 中第n大的成分對應(yīng)的因子k驳遵;a^{\prime}_{u,n}\vec{a}_u 中第n大的成分

四、算法輸出的含義

用戶向量通常是稀疏的山涡,這使我們能夠以與K-NN算法相同的方式理解和證明我們模型的預(yù)測堤结。

如果我們預(yù)測值p_{u,i}很高(接近1),那么必然有一個k∈{1 ... K}使得a_{u,k} b_{k,i} 接近1鸭丛。

根據(jù)這些向量的含義竞穷,我們得到:

?a_{u,k} 接近1,也就是說鳞溉,用戶u與組k中的用戶具有相同的品味瘾带,用戶u很可能屬于用戶組k

?b_{k,i} 接近1,也就是說用戶組k中的許多用戶對項目i有正面評分

因此我們認(rèn)為存在與用戶u具有相同品味的用戶(因為他們屬于同一組)熟菲,他們對項目i給予了肯定的評價看政。 可以看出,這種推理是用于K-NN算法的理論抄罕,用于理解所提供的推薦允蚣。

五、模型的評價

(一)評價指標(biāo)

(1)評價預(yù)測準(zhǔn)確性

平均絕對誤差
約束平均絕對誤差
0-1損失

(2)評價推薦準(zhǔn)確性

集合R表示推薦系統(tǒng)提供給每個用戶的N個項目的集合呆贿。

集合S表示推薦系統(tǒng)應(yīng)該向每個用戶推薦的項目集合嚷兔。



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末森渐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子冒晰,更是在濱河造成了極大的恐慌同衣,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件壶运,死亡現(xiàn)場離奇詭異乳怎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)前弯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門蚪缀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人恕出,你說我怎么就攤上這事询枚。” “怎么了浙巫?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵金蜀,是天一觀的道長。 經(jīng)常有香客問我的畴,道長渊抄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任丧裁,我火速辦了婚禮护桦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘煎娇。我一直安慰自己二庵,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布缓呛。 她就那樣靜靜地躺著催享,像睡著了一般。 火紅的嫁衣襯著肌膚如雪哟绊。 梳的紋絲不亂的頭發(fā)上因妙,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機(jī)與錄音票髓,去河邊找鬼攀涵。 笑死,一個胖子當(dāng)著我的面吹牛炬称,可吹牛的內(nèi)容都是我干的汁果。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼玲躯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起跷车,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤棘利,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后朽缴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體善玫,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年密强,在試婚紗的時候發(fā)現(xiàn)自己被綠了茅郎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡或渤,死狀恐怖系冗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情薪鹦,我是刑警寧澤掌敬,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站池磁,受9級特大地震影響奔害,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜地熄,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一华临、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧端考,春花似錦银舱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至核偿,卻和暖如春诚欠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背漾岳。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工轰绵, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人尼荆。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓左腔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親捅儒。 傳聞我的和親對象是個殘疾皇子液样,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 這篇文章的技術(shù)難度會低一些振亮,主要是對推薦系統(tǒng)所涉及到的各部分內(nèi)容進(jìn)行介紹,以及給出一些推薦系統(tǒng)的常用算法鞭莽,比起技術(shù)...
    我偏笑_NSNirvana閱讀 12,094評論 5 89
  • 本文結(jié)構(gòu)安排 Item-Based Collaboration Filtering Slope One Matri...
    澤澤馥澤澤閱讀 807評論 0 1
  • 原文:《 Factorization Meets the Neighborhood:...
    teribsandy_1608閱讀 852評論 0 0
  • 1坊秸、如果我跟你說我喜歡上你了會是怎樣尿庐? 剛遇見你的時候裹芝,靦腆的樣子很是吸引人赁炎。 喜歡穿襯衫析苫,極其簡單經(jīng)典的款式贺纲,淡...
    澆曉一率閱讀 195評論 0 0
  • --2017.5.14祝母親節(jié)日快樂 門耗溜,是一個或多個入口出口 也是一種或多種的決擇 也是錯或者對...
    Cray_119閱讀 170評論 0 2