FM算法

存在的問題

稀疏數據下的特徵組合問題

  1. 類別特徵經過one-hot編碼轉換後會導致樣本特徵的稀疏性,並且會得到千萬級別甚至上億級別的特徵空間,導致特徵空間爆炸

多項式模型:
在這裏插入圖片描述
可以看出,組合的特徵的參數一共有 n(n1)2\frac{n(n-1)}{2}個,並且它們都是相互獨立的,而且在數據稀疏普遍存在的實際應用場景中,二次項參數的訓練是很困難的,因爲滿足"xix_ixjx_j都非零"的樣本是非常少的.訓練樣本的不足,很容易導致參數wijw_{ij}不準確(每個參數的訓練都需要大量的非零樣本),嚴重影響模型的性能;

  1. 而且這種多項式模型中任意兩個參數都是獨立的,而特徵之間的組合與label之間的相關性就會有所提高;

基於的思想

矩陣分解:
任意的 N×N 實對稱矩陣都有 N 個線性無關的特徵向量。並且這些特徵向量都可以正交單位化而得到一組正交且模爲 1 的向量。故實對稱矩陣 A 可被分解成:
在這裏插入圖片描述
其中Q爲正交矩陣,Λ爲實對角矩陣。

類似地,所有二次項參數wijw_{ij}可以組成一個對稱陣WW(爲了方便說明FM的由來,對角元素可以設置爲正實數),那麼這個矩陣就可以分解爲W=VTVW=V^TV,V 的第 j列( vjv_j )便是第 j維特徵(xjx_j)的隱向量。換句話說,特徵分量xix_ixjx_j的交叉項係數就等於xix_i對應的隱向量與xjx_j對應的隱向量的內積,即每個參數 wij=<vi,vj>w_{ij}=<v_i, v_j>這就是FM模型的核心思想。

爲了求出wijw_{ij},我們需要求出特徵分量xix_i 的輔助向量vi=(vi1,...,vik)v_i=(v_{i1}, ..., v_{ik}), xjx_j 的輔助向量vj=(vj1,...,vjk)v_j=(v_{j1}, ..., v_{jk}) , k 表示隱向量長度(實際應用中 k<<nk<<n),轉換過程如下圖所示:
在這裏插入圖片描述
在這裏插入圖片描述

具體方法

在這裏插入圖片描述
在這裏插入圖片描述
viv_{i} 由k維組成,k<<n,包含k個描述特徵的因子,二次項參數的個數減少爲knkn個,遠少於多項式模型的參數數量.另外,參數因子化使得xhxix_hx_i 的參數和 xixjx_ix_j的參數不再是相互獨立的,因此我們可以在樣本稀疏的情況下相對合理地估計FM的二次項參數。具體來說,xhxix_hx_ixixjx_ix_j的係數分別爲 <vh,vi><v_h, v_i><vi,vj><v_i, v_j> ,它們之間有共同項viv_i。也就是說,所有包含“xix_i的非零組合特徵”(存在某個iji \neq j,使得xixj0x_ix_j \neq 0)的樣本都可以用來學習隱向量viv_i,這很大程度上避免了數據稀疏性造成的影響。而在多項式模型中,whiw_{hi}wjiw_{ji}是相互獨立的。

這裏的viv_{i}xix_i特徵的低緯稠密表達,實際中隱向量的長度通常遠小於特徵維度N。在實際的CTR場景中,數據都是很稀疏的category特徵,通常表示成離散的one-hot形式,這種編碼方式,使得one-hot vector非常長,而且很稀疏,同時特徵總量也驟然增加,達到千萬級甚至億級別都是有可能的,而實際上的category特徵數目可能只有幾百維。FM學到的隱向量可以看做是特徵的一種embedding表示,把離散特徵轉化爲Dense Feature,這種Dense Feature還可以後續和DNN來結合,作爲DNN的輸入,事實上用於DNN的CTR也是這個思路來做的。

而且隱向量可以表示之前沒有出現過的交叉特徵,假如在數據集中經常出現 <男,籃球> ,<女,化妝品>,但是沒有出現過<男,化妝品>,<女,籃球>,這時候如果用 wijw_{ij}表示<男,化妝品> 的係數,就會得到0。但是有了男特徵和化妝品特徵的隱向量之後,就可以通過來求解 <vv 男,vv 化妝品> 來求解。

時間複雜度

直觀上看,FM的複雜度是O(kn2)O(kn^2)。但是,通過公式(3)的等式,FM的二次項可以化簡,其複雜度可以優化到O(kn)O(kn) 。由此可見,FM可以在線性時間對新樣本作出預測
在這裏插入圖片描述
採用隨機梯度下降法SGD求解參數:

在這裏插入圖片描述
由上式可知,vifv_{if}的訓練只需要樣本xix_i特徵非0即可,適合於稀疏數據.在每次迭代中,只需計算一次所有f的 j=1nvjfxj\sum^{n}_{j=1}v_{jf}x_j,時間複雜度爲O(kn)O(kn). 綜上可知,FM可以在線性時間訓練和預測,是一種非常高效的模型。

優點

  • 參數的數量大幅度縮減,從n×(n−1)/2降低到nk
  • 向量的點積可以表示原本兩個毫無相關的參數之間的關係, 增大了特徵之間的相關性信息
  • 而稀疏數據下學習不充分的問題也能得到充分解決。比如原本的多項式迴歸的參數w12的學習只能依賴於特徵x1和x2;而對參數⟨v1,v2⟩而言就完全不一樣了,它由v1和v2組成。而對於每個向量可以通過多個交叉組合特徵學習得到,比如可以由x1x2,x1x3,…學習獲得,這樣可供學習的非零樣本就大大增加了,

參考資料

[1] : https://zhuanlan.zhihu.com/p/37963267
[2] : https://blog.csdn.net/asd136912/article/details/78318563

發佈了89 篇原創文章 · 獲贊 112 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章