FM的總結:
1、FM算法與線性回歸相比增加了特征的交叉。自動選擇了所有特征的兩兩組合,並且給出了兩兩組合的權重。
2、上一條所說的,如果給兩兩特征的組合都給一個權重的話,需要訓練的參數太多了。比如我們有N維的特征,這樣的話就需要N*N量級的參數。FM算法的一個優點是減少了需要訓練的參數。這個也是參考了矩陣分解的想法。有N個特征,特征間的權重,需要一個N*N的權重矩陣。把這個N*N的矩陣分解成 K*N的矩陣V的乘積,權重矩陣W=VT*V。把每個特征用長度為K的向量來表示,此處應該是每個特征也有一個向量,而不是每個特征的值有一個向量。比如有一個長度為K的向量來表示性別這個特征。
此處的K是自己設置的,K<<N。
3、FM算法的表示公式為:
如果按這個直接算的話就是N2的復雜度了,比較高。然后針對后一部分進行化簡,變成KN復雜度的。
這部分的化簡主要使用了 x*y = 1/2( (x+y)2 - x2 - y2)。
變換之后的是這個樣子的:
4、然后是FM的訓練。
我們再來看一下FM的訓練復雜度,利用SGD(Stochastic Gradient Descent)訓練模型。模型各個參數的梯度如下
未完待續,等我看完論文再寫點
參考資料:https://tech.meituan.com/deep-understanding-of-ffm-principles-and-practices.html