特征組合
人工方式的特征工程,通常有兩個問題:
- 特征爆炸
- 大量重要的特征組合都隱藏在數據中,無法被專家識別和設計
針對上述兩個問題,廣度模型和深度模型提供了不同的解決思路。
- 廣度模型包括FM/FFM等大規模低秩(Low-Rank)模型,FM/FFM通過對特征的低秩展開,為每個特征構建隱式向量,並通過隱式向量的點乘結果來建模兩個特征的組合關系實現對二階特征組合的自動學習。作為另外一種模型,Poly-2模型則直接對2階特征組合建模來學習它們的權重。FM/FFM相比於Poly-2模型,優勢為以下兩點。第一,FM/FFM模型所需要的參數個數遠少於Poly-2模型:FM/FFM模型為每個特征構建一個隱式向量,所需要的參數個數為 \(O(km)\),其中k為隱式向量維度,m為特征個數;Poly-2模型為每個2階特征組合設定一個參數來表示這個2階特征組合的權重,所需要的參數個數為 \(O(m^2)\)。第二,相比於Poly-2模型,FM/FFM模型能更有效地學習參數:當一個2階特征組合沒有出現在訓練集時,Poly-2模型則無法學習該特征組合的權重;但是FM/FFM卻依然可以學習,因為該特征組合的權重是由這2個特征的隱式向量點乘得到的,而這2個特征的隱式向量可以由別的特征組合學習得到。總體來說,FM/FFM是一種非常有效地對二階特征組合進行自動學習的模型。
- 深度學習是通過神經網絡結構和非線性激活函數,自動學習特征之間復雜的組合關系。目前在APP推薦領域中比較流行的深度模型有FNN/PNN/Wide & Deep。FNN模型是用FM模型來對Embedding層進行初始化的全連接神經網絡。PNN模型則是在Embedding層和全連接層之間引入了內積/外積層,來學習特征之間的交互關系。Wide & Deep模型由谷歌提出,將LR和DNN聯合訓練,在Google Play取得了線上效果的提升。
FM 因子分解
FM算法可以在線性時間內完成模型訓練, 是一個非常高效的模型。FM最大特點和優勢:FM模型對稀疏數據有更好的學習能力,通過交互項可以學習特征之間的關聯關系,並且保證了學習效率和預估能力。
One-Hot編碼的特點: 大部分樣本的特征比較稀疏; 特征空間大。
通過觀察大量的樣本數據可以發現,某些特征經過關聯之后,與label之間的相關性就會提高。如:“USA”與“Thanksgiving”、“China”與“Chinese New Year”這樣的關聯特征,對用戶的點擊有着正向的影響。
多項式模型是包含特征組合的最直觀的模型。考慮到計算效率, 我們只討論二階多項式模型。
從這個公式可以看出,組合特征的參數一共有\(n(n−1)\over 2\)個,任意兩個參數都是獨立的。當組合特征的樣本數不充足時, 學習到的參數將不准確, 從而會嚴重影響模型預測的效果(performance)和穩定性。
那么,如何解決二次項參數的訓練問題呢?矩陣分解提供了一種解決思路。在Model-based的協同過濾中,一個rating矩陣可以分解為user矩陣和item矩陣,每個user和item都可以采用一個隱向量表示。矩陣W就可以分解為 \(W=V^TV\),V 的第j列便是第 j 維特征的隱向量。每個參數 \(w_{ij}=⟨v_i,v_j⟩\),這就是FM模型的核心思想。因此,FM的模型方程為
隱向量的長度為k(k<<n),包含k個描述特征的因子。
上邊這個公式是一個通用的擬合方程,可以采用不同的損失函數用於解決回歸、二元分類等問題,比如可以采用MSE(Mean Square Error)損失函數來求解回歸問題,也可以采用Hinge、Cross-Entropy損失來求解分類問題。當然,在進行二元分類時,FM的輸出需要經過Sigmoid變換,這與Logistic回歸是一樣的。
當前的FM公式的復雜度是\(\mathcal O(kn^2)\),但是,通過下面的等價轉換,可以將FM的二次項化簡,其復雜度可以優化到\(\mathcal O(kn)\),即:
詳細推導:
FM模型的核心作用可以概括為以下三個:
- FM降低了交叉項參數學習不充分的影響:one-hot編碼后的樣本數據非常稀疏,組合特征更是如此。為了解決交叉項參數學習不充分、導致模型有偏或不穩定的問題。作者借鑒矩陣分解的思路:每一維特征用k維的隱向量表示,交叉項的參數\(w_{ij}\)用對應特征隱向量的內積表示,即\(⟨v_i,v_j⟩\)。這樣參數學習由之前學習交叉項參數\(w_{ij}\)的過程,轉變為學習n個單特征對應k維隱向量的過程。
- FM提升了模型預估能力。可以用於預估訓練集中沒有出現過的特征組合項.
- FM提升了參數學習效率:是在多項式模型基礎上對參數的計算做了調整,成為線性復雜度. 從交互項的角度看,FM僅僅是一個可以表示特征之間交互關系的函數表法式,可以推廣到更高階形式,即將多個互異特征分量之間的關聯信息考慮進來。例如在廣告業務場景中,如果考慮User-Ad-Context三個維度特征之間的關系,在FM模型中對應的degree為3。
與其他模型相比,它的優勢如下:
- FM是一種比較靈活的模型,通過合適的特征變換方式,FM可以模擬二階多項式核的SVM模型、MF模型、SVD++模型等;
- 相比SVM的二階多項式核而言,FM在樣本稀疏的情況下是有優勢的;而且,FM的訓練/預測復雜度是線性的,而二項多項式核SVM需要計算核矩陣,核矩陣復雜度就是N平方。
FFM(場感知分解機,Field-aware Factorization Machine)
FM的缺點: 由於需要兩兩組合特征, 這樣任意兩個交叉特征之間都有了直接或者間接的關聯, 因此任意兩組特征交叉組合的隱向量都是相關的, 這實際上限制了模型的復雜度. 但是如果使得任意一對特征組合都是完全獨立的, 這與通過核函數計算特征交叉類似, 有着極高的復雜性和自由度, 模型計算十分復雜. FFM正好介於這兩者之間.
FFM引入特征組(field)的概念來優化此問題. FFM把相同性質的特征歸於同一個field, 按照級別分別計算當前特征與其它field的特征組合時的特征向量, 這樣特征組合的數量將大大減少.
假設樣本的 n 個特征屬於 f 個field,那么FFM的二次項有 nf個隱向量。而在FM模型中,每一維特征的隱向量只有一個。FM可以看作FFM的特例,是把所有特征都歸屬到一個field時的FFM模型。FFM模型方程如下:
如果隱向量長度為k, 那么FFM的二次項參數就有nfk個,遠多余FM的nk個.
由於FFM的任意兩組交叉特征的隱向量都是獨立的, 可以取得更好的組合效果, 這也使得FFM二次項並不能夠化簡,其復雜度為\(\mathcal O(kn^2)\)。
權重求解:
libFFM的實現中采用的是AdaGrad隨機梯度下降方法. 並且在FFM公式中省略了常數項和一次項,模型方程如下:
其中,C2是非零特征的二元組合,j1是特征,屬於field f1,\(w_{j_1,f_2}\)是特征 j1對field f2 的隱向量。此FFM模型采用logistic loss作為損失函數,和L2懲罰項,因此只能用於二元分類問題。
FwFM
FFM相當於在FM的基礎上考慮了不同域的特征之間的交互強度。但是FFM的參數過多,在離線優化以及線上使用時,性能較為一般。FwFM同FFM一樣,也是在FM的基礎上考慮不同域之間的交互強度關系,但做法不同。FwFM中對不同域之間的交互強度賦予一個統一的權重
FwFM與FFM的效果比較接近(可能略差一點),能夠實現預測效果和性能的平衡。
參考論文:Field-weighted Factorization Machines for Click-Through Rate Prediction in Display Advertising。
DeepFM
DeepFM模型結合了廣度和深度模型的優點,聯合訓練FM模型和DNN模型,來同時學習低階特征組合和高階特征組合。此外,DeepFM模型的Deep部分和FM部分共享Embedding層輸入,這樣Embedding層的隱式向量在(殘差反向傳播)訓練時可以同時接受到兩部分的信息,從而使Embedding層的信息表達更加准確。DeepFM相對於現有的廣度模型、深度模型以及Wide & Deep模型的優勢在於:
- DeepFM模型同時對低階特征組合和高階特征組合建模,從而能夠學習到各階特征之間的組合關系;
- DeepFM模型是一個端到端的模型,不需要額外的人工特征工程。
FM/FFM與其它模型對比
- vs 神經網絡. 神經網絡難以直接處理高維稀疏的離散特征, 因為這導致神經元的連接參數太多. 而因子分解機可以看作對高維稀疏的離散特征做嵌入(Embedding).
- vs 梯度提升樹. 當數據不是高度稀疏時,梯度提升樹可以有效地學習到比較復雜的特征組合; 但是在高度稀疏的數據中, 特征二階組合的數量超過樣本的模式數量, 因而梯度梯度提升樹無法學習到這種高階組合.
參考