FM算法詳解

參考:http://blog.csdn.net/bitcarmanlee/article/details/52143909

http://blog.csdn.net/dream_catcher_10/article/details/50844976

簡介

1.FM(factorization machine)模型是一種基於矩陣分解的機器學習模型,對於One-Hot編碼引起的稀疏數據具有很好的學習能力;
2.FM模型與LR模型的區別在於引進了特徵組合,選擇合適的K值可提高模型的泛化能力;;

FM算法

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

一般的線性模型爲: 

y=ω0+i=1nωixi

從上面的式子很容易看出,一般的線性模型壓根沒有考慮特徵間的關聯。爲了表述特徵間的相關性,我們採用多項式模型。在多項式模型中,特徵xixj的組合用xixj。爲了簡單起見,我們討論二階多項式模型。具體的模型表達式如下:

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

上式中,n表示樣本的特徵數量,xi表示第i個特徵。 
與線性模型相比,FM的模型就多了後面特徵組合的部分。

FM求解

從上面的式子可以很容易看出,組合部分的特徵相關參數共有

n(n1)2個。但是如第二部分所分析,在數據很稀疏的情況下,滿足xi,xj都不爲0的情況非常少,這樣將導致ωij無法通過訓練得出。

爲了求出ωij,我們對每一個特徵分量xi引入輔助向量Vi=(vi1,vi2,,vik)。然後,利用vivTjωij進行求解。

這裏寫圖片描述

那麼ωij組成的矩陣可以表示爲: 
這裏寫圖片描述 
上面的表達形式,就對應了一種矩陣的分解。對k值的限定,就反應了FM模型的表達能力。

要求出<vi,vj>,主要是採用瞭如公式((a+b+c)2a2b2c2求出交叉項。具體過程如下:這裏寫圖片描述



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