從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:
上圖中的U表示使用者數,I表示商品數。然後就是利用R中的已知評分訓練P和Q使得P和Q相乘的結果最好地擬合已知的評分,那麼未知的評分也就可以用P的某一行乘上Q的某一列得到了:
這是預測使用者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,使用向量
則預測分數值:
舉例:
預測使用者
SVD++:一種加入隱式反饋的SVD模型
隱式反饋
以上只是針對評分矩陣,使用者直接給物品此時推薦打分的稱之為顯示反饋。存在一種隱式反饋,使用者沒有對物品進行過打分評價,但卻有其他隱性的表示使用者對該物品喜好的行為,比如瀏覽、收藏、點贊等行為。
在式中,隱式反饋被作為附加的專案隱因子加入模型中,附加的隱式反饋將每一個專案i與因子向量\({y_i}\in{R^f}\)聯絡起來,用於表示使用者是否對該專案有過打分。
具體模型如下:
集合中R(u)包含了使用者評價過的專案。在式中,使用者被建模為
舉例說明如下:
使用者的有兩種隱式反饋行為,一種為租賃歷史,用\({N_1}(u)\)表示,另一種為瀏覽歷史,用\({N_2}(u)\)表示。
那麼SVD++的模型可以寫為:
相關推薦
從SVD、SVD++到因子分解機
什麼是因子分解?在本文的含義表示:矩陣分解、因子分解機等等。而什麼是矩陣分解、因子分解機?看完這篇文章你將會有答案。 傳統推薦系統中的矩陣分解 在很多情況下,資料的一小段攜帶了資料集中的大部分資訊,其他資訊則要麼是噪聲,要麼就是毫不相關的資訊。矩
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與其比賽
SVD、SVD++和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的系統的執行情況的監控,它是一個獨立程序,功能有二個: 監控主資料庫和從資料庫是否執行正常; 主資料出現故障後
PCA、SVD和協方差矩陣的關係
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
PCA、SVD、譜聚類
PCA、SVD與譜聚類 PCA 所謂降維,就是要把n維向量X(i)投射到k維的空間(k<n),在這個k維空間裡面,樣本點的投影長度儘可能大,這樣就能保證這個新的空間保留了原來n維空間裡面儘可能多的variance。下面是公式描述: if x(i) is
機器學習實戰——SVD(奇異值分解)
與PCA一樣的學習過程,在學習SVD時同樣補習了很多的基礎知識,現在已經大致知道了PCA的應用原理,SVD個人感覺相對要難一點,但主要步驟還是能勉強理解,所以這裡將書本上的知識和個人的理解做一個記錄。主要關於(SVD原理、降維公式、重構原矩陣、SVD的兩個實際應用),當然矩陣