0.引言
針對類別變量進行oner-hot編碼後的高維稀疏矩陣M,可以表示如下:
可以看出,經過One-Hot編碼之後,大部分樣本數據特徵是比較稀疏的, One-Hot編碼的另一個特點就是導致特徵空間大。例如,電影品類有550維特徵,一個categorical特徵轉換爲550維數值特徵,特徵空間劇增。
同時通過觀察大量的樣本數據可以發現,某些特徵經過關聯之後,與label之間的相關性就會提高。例如,“USA”與“Thanksgiving”、“China”與“Chinese New Year”這樣的關聯特徵,對用戶的點擊有着正向的影響。換句話說,來自“China”的用戶很可能會在“Chinese New Year”有大量的瀏覽、購買行爲,而在“Thanksgiving”卻不會有特別的消費行爲。這種關聯特徵與label的正向相關性在實際問題中是普遍存在的,如“化妝品”類商品與“女”性,“球類運動配件”的商品與“男”性,“電影票”的商品與“電影”品類偏好等。因此,引入兩個特徵的組合是非常有意義的。
多項式模型是包含特徵組合的最直觀的模型。在多項式模型中,特徵 和 的組合採用 表示,即和都非零時,組合特徵 纔有意義。從對比的角度,討論二階多項式模型。模型的表達式如下:
其中, 代表樣本的特徵數量,是第個特徵的值, 是模型參數。從公式可以看出,組合特徵的參數一共有 個,任意兩個參數都是獨立的。然而,在數據稀疏性普遍存在的實際應用場景中,二次項參數的訓練是很困難的。其原因是,每個參數 的訓練需要大量 和 都非零的樣本;由於樣本數據本來就比較稀疏,滿足“和 都非零”的樣本將會非常少。訓練樣本的不足,很容易導致參數 不準確,最終將嚴重影響模型的性能。
一、FM模型推導
1. 對於普通的線性模型,引入二次交叉項後:
其中,,,,爲隱向量的維度,則兩個向量的內積滿足:
該模型需要學習的參數包括:
-
:模型整體的偏置;
-
:一階線性權重;
-
:特徵和特徵交互權重
針對等式(1)右端最後一項化簡得:
所以公式(1)可以化簡爲:
針對上式,利用SGD訓練模型其參數的梯度下降表達式爲:
其中,是隱向量 的第 個元素。由於 只與有關,而與 j 無關,在每次迭代過程中,只需計算一次所有 的 ,就能夠方便地得到所有 的梯度。顯然,計算所有 的 的複雜度是 O(kn);已知時,計算每個參數梯度的複雜度是 O(1);得到梯度後,更新每個參數的複雜度是 O(1);模型參數一共有 nk+n+1 個。因此,FM參數訓練的複雜度也是 O(kn)。綜上可知,FM可以在線性時間訓練和預測,是一種非常高效的模型。
2. FM & SVM討論
-
線性核SVM
可以看出等價於時的FM。
-
多項式核 SVM
非線性映射函數:
SVM的表達式爲:
可以看出,SVM的二元特徵交叉參數是獨立的,而FM的二元特徵交叉參數是兩個維的向量、,交叉參數就不是獨立的,而是相互影響的;
SUMMARY
-
對於大型稀疏矩陣,SVM無法估計高階交互特徵的參數,因爲對於特徵對的參數必須有足夠的非零樣本即只要存在某一個特徵則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
-
樣本歸一化。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的顯著優勢。