FM &FFM:深入理解FM與FFM

0.引言

針對類別變量進行oner-hot編碼後的高維稀疏矩陣M,可以表示如下:

可以看出,經過One-Hot編碼之後,大部分樣本數據特徵是比較稀疏的, One-Hot編碼的另一個特點就是導致特徵空間大。例如,電影品類有550維特徵,一個categorical特徵轉換爲550維數值特徵,特徵空間劇增。

同時通過觀察大量的樣本數據可以發現,某些特徵經過關聯之後,與label之間的相關性就會提高。例如,“USA”與“Thanksgiving”、“China”與“Chinese New Year”這樣的關聯特徵,對用戶的點擊有着正向的影響。換句話說,來自“China”的用戶很可能會在“Chinese New Year”有大量的瀏覽、購買行爲,而在“Thanksgiving”卻不會有特別的消費行爲。這種關聯特徵與label的正向相關性在實際問題中是普遍存在的,如“化妝品”類商品與“女”性,“球類運動配件”的商品與“男”性,“電影票”的商品與“電影”品類偏好等。因此,引入兩個特徵的組合是非常有意義的。

多項式模型是包含特徵組合的最直觀的模型。在多項式模型中,特徵 x_i和 x_j的組合採用 x_i_j表示,即x_ix_j都非零時,組合特徵  x_i_j纔有意義。從對比的角度,討論二階多項式模型。模型的表達式如下:

其中,n 代表樣本的特徵數量,x_i是第i個特徵的值,w_0,w_i,w_i_j 是模型參數。從公式可以看出,組合特徵的參數一共有 C_{n}^{2} = n(n-1)/2 個,任意兩個參數都是獨立。然而,在數據稀疏性普遍存在的實際應用場景中,二次項參數的訓練是很困難的。其原因是,每個參數 w_i_j的訓練需要大量 x_ix_j 都非零的樣本;由於樣本數據本來就比較稀疏,滿足“x_ix_j 都非零”的樣本將會非常少。訓練樣本的不足,很容易導致參數 w_i_j不準確,最終將嚴重影響模型的性能。

 

一、FM模型推導

 

1. 對於普通的線性模型,引入二次交叉項後:

其中,w_0\in R,W\in R^n,V\in R^{n\times k}k爲隱向量的維度,則兩個向量的內積滿足:

該模型需要學習的參數包括:

  • w_0:模型整體的偏置;

  • w_i:一階線性權重;

  • w_{ij} :=<v_i ,v_j>:特徵i和特徵j交互權重

 針對等式(1)右端最後一項化簡得:

所以公式(1)可以化簡爲:

針對上式,利用SGD訓練模型其參數的梯度下降表達式爲:

其中,是隱向量 的第 個元素。由於 只與有關,而與 j 無關,在每次迭代過程中,只需計算一次所有 ,就能夠方便地得到所有 的梯度。顯然,計算所有 的複雜度是 O(kn);已知時,計算每個參數梯度的複雜度是 O(1);得到梯度後,更新每個參數的複雜度是 O(1);模型參數一共有 nk+n+1 個。因此,FM參數訓練的複雜度也是 O(kn)。綜上可知,FM可以在線性時間訓練和預測,是一種非常高效的模型。

 

2. FM & SVM討論

  • 線性核SVM

  可以看出等價於d=1時的FM。

  • 多項式核 SVM 

      非線性映射函數d=2

 

       SVM的表達式爲:

 

        可以看出,SVM的二元特徵交叉參數是獨立的,而FM的二元特徵交叉參數是兩個k維的向量v_iv_j,交叉參數就不是獨立的,而是相互影響的;

 

SUMMARY

  • 對於大型稀疏矩陣,SVM無法估計高階交互特徵的參數,因爲對於特徵對(i,j)的參數w_{ij}必須有足夠的非零樣本即只要存在某一個特徵則wij參數估計失敗,因此在大型稀疏樣本情況下,SVM表現很差,而FM對大型稀疏數據非常有用。

  • FM可以在原始形式下進行優化學習,而基於kernel的非線性SVM通常需要在對偶形式下進行;

  • FM的模型預測是與訓練樣本獨立,而SVM則與部分訓練樣本有關,即支持向量;

FM參數初始化

可以看出:常數項和一次項初始化爲零,二次項按照均值爲0,方差爲0.01的正態分佈初始化。

 

FM數據格式

 

 

  • For classification(binary/multiclass), <label> is an integer indicating the class label.

  • For regression, <label> is the target value which can be any real number.

  • Labels in the test file are only used to calculate accuracy or errors. If they are unknown, you can just fill the first column with any number.

 

二、FFM

 假設一個廣告分類的問題,根據用戶和廣告位相關的特徵,預測用戶是否點擊了廣告。源數據如下:
 

“Clicked?“是label,Country、Day、Ad_type是特徵。由於三種特徵都是categorical類型的,需要經過獨熱編碼(One-Hot Encoding)轉換成數值型特徵。
 

         FFM(Field-aware Factorization Machine)最初的概念來自Yu-Chin Juan(阮毓欽,畢業於中國臺灣大學,現在美國Criteo工作)與其比賽隊員,是他們借鑑了來自Michael Jahrer的論文中的field概念提出了FM的升級版模型。通過引入field的概念,FFM把相同性質的特徵歸於同一個field。以上面的廣告分類爲例,“Day=26/11/15”、“Day=1/7/14”、“Day=19/2/15”這三個特徵都是代表日期的,可以放到同一個field中。同理,商品的末級品類編碼生成了550個特徵,這550個特徵都是說明商品所屬的品類,因此它們也可以放到同一個field中。簡單來說,同一個categorical特徵經過One-Hot編碼生成的數值特徵都可以放到同一個field,包括用戶性別、職業、品類偏好等。在FFM中,每一維特徵 ,針對其它特徵的每一種field fj,都會學習一個隱向量 。因此,隱向量不僅與特徵相關,也與field相關。也就是說,“Day=26/11/15”這個特徵與“Country”特徵和“Ad_type”特徵進行關聯的時候使用不同的隱向量,這與“Country”和“Ad_type”的內在差異相符,也是FFM中“field-aware”的由來。
 
        假設樣本的 n個特徵屬於 f個field,那麼FFM的二次項有 nf個隱向量。而在FM模型中,每一維特徵的隱向量只有一個。FM可以看作FFM的特例,是把所有特徵都歸屬到一個field時的FFM模型。根據FFM的field敏感特性,可以導出其模型方程。
 

 
        其中,fj是第 j個特徵所屬的field。如果隱向量的長度爲 k,那麼FFM的二次參數有 nfk 個,遠多於FM模型的 nk個。此外,由於隱向量與field相關,FFM二次項並不能夠化簡,其預測複雜度是 O(kn2)
 
 
 
下面以一個例子簡單說明FFM的特徵組合方式。輸入記錄如下
 

 
這條記錄可以編碼成5個特徵,其中“Genre=Comedy”和“Genre=Drama”屬於同一個field,“Price”是數值型,不用One-Hot編碼轉換。爲了方便說明FFM的樣本格式,我們將所有的特徵和對應的field映射成整數編號。
 
 

那麼,FFM的組合特徵有10項:
 

 
 
FFM數據格式
 

 
在訓練FFM的過程中,有許多小細節值得特別關注。
  • 樣本歸一化。FFM默認是進行樣本數據的歸一化,即 pa.normpa.norm 爲真;若此參數設置爲假,很容易造成數據inf溢出,進而引起梯度計算的nan錯誤。因此,樣本層面的數據是推薦進行歸一化的。
  • 特徵歸一化。CTR/CVR模型採用了多種類型的源特徵,包括數值型和categorical類型等。但是,categorical類編碼後的特徵取值只有0或1,較大的數值型特徵會造成樣本歸一化後categorical類生成特徵的值非常小,沒有區分性。例如,一條用戶-商品記錄,用戶爲“男”性,商品的銷量是5000個(假設其它特徵的值爲零),那麼歸一化後特徵“sex=male”(性別爲男)的值略小於0.0002,而“volume”(銷量)的值近似爲1。特徵“sex=male”在這個樣本中的作用幾乎可以忽略不計,這是相當不合理的。因此,將源數值型特徵的值歸一化到 [0,1]是非常必要的。
  • 省略零值特徵。從FFM模型的表達式可以看出,零值特徵對模型完全沒有貢獻。包含零值特徵的一次項和組合項均爲零,對於訓練模型參數或者目標值預估是沒有作用的。因此,可以省去零值特徵,提高FFM模型訓練和預測的速度,這也是稀疏樣本採用FFM的顯著優勢。
 

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章