1. 程式人生 > >從SVD、SVD++到因子分解機

從SVD、SVD++到因子分解機

  什麼是因子分解?在本文的含義表示:矩陣分解、因子分解機等等。而什麼是矩陣分解、因子分解機?看完這篇文章你將會有答案。

傳統推薦系統中的矩陣分解

  在很多情況下,資料的一小段攜帶了資料集中的大部分資訊,其他資訊則要麼是噪聲,要麼就是毫不相關的資訊。矩陣分解可以將原始矩陣表示成新的易於處理的形式,這種新形式是兩個或多個矩陣的乘積。

  假設存在以下user和item的資料矩陣,這是一個極其稀疏的矩陣,這裡把這個評分矩陣記為R,其中的元素表示user對item的打分。“?”表示未知的,也就是要你去預測的,現在問題來了:如何去預測未知的評分值呢?可以證明,對任意一個矩陣A,都有它的滿秩分解:

user\item 1 2 3
1 5 4 4.5
2 ? 4.5 ?
3 4.5 ? 4.4

  有方法證明,對任意一個矩陣A,都有它的滿秩分解。

  那麼剛才的評分矩陣R也存在這樣一個分解,所以可以用兩個矩陣P和Q的乘積來表示評分矩陣R:

RUI=PUKQKI

  上圖中的U表示使用者數,I表示商品數。然後就是利用R中的已知評分訓練P和Q使得P和Q相乘的結果最好地擬合已知的評分,那麼未知的評分也就可以用P的某一行乘上Q的某一列得到了:

rˆui=qiTpu

  這是預測使用者u對商品i的評分,它等於P矩陣的第u行乘上Q矩陣的第i列。這個是最基本的SVD演算法。

舉例:

  具體來說,對於一個給定的使用者行為資料集(資料集包含的是所有的user、item,以及每個user有過行為的item列表),使用矩陣分解建模後,我們可以得到如下模型:

  R矩陣是user-item矩陣,Rij表示的是user i 對item j的興趣度,這正是我們需要的值。P是user-class矩陣,Pij表示的是user i對class j的興趣度;Q是class-item矩陣,矩陣值Qij表示的是item j在class i中的權重,權重越高越能作為該類的代表。\(q_i^T!p_u\)表示使用者u和專案i的相互作用,也就是使用者對專案表現出的感興趣的程度。

總結:

  矩陣分解把一物多類、多維度的類別、類別權重這幾類問題都解決了!

SVD:加入預測基準的矩陣分解

問題:

  以上的矩陣分解只考慮到使用者對各類別的偏好、物品在各類別上的權重。卻並沒有考慮到,使用者寬鬆度(使用者總是傾向給更低或更高分數)、電影口碑對使用者評分結果的影響。

Baseline Predictors:

  平均評分記作全域性平均數u,使用向量bi表示電影i的評分相對於平均評分的偏差,向量bu表示使用者u做出的評分相對於平均評分的偏差。

則預測分數值:

rˆui=u+bi+bu+qiTpu

舉例:

  預測使用者JoeTitannic電影的評價。設,電影平均打分μ=3.7;使用者Joe挑剔,打分一般比平均分低0.3Titannic電影口碑好,比一般要高0.5分;JoeTitannnic的基準預測是:3.70.3+0.5=3.9

SVD++:一種加入隱式反饋的SVD模型

隱式反饋

  以上只是針對評分矩陣,使用者直接給物品此時推薦打分的稱之為顯示反饋。存在一種隱式反饋,使用者沒有對物品進行過打分評價,但卻有其他隱性的表示使用者對該物品喜好的行為,比如瀏覽、收藏、點贊等行為。

  在式中,隱式反饋被作為附加的專案隱因子加入模型中,附加的隱式反饋將每一個專案i與因子向量\({y_i}\in{R^f}\)聯絡起來,用於表示使用者是否對該專案有過打分。

具體模型如下:

rˆui=u+bi+bu+qiT(pu+|R(u)|1/2jR(u)yj)

  集合中R(u)包含了使用者評價過的專案。在式中,使用者被建模為pu+|R(u)|1/2jR(u)yj裡的內容。其中Pu通過使用者的顯式反饋(打分)學習得到;|R(u)|1/2jR(u)yj表示使用者的隱式反饋行為:|R(u)|1/2是相應的特徵權重,通常採用這裡的歸一化項;\({y_i}\)表示隱式特徵向量。

舉例說明如下:

  使用者的有兩種隱式反饋行為,一種為租賃歷史,用\({N_1}(u)\)表示,另一種為瀏覽歷史,用\({N_2}(u)\)表示。
  那麼SVD++的模型可以寫為:

rˆui=u+bi+bu+qiT(pu+|N1(u)|1/2j|N1(u)yj(1)+|N2(u)|1/2j|N

相關推薦

SVDSVD++到因子分解

  什麼是因子分解?在本文的含義表示:矩陣分解、因子分解機等等。而什麼是矩陣分解、因子分解機?看完這篇文章你將會有答案。 傳統推薦系統中的矩陣分解   在很多情況下,資料的一小段攜帶了資料集中的大部分資訊,其他資訊則要麼是噪聲,要麼就是毫不相關的資訊。矩

ml課程:FM因子分解介紹及相關程式碼

以下是我的學習筆記,以及總結,如有錯誤之處請不吝賜教。 FM(factorization machines)表示因子分解機,是由Steffen Rendle提出的一種基於矩陣分解的機器學習演算法。目前,被廣泛的應用於廣告預估模型中,相比LR而言,效果更好。主要目標是:解決資料稀疏的情況下,特

簡單易學的機器學習演算法——因子分解(Factorization Machine)

#coding:UTF-8 from __future__ import division from math import exp from numpy import * from random import normalvariate#正態分佈 from datetime import datetime

因子分解(libffm+xlearn)

因子分解機 一、簡介   在CTR和CVR預估任務中,可能有大量的ID類特徵(Categorical Feature),一般來說並不適合直接送入樹模型(xgboost完全不支援,lightgbm只根據取值不同),一種常用的做法是通過Label Encod

因子分解(FM) +場感知分解 (FFM) 入門

前言 FM和FFM模型是最近幾年提出的模型,憑藉其在資料量比較大並且特徵稀疏的情況下,仍然能夠得到優秀的效能和效果的特性,屢次在各大公司舉辦的CTR預估比賽中獲得不錯的戰績。在計算廣告領域,點選率CTR(click-through rate)和轉化率CVR(conversi

因子分解FM原理及SGD訓練

1.背景 Steffen Rendle於2010年提出Factorization Machines(下面簡稱FM),併發布開源工具libFM。FM的提出主要對比物件是SVM,與SVM相比,有如下幾個優

FM(因子分解系列)

FM(Factorization Machine) 引子 機器學習的通常模式為學習輸入到輸出的變換,比如最常見的線性迴歸模型,輸入為X,輸出為Y,通常輸入為高維資料,X是一個向量,形式如下: y=w1x1+w2x2+...+wnxn 線性迴歸是最簡單

FM(Factorization Machine,因子分解)演算法個人理解

1. FM是什麼 因子分解機(Factorization Machine, FM)是由Steffen Rendle提出的一種基於矩陣分解的機器學習演算法。 1.1 背景 常見的線性模型,比如線性迴歸、邏輯迴歸等,它只考慮了每個特徵對結果的單獨影響,而沒有考慮特徵間的組合

推薦系統學習筆記之四 Factorization Machines 因子分解 + Field-aware Factorization Machine(FFM) 場感知分解

前言 Factorization Machines(FM) 因子分解機是Steffen Rendle於2010年提出,而Field-aware Factorization Machine (FFM) 場感知分解機最初的概念來自於Yu-Chin Juan與其比賽

SVDSVD++和Asymmetric SVD 以及例項

這裡是關於SVD、SVD++和Asymmetric SVD 相關資料彙總,以及一個使用surprise編寫SVD的例項。 1. 資料彙總 上面兩篇論文所用的資料集為:The Netflix data。也就是隻有使用者對電影的評分。

因子分解 FM和FFM

因子分解機 Factorization Machine 因子分解機主要是考慮了特徵之間的關聯。 FM主要是為了解決資料稀疏的情況下,(而SVM無法解決稀疏問題),特徵怎樣組合的問題。 資料稀疏是指資料的維度很大,但是其中為0的維度很多。推薦系統是常見應用場

萬字長文,詳解推薦系統領域經典模型FM因子分解

在上一篇文章當中我們剖析了Facebook的著名論文GBDT+LR,雖然這篇paper在業內廣受好評,但是畢竟GBDT已經是有些老舊的模型了。今天我們要介紹一個業內使用得更多的模型,它誕生於2010年,原作者是Steffen Rendle。雖然誕生得更早,但是它的活力更強,並且衍生出了多種版本。我們今天剖析的

矩陣(matrix)角度討論PCA(Principal Component Analysis 主成分分析)SVD(Singular Value Decomposition 奇異值分解)相關原理

0. 引言 本文主要的目的在於討論PAC降維和SVD特徵提取原理,圍繞這一主題,在文章的開頭從涉及的相關矩陣原理切入,逐步深入討論,希望能夠學習這一領域問題的讀者朋友有幫助。 這裡推薦Mit的Gilbert Strang教授的線性代數課程,講的非常好,循循善誘,深入淺出。 Relevant Link:&

奇異值分解(SVD)主成分分析(PCA)潛在語義索引(LSI)

一、奇異值與特徵值基礎知識:特徵值分解和奇異值分解在機器學習領域都是屬於常用的方法。兩者有著很緊密的關係,我在接下來會談到,特徵值分解和奇異值分解的目的都是一樣,就是提取出一個矩陣最重要的特徵。先談談特徵值分解吧:   1)特徵值:   2)奇異值:       下面談談奇異

Redis 中哨兵sentinel 機制及恢復主庫宕及恢復解決方案

目錄 什麼是哨兵 原理 環境 設定哨兵 從宕機及恢復 主宕機及恢復 配置多個哨兵 1、什麼是哨兵 哨兵是對Redis的系統的執行情況的監控,它是一個獨立程序,功能有二個: 監控主資料庫和從資料庫是否執行正常; 主資料出現故障後

PCASVD和協方差矩陣的關係

1、PCA : Principle Component Analysis 主成分分析 2、SVD : Singular Value Decomposition 奇異值分解 3、PCA在很多場合都有涉及,在資料紛繁難以選取時,一般都會採用PCA降維處理,值選取幾個主要的方向資料來進行分析。 比如,可將影象

Matlab 奇異值奇異矩陣svd函式

奇異值: 奇異值分解法是線性代數中一種重要的矩陣分解法,在訊號處理、統計學等領域有重要應用。 定義:設A為m*n階矩陣,A'表示A的轉置矩陣,A'*A的n個特徵值的非負平方根叫作A的奇異值。記為σi(A)。如果把A‘*A的特徵值記為λi(A‘*A),則σi(A)=sqrt(λi(A’*A)

SVD(奇異值分解)小結

注:奇異值分解在資料降維中有較多的應用,這是把它的原理簡單總結一下,並個圖片壓縮的例子,最後做一個簡單的分析,希望能夠給大家帶來幫助。 1、特徵值分解(EVD) 實對稱矩陣 在理角奇異值分解之前,需要先回顧一下特徵值分解,如果矩陣\(A\)是一個\(m\times m\)的實對稱矩陣(即\(A

PCASVD譜聚類

PCA、SVD與譜聚類 PCA 所謂降維,就是要把n維向量X(i)投射到k維的空間(k<n),在這個k維空間裡面,樣本點的投影長度儘可能大,這樣就能保證這個新的空間保留了原來n維空間裡面儘可能多的variance。下面是公式描述: if x(i) is

機器學習實戰——SVD(奇異值分解

與PCA一樣的學習過程,在學習SVD時同樣補習了很多的基礎知識,現在已經大致知道了PCA的應用原理,SVD個人感覺相對要難一點,但主要步驟還是能勉強理解,所以這裡將書本上的知識和個人的理解做一個記錄。主要關於(SVD原理、降維公式、重構原矩陣、SVD的兩個實際應用),當然矩陣