矩陣分解 超詳細解讀

2021-10-09 23:14:07 字數 2083 閱讀 6223

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

一,相關理論介紹

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

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

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

圖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。

式子1​ 對於p,q矩陣的解釋,直觀上,p矩陣是n個使用者對k個主題的關係,q矩陣是k個主題跟m個物品的關係,至於k個主題具體是什麼,在演算法裡面k是乙個引數,需要調節的,通常10~100之間。

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

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

式子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演算法

詳情請見 bpr演算法

使用者特徵工程 超詳細解讀

原則 如果資料的分布服從高斯分布 正態分佈 3原則是指,測量值如果與平均值的偏差超過3 3 即為異常值。理論依據如下 當x n 0,1 x n 0,1 p 0.683 p 0.683,p 0.954 p 0.954,p 0.997 p 0.997 那麼如果隨機變數x x服從正態分佈,從 3 3 到 ...

webpack配置超詳細注釋解讀

const htmlwebpackplugin require html webpack plugin const cleanwebpackplugin require clean webpack plugin 需要解構,正確方式如下 const require clean webpack plug...

介面的特點彙總,超詳細解讀

介面的特點彙總 1.介面使用inte ce關鍵字修飾 2.介面是常量和抽象方法的集合,在jdk1.8之後還可以有 靜態方法和預設方法 3.介面中的常量預設省略 public static final 介面中的方法預設省略 public abstract 4.介面不能夠例項化 5.如果想要 例項化 乙...