1. FM算法
FM(Factor Machine,因子分解機)算法是一種基於矩陣分解的機器學習算法,為了解決大規模稀疏數據中的特征組合問題。FM算法是推薦領域被驗證效果較好的推薦算法之一,在電商、廣告、直播等推薦領域有廣泛應用。
2. FM算法優勢
特征組合:通過對兩兩特征組合,引入交叉項特征。
解決維數災難:通過引入隱向量,實現對特征的參數估計。
3. FM表達式
對於度為2的因子分解機FM的模型為:
其中,參數
。
表示的是兩個大小為
的向量
和向量
的點積:
其中,表示的是系數矩陣
的第
維向量,且
稱為超參數。在因子分解機FM模型中,前面兩部分是傳統的線性模型,最后一部分將兩個互異特征分量之間的交叉關系考慮進來。
因子分解機也可以推廣到高階的形式,即將更多互異特征分量之間的相互關系考慮進來。
4. 交叉項
算法核心為交叉項計算,可以明顯降低模型時間復雜度,現在模型的復雜度為。
5. 求解問題
FM算法主要可以處理三類問題:回歸問題、二分類問題、排序。
5.1 回歸問題
在回歸問題中,直接使用作為最終的預測結果。在回歸問題中使用最小均方誤差作為優化標准,即
其中,表示樣本的個數。
5.2 二分類問題
在二分類問題中使用Logitloss作為優化標准,即
其中,表示的是階躍函數Sigmoid,其數學表達式為:
6. FM&SVM
SVM的二元特征交叉參數是獨立的,而FM的二元特征交叉參數是兩個維的向量,交叉參數並不獨立,兩者相互影響。
FM可以在原始形式下進行優化學習,而基於核的非線性SVM通常需要在對偶形式下優化學習。
FM的模型預測與訓練樣本獨立,而SVM則與訓練樣本有關(支持向量)。
7. 交叉項核心代碼
1 v = normalvariate(0, 0.2) * ones((n, k)) #初始化隱向量 2 inter_1 = dataMatrix[x] * v 3 inter_2 = multiply(dataMatrix[x], dataMatrix[x]) * multiply(v, v) #multiply對應元素相乘 4 interaction = sum(multiply(inter_1, inter_1) - inter_2) / 2. #完成交叉項 5 p = w_0 + dataMatrix[x] * w + interaction #計算預測的輸出
Time : 2019-10-14 09:39:44