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

2021-09-26 16:34:30 字數 1332 閱讀 3338

raditional svd:

通常svd矩陣分解指的是svd(奇異值)分解技術,在這我們姑且將其命名為traditional svd(傳統並經典著)其公式如下:

traditional svd分解的形式為3個矩陣相乘,中間矩陣為奇異值矩陣。如果想運用svd分解的話,有乙個前提是要求矩陣是稠密的,即矩陣裡的元素要非空,否則就不能運用svd分解。

很顯然我們的資料其實絕大多數情況下都是稀疏的,因此如果要使用traditional svd,一般的做法是先用均值或者其他統計學方法來填充矩陣,然後再運用traditional svd分解降維,但這樣做明顯對資料的原始性造成一定影響。

funksvd(lfm)

剛才提到的traditional svd首先需要填充矩陣,然後再進行分解降維,同時存在計算複雜度高的問題,因為要分解成3個矩陣,所以後來提出了funk svd的方法,它不在將矩陣分解為3個矩陣,而是分解為2個使用者-隱含特徵,專案-隱含特徵的矩陣,funk svd也被稱為最原始的lfm模型

借鑑線性回歸的思想,通過最小化觀察資料的平方來尋求最優的使用者和專案的隱含向量表示。同時為了避免過度擬合(overfitting)觀測資料,又提出了帶有l2正則項的funksvd,上公式:

以上兩種最優化函式都可以通過梯度下降或者隨機梯度下降法來尋求最優解。

biassvd:

在funksvd提出來之後,出現了很多變形版本,其中乙個相對成功的方法是biassvd,顧名思義,即帶有偏置項的svd分解:

它基於的假設和baseline基準**是一樣的,但這裡將baseline的偏置引入到了矩陣分解中

svd++:

人們後來又提出了改進的biassvd,被稱為svd++,該演算法是在biassvd的基礎上新增了使用者的隱式反饋資訊:

顯示反饋指的使用者的評分這樣的行為,隱式反饋指使用者的瀏覽記錄、購買記錄、收聽記錄等。

svd++是基於這樣的假設:在biassvd基礎上,認為使用者對於專案的歷史瀏覽記錄、購買記錄、收聽記錄等可以從側面反映使用者的偏好。

基於矩陣分解的推薦系統

推薦系統產生推薦列表的方式通常有兩種 協同過濾以及基於內容推薦,或者基於個性化推薦。協同過濾方法根據使用者歷史行為 例如其購買的 選擇的 評價過的物品等 結合其他使用者的相似決策建立模型。這種模型可用於 使用者對哪些物品可能感興趣 或使用者對物品的感興趣程度 基於內容推薦利用一些列有關物品的離散特徵...

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

其中,u1 u5 表示的是5 個不同的使用者,d1 d4 表示的是4 個不同的商品,這樣便構成了使用者 商品矩陣,在該矩陣中,有使用者對每一件商品的打分,其中 表示的是使用者未對該商品進行打分。在推薦系統中有一類問題是對未打分的商品進行評分的 目前推薦系統中用的最多的就是矩陣分解方法,在netfli...

推薦系統例項 基於矩陣分解

使用matlab嘗試了隨機梯度下降的矩陣分解方法,實現了乙個比較簡單的推薦系統的原理。常用推薦系統的方法有協同過濾,基於物品內容過濾等等。這次是用的矩陣分解模型屬於協同過濾的一種方法,大致原理是通過一定數量的因子來描述各個使用者的喜好和各個物品的屬性。通過隨機梯度下降法分解後得到兩個矩陣,乙個是使用...