[論文閱讀]Factorization Machines

Factorization Machines

/ 2020-01 Howard Wonanut 推薦算法系列文章(1)

😀人工翻譯幷包含部分個人理解,歡迎批評指正,但謝絕轉載。

本文介紹因子分解機(FM),這是一種新的模型,它結合了支持向量機(SVM)和因式分解模型的優點。FM是一種通用預測器(與SVM一樣),能夠處理任何實值數。另外,其使用分解參數模擬變量之間的所有交互(原文:In contrast to SVMs, FMs model all interactions between variables using factorized parameters.)。因此,即使在SVM也無力迴天的稀疏性(如推薦系統)問題中,FM模型也能勝任。本文證明了FM的模型方程可以在線性時間內完成計算

另一方面,有許多不同的因子分解模型,如矩陣分解;並行因子分析或專用模型,如SVD ++,PITF或FPMC。這些模型的缺點是它們不具有普遍適用性,僅適用於特殊輸入數據。此外,他們的模型方程和優化算法也是針對特定任務的。FM僅通過指定輸入數據(即特徵向量)就可以模擬這些模型。這使得即使對於沒有分解模型專業知識的用戶,FM也很容易使用。

關鍵詞:因子分解機;稀疏數據;張量因子化;支持向量機

1 FM模型基本介紹

SVM分類器是機器學習和數據挖掘領域的翹楚,但是其在協同過濾這樣的推薦領域就無法繼續稱霸了,因爲在這個領域的數據往往具有稀疏這個特點,SVM在稀疏數據中往往不能得到一個優秀的分類超平面。因此,FM模型就橫空出世了,FM模型中文名叫作因子分解機(Factorization Machines),我看到這個名字是真的不知其意

FM模型的優點主要有三點:

  • FM能夠在特徵矩陣非常稀疏的情況下使用,完爆SVM
  • FM具有線性時間複雜度,可以在原始中進行優化,不用像SVM那樣依賴支持向量。
  • FM是一種可以與任何實值特徵向量一起使用的通用預測器
  • 支持特徵組合(我加的)

2 使用稀疏數據做預測

在傳統的監督學習問題中,假設給定訓練集D={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}D=\{(\bold{x}^{(1)},y^{(1)}),(\bold{x}^{(2)},y^{(2)}),...,(\bold{x}^{(m)},y^{(m)})\},其中y(i)y^{(i)}爲標籤。如果其爲離散值,則常用該數據做分類任務,如果其爲數值,則常用該數據做迴歸任務。同時,在排名問題(如推薦系統)中yy可以用來給特徵向量x\bold{x}打分,並且根據分值對其進行排序。

本文中使用的數據是高度稀疏的,給定特徵向量x\bold{x}中的絕大多數值xix_i都是0。做如下定義:

  • m(x)m(\bold{x}):特徵向量x\bold{x}中特徵不爲0的個數;
  • mˉD\bar{m}_D:數據集DDm(x)m(\bold{x})的均值,其中任意xD\bold{x} \in D

極度稀疏的數據(mˉD<<n\bar{m}_D << n)在現實世界中很常見,如購物應用的推薦系統。如果有很多類別特徵,每個類別特徵有很多類,那麼特徵矩陣就會特別稀疏(如購物應用中的商品往往有上千種)。

🐒 舉個栗子:
假如現在有一個電影評分系統,該系統記錄用戶uUu \in U在時間tRt \in \mathbb{R}給電影iIi \in I打分爲r1,2,3,4,5r \in {1,2,3,4,5}。現給定用戶列表UU和電影列表II爲:
U=Alice(A),Bob(B),Charlie(C),... U={Alice(A), Bob(B), Charlie(C),...} I=Titanic(TI),NottingHill(NH),StarWars(SW),StarTrek(ST),... I={Titanic (TI), Notting Hill (NH), Star Wars (SW),Star Trek (ST), . . .}
部分評分操作數據SS爲:S = {(A, TI, 2010-1, 5), (A, NH, 2010-2, 3), (A, SW, 2010-4, 1), (B, SW, 2009-5, 4), (B, ST, 2009-8, 5),(C, TI, 2009-9, 1), (C, SW, 2009-12, 5)}。

針對上面數據的一個簡單的預測問題就是:預測某個一個用戶在某個時間給某個電影的評分y^\hat{y}。數據SS將會被轉化爲下圖所示的矩陣。
圖1
每行表示目標y(i)y^{(i)}與其對應的特徵向量 x(i)\bold{x}^{(i)} ;藍色區域表示了用戶變量;紅色區域表示了電影變量,黃色區域表示了該用戶曾經看過的電影,按照其看過的電影數歸一化,使得其和爲1;綠色區域表示投票月份(從2009年1月開始算);棕色區域表示了用戶上一個評分的電影;最右邊的區域是評分。

本文將以該數據集爲例解釋爲什麼FM比SVM好,到現在你應該明確:相比於SVM,FM是一個更加通用的預測模型,因此FM不僅能用於推薦系統,也能夠在其他領域使用。

3 FM模型

3.1 模型推導

在這個部分,我們詳細的介紹一下FM模型。普通的線性模型都是將各個特徵獨立考慮的,並沒有考慮到特徵之間的相互關係。但是實際上,特徵之間可能具有一定的關聯,比如男生更喜歡購買電子設備,女生更喜歡購買衣服化妝品。如果能找出這類的特徵,是非常有意義的。

3.1.1 模型等式

爲了簡單起見,這裏只考慮二階交叉的情況(特徵兩兩組合),對應的FM模型爲:
y~(x)=w0+i=1nwixi+i=1nj=i+1nwijxixj \widetilde{y}(x)=w_0+\sum_{i=1}^n{w_ix_i}+\sum_{i=1}^n\sum_{j=i+1}^n{w_{ij}x_ix_j} 其中,n代表樣本的特徵數量,xix_i是第i個特徵的值,w0,wi,wijw_0,w_i,w_{ij}是模型參數,wijWw_{ij} \in W表示第ii個變量和第jj個變量的交互作用(interaction),只有當xix_ixjx_j都不爲0時,交叉纔有意義。

由於線代中有如下定義:
如果一個實對稱矩陣AA正定,則AAEE合同,那麼存在可逆矩陣CC,使得A=CTCA=C^TC

如果矩陣WW是正定矩陣,那麼只要kk足夠大,就存在VV使得W=VVTW=VV^T,其中VVn×kn\times k 的二維矩陣。因此可以將上面的式子轉化爲:
y~(x)=w0+i=1nwixi+i=1nj=i+1n<vi,vj>xixj \widetilde{y}(x)=w_0+\sum_{i=1}^n{w_ix_i}+\sum_{i=1}^n\sum_{j=i+1}^n {\lt \bold{v}_i,\bold{v}_j \gt x_ix_j}
其中<,>\lt ·,·\gt表示維數爲kk的向量的點乘,kk爲超參數,決定因子分解的維度:
<vi,vj>:=f=1kvi,fvj,f \lt \bold{v}_i,\bold{v}_j \gt :=\sum_{f=1}^k{v_{i,f}·v_{j,f}} viV\bold{v}_i \in \bold{V}表示第ii個變量的kk個因子組成的向量。

不過在數據稀疏的情況下,應該選擇較小的kk,因爲可能沒有足夠的數據來估計矩陣WW。限制kk的大小能夠使得FM模型更加通用,能夠提高其泛化能力。

3.1.2 在數據稀疏的情況下進行參數估計

在數據稀疏的情況下,交互作用項wijw_{ij}對應的特徵xix_ixjx_j的不爲0的樣本將非常少,當訓練樣本不足時,很容易導致參數 wijw_{ij}訓練不充分而不準確,最終影響模型的效果。不過,FM模型能夠克服這個困難,因爲該模型通過分解打破了交互作用參數的獨立性。這意味着一個交互作用項wijw_{ij}也會有助於估計與其相關的交互作用項的參數。

上面的話是真的難懂,基於上面的例子說明一下:

假如現在想要估計Alice(A)和Star Trek(ST) 的交互作用參數wA,STw_{A, ST},由於訓練集中沒有實例同時滿足xAx_AxSTx_{ST}非零,因此會導致這兩個特徵之間沒有交互(wA,ST=0w_{A,ST}=0)。但是如果使用了特徵矩陣分解(factorized)獲得了矩陣V\bold{V},我們可以通過求解<vA,vST><\bold{v}_A,\bold{v}_{ST}>求解wijw_{ij}

直接計算上面的公式求解y~(x)\widetilde{y}(x)的時間複雜度爲O(kn2)O(kn^2),因爲所有的特徵交叉都需要計算。但是可以通過公式變換,將時間複雜度減少到線性複雜度,如下公式推導:
在這裏插入圖片描述

3.2 使用FM進行預測

FM算法可以應用在多種預測任務中,包括:

  • 迴歸:y^(x)\hat{y}(x)可以直接作爲預測結果;
  • 二分類:sign(y^(x))sign(\hat{y}(x))可以直接作爲分類結果,可使用hingle loss或者logit loss進行優化;
  • 排名:向量x\bold{x}可通過y^(x)\hat{y}(x)分數進行排序,並且通過pairwise的分類損失來優化成對樣本(x(a),x(a))D(\bold{x}^{(a)},\bold{x}^{(a)}) \in D

在以上的任務中,一般都會使用L2正則防止過擬合。

3.3 參數學習

從上面的描述可以知道FM可以在線性的時間內進行預測。因此模型的參數(w0,wVw_0, \bold{w}和\bold{V})可以通過梯度下降的方法(例如隨機梯度下降)來學習。FM模型的梯度是:
在這裏插入圖片描述
由於j=1nvj,fxj\sum_{j=1}^n{v_{j,f}x_j}ii是獨立的,因此可以提前計算其結果(如在計算y^(x)\hat{y}(x)的時候直順便算了)。並且每次梯度更新可以在常數時間複雜度內完成,因此FM參數訓練的複雜度也是O(kn)O(kn)。綜上可知,FM可以在線性時間訓練和預測,是一種非常高效的模型。

3.4 擴展到d-階

前面都是針對2階FM模型進行討論,這個模型可以直接拓展到d階:
在這裏插入圖片描述
其中第ll個交互作用項的參數可以通過PARAFAC模型的參數:
V(l)Rn×kl,klN0+ V^{(l)}\in \mathbb{R}^{n\times k_l}, k_l \in \mathbb{N}^+_0
如果直接計算上面公式的時間複雜度爲O(kdnd)O(k_dn^d),如果進行優化,其時間複雜度也會是線性的。

4 FM vs. SVM

文章在這裏還做了挺多對比的,我就不詳細寫了,說下大概思路:

4.1 SVM模型公式

SVM分類器進行預測的公式如下:
y^(x=<ϕ(x),w> \hat{y}(\bold{x}=<\phi(\bold{x}), \bold{w}> 其中ϕ\phi是映射函數,將在RN\mathbb{R}^N空間中的特徵映射到更高維的空間F\mathcal{F}中,映射函數ϕ\phi與核函數的關係爲:
K:Rn×RnR,K(x,z)=<ϕ(x),ϕ(z)> K:\mathbb{R}^n \times \mathbb{R}^n \rightarrow \mathbb{R}, \qquad K(\bold{x}, \bold{z}) = <\phi(\bold{x}), \phi(\bold{z})> 以線性核(Linear kernel)和多項式核(Polynominal kernel)爲例,線性核函數爲Kl(x,z):=1+<x,z>K_l(\bold{x}, \bold{z}):=1+<\bold{x}, \bold{z}>,其對應的映射函數爲ϕ(x):=(1,x1,...,xn)\phi(\bold{x}):=(1,x_1,...,x_n)。因此線性核的SVM預測函數爲:
y^(x)=w0+i=1nwixi,w0R,wRn \hat{y}(\bold{x})=w_0+\sum_{i=1}^n{w_ix_i}, \qquad w_0 \in \mathbb{R}, \qquad \bold{w} \in \mathbb{R}^n 因此線性SVM等價於1-階FM模型。

而多項式核爲:K(x,z):=(<x,z>+1)dK(\bold{x}, \bold{z}):=(<\bold{x}, \bold{z}>+1)^d,當d爲2時,其映射函數爲:
ϕ(x):=(1,2x1,...,2xn,x12,...,xn2,...2x1x2,...,2x1xn,2x2x3,...,2xn1xn) \phi(\bold{x}):=(1,\sqrt{2}x_1,...,\sqrt{2}x_n, x_1^2,...,x_n^2,...\sqrt{2}x_1x_2,...,\sqrt{2}x_1x_n,\sqrt{2}x_2x_3,...,\sqrt{2}x_{n-1}x_n) 多項式核SVM的模型等式爲:
y^(x)=w0+2i=1nwixi+wi,i(2)xi2+2i=1nj=i+1nwi,j(2)xixj \hat{y}(\bold{x})=w_0+\sqrt{2}\sum_{i=1}^n{w_ix_i}+\sum{w_{i,i}^{(2)}x_i^2} + \sqrt{2} \sum_{i=1}^n\sum_{j=i+1}^n{w_{i,j}^(2)x_ix_j} 其中 w0R,wRn,W(2)Rn×nw_0 \in \mathbb{R}, \bold{w} \in \mathbb{R}^n, \bold{W}^{(2)} \in \mathbb{R}^{n \times n}

通過對比2-階多項式核SVM與FM,你會發現,SVMs核FMs的主要區別在於參數化:SVM的所有參數之間都是相互獨立的,如wi,jw_{i,j}wi,lw_{i,l}。相反的,FMs的特徵矩陣經過分解,因此<vi,vj><\bold{v}_i, \bold{v}_j><vi,vl><\bold{v}_i, \bold{v}_l>並不是相互獨立的,他們之間會存在聯繫,因爲存在重疊向量vi\bold{v}_i

4.2 SVM和FM模型對比

爲什麼線性SVM在和多項式SVM在稀疏條件下效果會比較差呢?

  • 線性svm只有一維特徵,不能挖掘深層次的組合特徵在實際預測中並沒有很好的表現;
  • 而多項式svn正如前面提到的,交叉的多個特徵需要在訓練集上共現才能被學習到,否則該對應的參數就爲0,這樣對於測試集上的case而言這樣的特徵就失去了意義,因此在稀疏條件下,SVM表現並不能讓人滿意。

而FM不一樣,通過向量化的交叉,可以學習到不同特徵之間的交互,進行提取到更深層次的抽象意義。

此外,FM和SVM的區別還體現在:

  • FM可以在原始形式下進行優化學習,而基於kernel的非線性SVM通常需要在對偶形式下進行;
  • FM的模型預測是與訓練樣本獨立,而SVM則與部分訓練樣本有關,即支持向量。

4.3 SVM和FM模型區別總結

  • SVM的密集參數化需要直接觀察相互作用,而這通常是在稀疏環境中無法獲得的。 然而即使在稀疏情況下,FM的參數也可以很好地進行參數估計。
  • FM可以直接在原始的模型公式上進行學習,而SVM需要模型推導
  • FM模型不依賴於訓練集,而SVM依賴於訓練集(支持向量和訓練集中的數據有關)

參考資料

  1. FM(Factorization Machines)的理論與實踐
  2. FM論文地址
  3. FM算法(一):算法理論
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章