1. 程式人生 > >FM演算法(Factorization Machine)

FM演算法(Factorization Machine)

因子分解機(Factorization Machine, FM)是由Steffen Rendle提出的一種基於矩陣分解的機器學習演算法。目前,被廣泛的應用於廣告預估模型中,相比LR而言,效果強了不少。

一、FM背景

FM(Factorization Machine)主要目標是:解決資料稀疏的情況下,特徵怎樣組合的問題。以一個廣告分類的問題為例,根據使用者畫像、廣告位以及一些其他的特徵,來預測使用者是否會點選廣告(二分類問題)。資料如下:
這裡寫圖片描述
Clicked?是分類值,表明使用者是否點選了此廣告。1表示點選,0表示未點選。而Country,Day,Ad_type則是Categorical特徵

(類別特徵),一般都是進行one-hot編碼處理。

將上面的離散特徵資料進行one-hot編碼以後(假設Country,Day,Ad_type類別只有圖中幾種),如下圖所示

這裡寫圖片描述

顯然可以看出,特徵從最初的3個變成了現在的7個。而實際工程當中,由於有的Categorical特徵維度會非常大(比如地區等),如果採用One-Hot編碼,那麼網際網路公司的動輒上億個特徵的資料集就是這麼來的了。

因式分解機是一種基於LR模型的高效的學習特徵間相互關係,
對於因子分解機FM來說,最大的特點是對於稀疏的資料具有很好的學習能力。

二、FM優點

  • ① FMs allow parameter estimation under very sparse data where SVMs fails.

    (FM模型可以在非常稀疏的資料中進行合理的引數估計,而SVM做不到這點)

  • ② **FMs have linear complexity,**can be optimized in the primal and do not rely on support vectors like SVMs.
    在FM模型的複雜度是線性的,優化效果很好,而且不需要像SVM一樣依賴於支援向量。)

  • FMs are a general predictor that can work with any real valued feature vector. In contrast to this, other state-of-the-art factorization models work only on very restricted input data.
    FM是一個通用模型

    ,它可以用於任何特徵為實值的情況。而其他的因式分解模型只能用於一些輸入資料比較固定的情況。)

三、FM模型

在一般的線性模型中,是各個特徵獨立考慮的,沒有考慮到特徵與特徵之間的相互關係。但實際上,大量的特徵之間是有關聯的。最簡單的以電商為例,一般女性使用者看化妝品服裝之類的廣告比較多,而男性更青睞各種球類裝備。那很明顯,女性這個特徵與化妝品類服裝類商品有很大的關聯性,男性這個特徵與球類裝備的關聯性更為密切。如果我們能將這些有關聯的特徵找出來,顯然是很有意義的。

一般的線性模型為(n為特徵維度):

y=ω0+i=1nωixi

對於度為2的因子分解機(FM)的模型為:

y=ω0+i=1nωixi+i=1n1j=i+1n<vi,vj>xixj

其中,vRn,k<vi,vj>表示的是兩個大小為k的向量之間的點積

<vi,vj>=f=1kvi,fvj,f

與線性模型相比,FM的模型就多了後面特徵組合的部分。

四、FM求解

在基本線性迴歸模型的基礎上引入交叉項,如下:

y=ω0+i=1nωixi+i=1n1j=i+1nωijxixj

組合部分的特徵相關引數共有n(n1)2個。但是在資料很稀疏的情況下,滿足xi,xj都不為0的情況非常少,這樣將導致ωij無法通過訓練得出,無法對相應的引數進行估計。

這裡,採用的方法是:對每一個特徵分量xi引入輔助向量vi=(vi1,vi2,...,vik)。然後,利用vivTj對交叉項的係數ωij進行估計

ω^ij=vivTj


這裡寫圖片描述

這裡寫圖片描述

這就對應了一種矩陣的分解。對k值的限定,對FM的表達能力有一定的影響,下圖為論文中說明的k值選取原則。

這裡寫圖片描述

下面,求<vi,vj>,這塊的求解用到了
((a+b+c)2a2b2c2)/2求出交叉項。過程如下:
這裡寫圖片描述

參考資料