矩陣分解--超詳細解讀

perfectzxiny發表於2020-10-03

基於矩陣分解的推薦演算法

一,相關理論介紹
矩陣分解確實可以解決一些近鄰模型無法解決的問題,近鄰模型存在的問題:1、物品之間存在相關性,資訊量並不是隨著向量維度增加而線性增加 2、矩陣元素稀疏,計算結果不穩定,增減一個向量維度,導致緊鄰結果差異很大的情況出現。

矩陣分解就是把原來的大矩陣,近似的分解成小矩陣的乘積,在實際推薦計算時不再使用大矩陣,而是使用分解得到的兩個小矩陣

我們知道,要做推薦系統,最基本的一個資料就是,使用者-物品的評分矩陣,如下圖1所示

img

圖1

​ 矩陣中,描述了5個使用者(U1,U2,U3,U4 ,U5)對4個物品(D1,D2,D3,D4)的評分(1-5分),- 表示沒有評分,現在目的是把沒有評分的 給預測出來,然後按預測的分數高低,給使用者進行推薦。

​ 如何預測缺失的評分呢?對於缺失的評分,可以轉化為基於機器學習的迴歸問題,也就是連續值的預測,對於矩陣分解有如下式子,R是類似圖1的評分矩陣,假設NM維(N表示行數,M表示列數),可以分解為P跟Q矩陣,其中P矩陣維度NK,P矩陣維度K*M。

img

式子1

​ 對於P,Q矩陣的解釋,直觀上,P矩陣是N個使用者對K個主題的關係,Q矩陣是K個主題跟M個物品的關係,至於K個主題具體是什麼,在演算法裡面K是一個引數,需要調節的,通常10~100之間。

img

式子2

​ 對於式子2的左邊項,表示的是R^ 第i行,第j列的元素值,對於如何衡量,我們分解的好壞呢,式子3,給出了衡量標準,也就是損失函式,平方項損失,最後的目標,就是每一個元素(非缺失值)的e(i,j)的總和 最小

img

式子3

​ OK,目前現在評分矩陣有了,損失函式也有了,該優化演算法登場了,下面式子4是,基於梯度下降的優化演算法,p,q裡面的每個元素的更新方式

img

img

式子4


然而,機器學習演算法都喜歡加一個正則項,這裡面對式子3稍作修改,得到如下式子5,beita 是正則引數
在這裡插入圖片描述
式子5

     相應的p,q矩陣各個元素的更新也換成了如下方式

在這裡插入圖片描述
式子6
至此,P,Q矩陣元素求出來了之後,計算某個使用者i對某個物品j的評分計算就是p(i,1)*q(1,j)+p(i,2)*q(2,j)+…+p(i,k)*q(k,j)。

矩陣分解本質上都是在預測使用者對一個物品的偏好程度,哪怕不是預測評分,只是預測隱式反饋,也難逃這一個事實。

得到這樣的矩陣分解結果後,常常在實際使用時,又是用這個預測結果來排序。所以,從業者們稱想要模型的預測誤差最小化,結果繞了一大圈最後還是隻想要一個好點的排序。

這種針對單個使用者對單個物品的偏好程度進行預測,得到結果後再排序的問題,在排序學習中的行話叫做point-wise,其中point意思就是:只單獨考慮每個物品,每個物品像是空間中孤立的點一樣,與之相對的,還有直接預測物品兩兩之間相對順序的問題,就叫做pair-wise

之前說的矩陣分解都屬於point-wise模型。這類模型存在的問題是隻能收集到正樣本,沒有負樣本,於是認為缺失值就是負樣本,再以預測誤差為評判標準去使勁逼近這些樣本。逼近正樣本沒問題,但是同時逼近的負樣本只是缺失值而已,還不知道真正呈現在使用者面前,到底是不喜歡還是喜歡呢?雖然這些模型採取了一些措施來規避這個問題,比如負樣本取樣,但是尷尬還是存在的,為了排序而繞路也是事實。

更直接的推薦模型應該是:能夠較好地為使用者排列出更好的物品相對順序,而非更精確的評分。

針對以上問題提出的方法是:貝葉斯個性化排序,簡稱BPR模型
下一部介紹BPR演算法

相關文章