数据挖掘基础知识-矩阵(分解)
from: http://blog.csdn.net/u010140338/article/details/42191047
1. 矩陣知識(shí):
//特征值,行列式,秩,對(duì)稱矩陣,單位矩陣,正定半正定,雅可比等等!!
正交矩陣:
如果:AA'=E(E為單位矩陣,A'表示“矩陣A的轉(zhuǎn)置矩陣”。)或A′A=E,則n階實(shí)矩陣A稱為正交矩陣, 若A為正交陣,則滿足以下條件: 1) AT是正交矩陣 2)(E為單位矩陣) 3) A的各行是單位向量且兩兩正交 4) A的各列是單位向量且兩兩正交 5) (Ax,Ay)=(x,y) x,y∈R 6) |A| = 1或-1 2. 矩陣分解(推薦系統(tǒng))基本思想: 矩陣分解的思想簡(jiǎn)單來(lái)說(shuō)就是每一個(gè)用戶和每一個(gè)物品都會(huì)有自己的一些特性,用矩陣分解的方法可以從評(píng)分矩陣中分解出用戶——特性矩陣,特性——物品矩陣,這樣做的好處一是得到了用戶的偏好和每件物品的特性,二是見(jiàn)底了矩陣的維度。圖示如下:用用戶對(duì)電影來(lái)舉例子就是:每個(gè)用戶看電影的時(shí)候都有偏好,這些偏好可以直觀理解成:恐怖,喜劇,動(dòng)作,愛(ài)情等。用戶——特性矩陣表示的就是用戶對(duì)這些因素的喜歡程度。同樣,每一部電影也可以用這些因素描述,因此特性——物品矩陣表示的就是每一部電影這些因素的含量,也就是電影的類型。這樣子兩個(gè)矩陣相乘就會(huì)得到用戶對(duì)這個(gè)電影的喜歡程度。 ---------------------------------------------------------------------------------------------------------------------------
SVD分解:
假設(shè)M是一個(gè)m×n階矩陣,其中的元素全部屬于域 K,也就是 實(shí)數(shù)域或復(fù)數(shù)域。如此則存在一個(gè)分解使得 M = UΣV*, 其中U是m×m階酉矩陣;Σ是半正定m×n階對(duì)角矩陣;而V*,即V的共軛轉(zhuǎn)置,是n×n階酉矩陣。這樣的分解就稱作M的奇異值分解。Σ對(duì)角線上的元素Σi,i即為M的奇異值。 在矩陣M的奇異值分解中 M = UΣV* ·U的列(columns)組成一套對(duì)M的正交"輸入"或"分析"的基向量。這些向量是MM*的特征向量。 ·V的列(columns)組成一套對(duì)M的正交"輸出"的基向量。這些向量是M*M的特征向量。 ·Σ對(duì)角線上的元素是奇異值,可視為是在輸入與輸出間進(jìn)行的標(biāo)量的"膨脹控制"。這些是M*M及MM*的奇異值,并與U和V的行向量相對(duì)應(yīng)matlab code:
?????
>> A
A =
???? 1???? 2???? 3???? 4???? 5
???? 4???? 3???? 2???? 1???? 4
>> [u,s,v] = svd(A);
>> u
u =
?? -0.7456?? -0.6664
?? -0.6664??? 0.7456
>> s
s =
??? 9.5264???????? 0???????? 0???????? 0???????? 0
???????? 0??? 3.2012???????? 0???????? 0???????? 0
>> v
v =
?? -0.3581??? 0.7235?? -0.2591?? -0.1658?? -0.5038
?? -0.3664??? 0.2824??? 0.2663??? 0.8031??? 0.2647
?? -0.3747?? -0.1587??? 0.8170?? -0.2919?? -0.2858
?? -0.3830?? -0.5998?? -0.3560??? 0.3230?? -0.5123
?? -0.6711?? -0.1092?? -0.2602?? -0.3714??? 0.5762
?
SVD與推薦系統(tǒng):(http://blog.csdn.net/wuyanyi/article/details/7964883)
-------------------------------------------------------------------------------------
直觀地說(shuō):
假設(shè)我們有一個(gè)矩陣,該矩陣每一列代表一個(gè)user,每一行代表一個(gè)item。
如上圖,ben,tom....代表user,season n代表item。
矩陣值代表評(píng)分(0代表未評(píng)分):
如 ben對(duì)season1評(píng)分為5,tom對(duì)season1 評(píng)分為5,tom對(duì)season2未評(píng)分。
機(jī)器學(xué)習(xí)和信息檢索:
機(jī)器學(xué)習(xí)的一個(gè)最根本也是最有趣的特性是數(shù)據(jù)壓縮概念的相關(guān)性。
如果我們能夠從數(shù)據(jù)中抽取某些有意義的感念,則我們能用更少的比特位來(lái)表述這個(gè)數(shù)據(jù)。
從信息論的角度則是數(shù)據(jù)之間存在相關(guān)性,則有可壓縮性。
SVD就是用來(lái)將一個(gè)大的矩陣以降低維數(shù)的方式進(jìn)行有損地壓縮。
降維:
下面我們將用一個(gè)具體的例子展示svd的具體過(guò)程。
首先是A矩陣。
A =
? ? ?5 ? ? 5 ? ? 0 ? ? 5
? ? ?5 ? ? 0 ? ? 3 ? ? 4
? ? ?3 ? ? 4 ? ? 0 ? ? 3
? ? ?0 ? ? 0 ? ? 5 ? ? 3
? ? ?5 ? ? 4 ? ? 4 ? ? 5
? ? ?5 ? ? 4 ? ? 5 ? ? 5
(代表上圖的評(píng)分矩陣)
使用matlab調(diào)用svd函數(shù):
[U,S,Vtranspose]=svd(A)
U =
? ?-0.4472 ? -0.5373 ? -0.0064 ? -0.5037 ? -0.3857 ? -0.3298
? ?-0.3586 ? ?0.2461 ? ?0.8622 ? -0.1458 ? ?0.0780 ? ?0.2002
? ?-0.2925 ? -0.4033 ? -0.2275 ? -0.1038 ? ?0.4360 ? ?0.7065
? ?-0.2078 ? ?0.6700 ? -0.3951 ? -0.5888 ? ?0.0260 ? ?0.0667
? ?-0.5099 ? ?0.0597 ? -0.1097 ? ?0.2869 ? ?0.5946 ? -0.5371
? ?-0.5316 ? ?0.1887 ? -0.1914 ? ?0.5341 ? -0.5485 ? ?0.2429
S =
? ?17.7139 ? ? ? ? 0 ? ? ? ? 0 ? ? ? ? 0
? ? ? ? ?0 ? ?6.3917 ? ? ? ? 0 ? ? ? ? 0
? ? ? ? ?0 ? ? ? ? 0 ? ?3.0980 ? ? ? ? 0
? ? ? ? ?0 ? ? ? ? 0 ? ? ? ? 0 ? ?1.3290
? ? ? ? ?0 ? ? ? ? 0 ? ? ? ? 0 ? ? ? ? 0
? ? ? ? ?0 ? ? ? ? 0 ? ? ? ? 0 ? ? ? ? 0
Vtranspose =
? ?-0.5710 ? -0.2228 ? ?0.6749 ? ?0.4109
? ?-0.4275 ? -0.5172 ? -0.6929 ? ?0.2637
? ?-0.3846 ? ?0.8246 ? -0.2532 ? ?0.3286
? ?-0.5859 ? ?0.0532 ? ?0.0140 ? -0.8085
分解矩陣之后我們首先需要明白S的意義。
可以看到S很特別,是個(gè)對(duì)角線矩陣。
每個(gè)元素非負(fù),而且依次減小,具體要講明白元素值的意思大概和線性代數(shù)的特征向量,特征值有關(guān)。
但是可以大致理解如下:
在線性空間里,每個(gè)向量代表一個(gè)方向。
所以特征值是代表該矩陣向著該特征值對(duì)應(yīng)的特征向量的方向的變化權(quán)重。
所以可以取S對(duì)角線上前k個(gè)元素。
當(dāng)k=2時(shí)候即將S(6*4)降維成S(2*2),
同時(shí)U(6*6),Vtranspose(4*4)相應(yīng)地變?yōu)?U(6*2),Vtranspose(4*2).
如下圖(圖片里的usv矩陣元素值和我自己matlab算出的usv矩陣元素值有些正負(fù)不一致,但是本質(zhì)是相同的):
此時(shí)我們用降維后的U,S,V來(lái)相乘得到A2
?A2=U(1:6,1:2)*S(1:2,1:2)*(V(1:4,1:2))' //matlab語(yǔ)句
A2 =
? ? 5.2885 ? ?5.1627 ? ?0.2149 ? ?4.4591
? ? 3.2768 ? ?1.9021 ? ?3.7400 ? ?3.8058
? ? 3.5324 ? ?3.5479 ? -0.1332 ? ?2.8984
? ? 1.1475 ? -0.6417 ? ?4.9472 ? ?2.3846
? ? 5.0727 ? ?3.6640 ? ?3.7887 ? ?5.3130
? ? 5.1086 ? ?3.4019 ? ?4.6166 ? ?5.5822
此時(shí)我們可以很直觀地看出,A2和A很接近,這就是之前說(shuō)的降維可以看成一種數(shù)據(jù)的有損壓縮。
接下來(lái)我們開(kāi)始分析該矩陣中數(shù)據(jù)的相關(guān)性。
?
我們將u的第一列當(dāng)成x值,第二列當(dāng)成y值。即u的每一行用一個(gè)二維向量表示,同理v的每一行也用一個(gè)二維向量表示。
如下圖:
從圖中可以看出:
Season5,Season6特別靠近。Ben和Fred也特別靠近。
同時(shí)我們仔細(xì)看一下A矩陣可以發(fā)現(xiàn),A矩陣的第5行向量和第6行向量特別相似,Ben所在的列向量和Fred所在的列向量也特別相似。
所以從直觀上我們發(fā)現(xiàn)U矩陣和V矩陣可以近似來(lái)代表A矩陣,換據(jù)話說(shuō)就是將A矩陣壓縮成U矩陣和V矩陣,至于壓縮比例得看當(dāng)時(shí)對(duì)S矩陣取前k個(gè)數(shù)的k值是多少。
到這里,我們已經(jīng)完成了一半。
?
尋找相似用戶:
依然用實(shí)例來(lái)說(shuō)明:
我們假設(shè),現(xiàn)在有個(gè)名字叫Bob的新用戶,并且已知這個(gè)用戶對(duì)season n的評(píng)分向量為:[5 5 0 0 0 5]。(此向量為列向量)
我們的任務(wù)是要對(duì)他做出個(gè)性化的推薦。
我們的思路首先是利用新用戶的評(píng)分向量找出該用戶的相似用戶。
如上圖(圖中第二行式子有錯(cuò)誤,Bob的轉(zhuǎn)置應(yīng)為行向量)。
對(duì)圖中公式不做證明,只需要知道結(jié)論,結(jié)論是得到一個(gè)Bob的二維向量,即知道Bob的坐標(biāo)。
將Bob坐標(biāo)添加進(jìn)原來(lái)的圖中:
然后從圖中找出和Bob最相似的用戶。
注意,最相似并不是距離最近的用戶,這里的相似用余弦相似度計(jì)算。(關(guān)于相似度還有很多種計(jì)算方法,各有優(yōu)缺點(diǎn))
即夾角與Bob最小的用戶坐標(biāo)。
可以計(jì)算出最相似的用戶是ben。
接下來(lái)的推薦策略就完全取決于個(gè)人選擇了。
這里介紹一個(gè)非常簡(jiǎn)單的推薦策略:
找出最相似的用戶,即ben。
觀察ben的評(píng)分向量為:【5 5 3 0 5 5】。
對(duì)比Bob的評(píng)分向量:【5 5 0 0 0 5】。
然后找出ben評(píng)分過(guò)而B(niǎo)ob未評(píng)分的item并排序,即【season 5:5,season 3:5】。
即推薦給Bob的item依次為 season5 和 season3。
?
最后還有一些關(guān)于整個(gè)推薦思路的可改進(jìn)的地方:
1.
svd本身就是時(shí)間復(fù)雜度高的計(jì)算過(guò)程,如果數(shù)據(jù)量大的情況恐怕時(shí)間消耗無(wú)法忍受。
不過(guò)可以使用梯度下降等機(jī)器學(xué)習(xí)的相關(guān)方法來(lái)進(jìn)行近似計(jì)算,以減少時(shí)間消耗。
2.
相似度計(jì)算方法的選擇,有多種相似度計(jì)算方法,每種都有對(duì)應(yīng)優(yōu)缺點(diǎn),對(duì)針對(duì)不同場(chǎng)景使用最適合的相似度計(jì)算方法。
3.
推薦策略:首先是相似用戶可以多個(gè),每個(gè)由相似度作為權(quán)重來(lái)共同影響推薦的item的評(píng)分。
-----------------------------------------------------------------------------------------------------------------------------------------------------
?
3. FMF 概率矩陣分解:
為了方便介紹,假設(shè)推薦系統(tǒng)中有用戶集合有6個(gè)用戶,即U={u1,u2,u3,u4,u5,u6},項(xiàng)目(物品)集合有7個(gè)項(xiàng)目,即V={v1,v2,v3,v4,v5,v6,v7},用戶對(duì)項(xiàng)目的評(píng)分結(jié)合為R,用戶對(duì)項(xiàng)目的評(píng)分范圍是[0, 5]。R具體表示如下:
? ? ? ?推薦系統(tǒng)的目標(biāo)就是預(yù)測(cè)出符號(hào)“?”對(duì)應(yīng)位置的分值。推薦系統(tǒng)基于這樣一個(gè)假設(shè):用戶對(duì)項(xiàng)目的打分越高,表明用戶越喜歡。因此,預(yù)測(cè)出用戶對(duì)未評(píng)分項(xiàng)目的評(píng)分后,根據(jù)分值大小排序,把分值高的項(xiàng)目推薦給用戶。怎么預(yù)測(cè)這些評(píng)分呢,方法大體上可以分為基于內(nèi)容的推薦、協(xié)同過(guò)濾推薦和混合推薦三類,協(xié)同過(guò)濾算法進(jìn)一步劃分又可分為基于基于內(nèi)存的推薦(memory-based)和基于模型的推薦(model-based),本文介紹的矩陣分解算法屬于基于模型的推薦。
? ? ? ? 矩陣分解算法的數(shù)學(xué)理論基礎(chǔ)是矩陣的行列變換。在《線性代數(shù)》中,我們知道矩陣A進(jìn)行行變換相當(dāng)于A左乘一個(gè)矩陣,矩陣A進(jìn)行列變換等價(jià)于矩陣A右乘一個(gè)矩陣,因此矩陣A可以表示為A=PEQ=PQ(E是標(biāo)準(zhǔn)陣)。
? ? ? ?矩陣分解目標(biāo)就是把用戶-項(xiàng)目評(píng)分矩陣R分解成用戶因子矩陣和項(xiàng)目因子矩陣乘的形式,即R=UV,這里R是n×m, n =6, m =7,U是n×k,V是k×m。直觀地表示如下:
? ? ? ?高維的用戶-項(xiàng)目評(píng)分矩陣分解成為兩個(gè)低維的用戶因子矩陣和項(xiàng)目因子矩陣,因此矩陣分解和PCA不同,不是為了降維。用戶i對(duì)項(xiàng)目j的評(píng)分r_ij =innerproduct(u_i, v_j),更一般的情況是r_ij =f(U_i, V_j),這里為了介紹方便就是用u_i和v_j內(nèi)積的形式。下面介紹評(píng)估低維矩陣乘積擬合評(píng)分矩陣的方法。
? ? ? 首先假設(shè),用戶對(duì)項(xiàng)目的真實(shí)評(píng)分和預(yù)測(cè)評(píng)分之間的差服從高斯分布,基于這一假設(shè),可推導(dǎo)出目標(biāo)函數(shù)如下:
最后得到矩陣分解的目標(biāo)函數(shù)如下:
? ? ? ?從最終得到得目標(biāo)函數(shù)可以直觀地理解,預(yù)測(cè)的分值就是盡量逼近真實(shí)的已知評(píng)分值。有了目標(biāo)函數(shù)之后,下面就開(kāi)始談優(yōu)化方法了,通常的優(yōu)化方法分為兩種:交叉最小二乘法(alternative least squares)和隨機(jī)梯度下降法(stochastic gradient descent)。
? ? ? 首先介紹交叉最小二乘法,之所以交叉最小二乘法能夠應(yīng)用到這個(gè)目標(biāo)函數(shù)主要是因?yàn)長(zhǎng)對(duì)U和V都是凸函數(shù)。首先分別對(duì)用戶因子向量和項(xiàng)目因子向量求偏導(dǎo),令偏導(dǎo)等于0求駐點(diǎn),具體解法如下:
? ? ? ?上面就是用戶因子向量和項(xiàng)目因子向量的更新公式,迭代更新公式即可找到可接受的局部最優(yōu)解。迭代終止的條件下面會(huì)講到。
? ? ? ?接下來(lái)講解隨機(jī)梯度下降法,這個(gè)方法應(yīng)用的最多。大致思想是讓變量沿著目標(biāo)函數(shù)負(fù)梯度的方向移動(dòng),直到移動(dòng)到極小值點(diǎn)。直觀的表示如下:
? ? ?其實(shí)負(fù)梯度的負(fù)方向,當(dāng)函數(shù)是凸函數(shù)時(shí)是函數(shù)值減小的方向走;當(dāng)函數(shù)是凹函數(shù)時(shí)是往函數(shù)值增大的方向移動(dòng)。而矩陣分解的目標(biāo)函數(shù)L是凸函數(shù),因此,通過(guò)梯度下降法我們能夠得到目標(biāo)函數(shù)L的極小值(理想情況是最小值)。
? ? ?言歸正傳,通過(guò)上面的講解,我們可以獲取梯度下降算法的因子矩陣更新公式,具體如下:
? ? ??
(3)和(4)中的γ指的是步長(zhǎng),也即是學(xué)習(xí)速率,它是一個(gè)超參數(shù),需要調(diào)參確定。對(duì)于梯度見(jiàn)(1)和(2)。
下面說(shuō)下迭代終止的條件。迭代終止的條件有很多種,就目前我了解的主要有
1)??? 設(shè)置一個(gè)閾值,當(dāng)L函數(shù)值小于閾值時(shí)就停止迭代,不常用
2)??? 設(shè)置一個(gè)閾值,當(dāng)前后兩次函數(shù)值變化絕對(duì)值小于閾值時(shí),停止迭代
3)??? 設(shè)置固定迭代次數(shù)
? ? ? ?另外還有一個(gè)問(wèn)題,當(dāng)用戶-項(xiàng)目評(píng)分矩陣R非常稀疏時(shí),就會(huì)出現(xiàn)過(guò)擬合(overfitting)的問(wèn)題,過(guò)擬合問(wèn)題的解決方法就是正則化(regularization)。正則化其實(shí)就是在目標(biāo)函數(shù)中加上用戶因子向量和項(xiàng)目因子向量的二范數(shù),當(dāng)然也可以加上一范數(shù)。至于加上一范數(shù)還是二范數(shù)要看具體情況,一范數(shù)會(huì)使很多因子為0,從而減小模型大小,而二范數(shù)則不會(huì)它只能使因子接近于0,而不能使其為0,關(guān)于這個(gè)的介紹可參考論文Regression Shrinkage and Selection via the Lasso。引入正則化項(xiàng)后目標(biāo)函數(shù)變?yōu)?#xff1a;
? ??
(5)中λ_1和λ_2是指正則項(xiàng)的權(quán)重,這兩個(gè)值可以取一樣,具體取值也需要根據(jù)數(shù)據(jù)集調(diào)參得到。優(yōu)化方法和前面一樣,只是梯度公式需要更新一下。
矩陣分解算法目前在推薦系統(tǒng)中應(yīng)用非常廣泛,對(duì)于使用RMSE作為評(píng)價(jià)指標(biāo)的系統(tǒng)尤為明顯,因?yàn)榫仃嚪纸獾哪繕?biāo)就是使RMSE取值最小。但矩陣分解有其弱點(diǎn),就是解釋性差,不能很好為推薦結(jié)果做出解釋。
----------------------------------------------------------------------
?
概率的角度來(lái)預(yù)測(cè)用戶的評(píng)分,本文假設(shè)用戶和商品的特征向量矩陣都符合高斯分布,基于這個(gè)假設(shè),用戶對(duì)商品的喜好程度就是一系列概率的組合問(wèn)題,例如
其中
為期望為μ,方差為σ的高斯分布。Iij=1,如果用戶i選擇了商品j,否則為0。在此基礎(chǔ)上,本文通過(guò)對(duì)用戶的特征向量加以限制,提出了一種新的算法,并且該算法要好于上述提到的算法。
方法:
首先,本文假設(shè)預(yù)測(cè)用戶的喜好是一個(gè)概率組合問(wèn)題:
其中用戶和商品的特征向量都符合高斯分布:
對(duì)上述的預(yù)測(cè)公式取對(duì)數(shù),我們可以得到
?優(yōu)化公式(3)等同于直接優(yōu)化下列的公式
為了把評(píng)分(例如1-5的評(píng)分)轉(zhuǎn)換為0-1,本文采用了如下辦法:
因此對(duì)應(yīng)的預(yù)測(cè)公式變?yōu)?/p>
另外本文通過(guò)對(duì)用戶的特征向量加以限制,即
那么對(duì)應(yīng)的評(píng)分預(yù)測(cè)函數(shù)為
其中W為某種權(quán)重矩陣,例如可以是相似度矩陣等等,同樣的,W也符合高斯分布
實(shí)驗(yàn)結(jié)果:
上圖是本文算法與Netflix系統(tǒng)推薦算法,SVD算法的對(duì)比結(jié)果。首先,SVD算法overfit比較嚴(yán)重,當(dāng)epoch超過(guò)10時(shí),SVD算法就開(kāi)始o(jì)verfit了,其次constrained PMF要好于PMF算法,而且該算法比Netflix系統(tǒng)推薦算法精度高7%左右。
另外本文也對(duì)比了,不同評(píng)分?jǐn)?shù)目的RMSE的精度,如下圖所示:
可以看出,當(dāng)評(píng)分比較少的時(shí)候,constrained PMF算法的準(zhǔn)確性就更加明顯,另外,如果采用電影的平均分來(lái)作為用戶的預(yù)測(cè)分值,當(dāng)評(píng)分比較少的情況,這種算法跟PMF和constrained PMF算法差別不大,但是當(dāng)評(píng)分比較多時(shí),算法的準(zhǔn)確性差異就很明顯了
?
?________________________________________________________________________________________________
?
4. 其他情況:
由于評(píng)分矩陣的稀疏性(因?yàn)槊恳粋€(gè)人只會(huì)對(duì)少數(shù)的物品進(jìn)行評(píng)分),因此傳統(tǒng)的矩陣分解技術(shù)不能完成矩陣的分解,即使能分解,那樣計(jì)算復(fù)雜度太高,不現(xiàn)實(shí)。因此通常的方法是使用已存在評(píng)分計(jì)算出出預(yù)測(cè)誤差,然后使用梯度下降調(diào)整參數(shù)使得誤差最小。
首先說(shuō)明一些符號(hào)的含義:戴帽子的rui表示預(yù)測(cè)u對(duì)i的打分,qi表示物品i每個(gè)特性的歸屬度向量,pu表示用戶u對(duì)每個(gè)特性的喜歡程度的向量。因此,物品的預(yù)測(cè)得分為:
下面我們就需要根據(jù)已有的數(shù)據(jù)計(jì)算誤差并修正q和p使得誤差最小,誤差的表示方式如下:
(2)式子可以利用評(píng)分矩陣中存在的評(píng)分?jǐn)?shù)據(jù),使用隨機(jī)梯度下降方法進(jìn)行參數(shù)的優(yōu)化,在此不做介紹。注意第二項(xiàng)是正則式,是為了防止過(guò)擬合,具體原理也不太清楚。
計(jì)算完闡述后們對(duì)于未知的項(xiàng)目就可以使用(1)式子評(píng)分。
?
?
上面的式子是最基本的矩陣分解思想,但實(shí)際情況下,卻并不是很好的衡量標(biāo)準(zhǔn),比如有的網(wǎng)站中的用戶偏向評(píng)價(jià)高分;有一些用戶偏向評(píng)價(jià)高分(有的人比較寬容);有的物品被評(píng)價(jià)的分?jǐn)?shù)偏高(也許由于等口碑原因)。因此在上面的式子中一般都會(huì)加入偏置項(xiàng),u,bi,bu。綜合用下面的式子表示
結(jié)果預(yù)測(cè)式子變成如下:
誤差預(yù)測(cè)變成如下形式
?
?
由于現(xiàn)實(shí)的評(píng)分矩陣特別稀疏,因此,為了使得數(shù)據(jù)更加稠密,下面加入了歷史的引述反饋數(shù)據(jù)(比如用戶瀏覽過(guò)瀏覽過(guò)某個(gè)電影就可以當(dāng)做一定成的喜愛(ài)的正反饋),隱式反饋表現(xiàn)出來(lái)的偏好用下面的式子表示,其中xi表示歷史數(shù)據(jù)所表現(xiàn)出的偏好的向量,跟前面的向量維度相同。前面的權(quán)重表示這一項(xiàng)的可信任程度。
同樣,我們也可以使用用戶的標(biāo)簽(比如年齡,性別,職業(yè))推測(cè)用戶對(duì)每個(gè)因素的喜愛(ài)程度,形式化如下,ya表示標(biāo)簽所表現(xiàn)出的偏好向量。
加入上面因素后的評(píng)分估計(jì)表示如下:
帶有時(shí)間因素的矩陣分解
?
現(xiàn)實(shí)生活中,我們每個(gè)人的愛(ài)好可能隨著時(shí)間的改變而改變,每個(gè)項(xiàng)目的平均評(píng)分也會(huì)改變。因此,項(xiàng)目的偏差(即項(xiàng)目高于平均分還是低于平均分)bi,用戶的評(píng)分習(xí)慣(即偏向于高分還是低分)bu,以及用戶的喜好矩陣pu都是時(shí)間的函數(shù)。為了更加準(zhǔn)確的表達(dá)評(píng)分,都需要表示成為時(shí)間的函數(shù)形式,如下(這里沒(méi)有考慮歷史標(biāo)簽等數(shù)據(jù)):
?
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的数据挖掘基础知识-矩阵(分解)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 马尔科夫链和马尔科夫随机场
- 下一篇: 关于Beta分布、二项分布与Dirich