文章目錄
1.介紹
FM-Factorization Machine是一種結合了因式分解模型和SVM模型的優勢的新的模型。
FM相比於SVM有如下特點:
- 兩者都是需要實值特徵向量輸入的一般預測器;
- FM使用因式分解參數來建模任意兩個變量之間的交互特徵;
- SVM需要對歐變換,而FM不需要對歐變換,不需要支持向量,FM是直接估計模型參數的;
- FM模型函數是在線性時間內計算,因此可以直接進行優化。
FM相比於其他因式分解模型有如下特點:
其他因式分解模型有MF(matrix factorization)、parallel factor analysis、SVD++、PITF、FPMC等
- 其他因式分解模型只能應用於特定的輸入數據,而不能應用於一般的預測任務;
- 其他因式分解模型的函數和優化算法是來源於針對性的任務的;
- FM模型可以僅僅通過指定輸入數據來模仿成其他因式分解模型的額,這使得即使沒有專家經驗的人也可以很容易應用FM模型。
paper提到協同過濾問題中:
- SVM模型基本無法使用,最重要的原因是:SVM在非常稀疏的數據下無法使用複雜的非線性核空間去學習到可靠的參數超平面,作者也提到了這是唯一的原因;
- 但即使使用其他的因式分解模型也兩個問題:
- 無法使用標準的預測數據的輸入;
- 特定的模型通常是在針對特定的任務專門推導出來的。
基於上面的SVM和其他因式分解模型存在的問題,paper提出了銀子分解機算法FM,FM兼具SVM可作爲一般估計器的優點、因式分解模型能對於高稀疏數據學習到可靠的參數的優點。
FM模型在線性時間內就可以計算完成,並且僅僅依賴於線性數據量的參數,因此,FM可以直接優化和存儲模型參數,同時在預測階段,不需要存儲訓練數據(對應的,非線性的SVM一般是以對偶形式有阿虎,而且還要通過支持向量來進行預測結果的計算)。
總的來看,FM的優點如下:
- FM在稀疏數據集下可以進行參數估計,而SVM做不到;
- FM具有線性複雜度,而且不需要依賴支持向量,能夠擴展到大規模數據集;
- FM一種可接受任何實值特徵向量輸入的一般預估器。而其他因式分解模型對輸入數據有限制。
2.FM模型函數及應用
paper在推導FM模型公式之前還專門花了一些篇幅介紹了稀疏數據下的預測問題,沒有太多特別關鍵的東西,但是還是有亮點可以學習一下:
- 作者通過簡單的公式表達定義了稀疏數據:D比表示訓練數據集,n表示特徵向量x的維度,m(x)表示特徵向量x中的非零值元素的個數,mD是所有的
x∈D
中,特徵m(x)中的非零值元素數量的平均值。當滿足mD ≪ n
時,則可以認爲數據集時高度稀疏的; - 高度稀疏數據形成的原因是:訓練數據中涉及到大量
類型變量
的特徵。
paper中在稀疏問題介紹時,也重點以電影推薦的數據集爲例,先感受下就好。
下面就是對FM模型介紹的核心內容了。
2.1 FM模型
2.1.1 FM模型&模型的表達能力
首先看下FM的預測公式:
其中需要學習的參數爲:
公式(1)中的⟨·, ·⟩表示兩個k維向量的點積:
其中V的第i行vi表示第i個特徵的k維向量表示,而k∈Z+
是一個表示因子分解的維數的超參數。
在2階FM模型中,可以表達出所有單特徵以及變量之間二階交互特徵,具體參數如下:
w0
表示全局的偏差;wi
表示第i個特徵的強度;- wˆi,j := ⟨vi , vj ⟩ 表示第i個特徵和第j個特徵之間的交互,在實際參數學習中不是直接學習交互特徵的權重參數wˆi,j的,而是通過學習因式分解參數來學習交互特徵的參數
⚠️FM的因式分解到底體現在哪裏:
上式(4)中即體現了因式分解的過程,即將wi,j
分解爲vi
和vj
的點積。因此FM中是將第i特徵和第j特徵的交互特徵的權重參數wˆi,j的學習,轉換分別學習出第i個特徵的對應向量vi
以及第j個特徵的對應向量vj
。
對於整個參數空間來講,因式分解的過程是直接體現在公式(5)中的。由於對於直接參數W的學習比較困難,包括數據量特別大、數據稀疏等問題,因此通過將其分解爲V與V的轉置兩個矩陣來簡化問題,如果是要(5)式absolutly相等的話,比較困難,但是一般情況下只需要(5)式近似相等即可,即存在一定的誤差,這個誤差的大小會跟V的維度k
的大小有關係,理論上k越大,誤差會越小,但是一般情況下選擇一個較小的k
值就可以了,原始是:
- 較大的k值需要更多的訓練數據來學習出來靠譜的參數,較小的k值需要更少的訓練數據來就可以學習出來靠譜的參數,而一般情況下缺少足夠多的訓練數據,所以需要對k值的大小進行限制;
- 通過限制k的大小,可以提升FM模型的表現力,從而提高模型的泛化能力。
這種因式分解的思想,也是確保在稀疏數據集上能夠學習出來靠譜的高階交互特徵的參數的關鍵因素。
2.1.2 稀疏數據下的參數估計
paper以電影打分數據集合舉例,具體的例子可以閱讀paper,具體的思想就是: 一個交叉特徵的數據,對於預估相關聯的交叉特徵的參數是有幫助的。即通過其他交叉特徵的數據可以得到user, movie各自的特點(向量v),那麼即使數據集中沒有出現user, movie同時存在的情況,也可以直接計算出來user, movie的打分結果。
2.1.3 二階交叉特徵部分的計算
paper提出FM的模型函數可以在線性時間複雜度內計算完成。並在下面推導下了FM模型公式(1)中的特徵二階交互部分的計算公式:
在上面的二階計算的推導公式中,累加和計算的部分只需要計算非零特徵部分的累加和,而且一般情況下稀疏數據集中m(x)非常小,對於平均非零特徵數量爲mD時,那麼因子分解機FM的計算的複雜度爲O(k·mD),
2.2 FM的應用
FM可以在多種不同的預測任務中進行應用,常見的有下面三種應用:
- 迴歸任務:ˆy(x)可以直接用於迴歸任務的預測結果,可以使用最小平方無誤差作爲優化的代價函數;
- 二分類任務:可以使用hing loss、logit loss等作爲優化的代價函數;
- 排序任務:基於預測結果ˆy(x)的大小,可以對向量x所代表的實例進行排序,模型優化過程是在成對的實例的向量(x(a),x(b))∈D上以pairwise分類損失函數爲目標進行的。
2.3 FM參數的更新學習
paper中說到FM模型有一個閉環的模型函數,這個閉環是什麼意思呢?我理解是有前向傳播和後向傳播的過程,前向傳播是指根據模型學習計算預測的結果,後向傳播是指不算調整模型參數使得因式分解的誤差最小,也就是通過誤差函數去調整更新模型參數。這樣的一個特點,就可以使用梯度下降法(常用的梯度下降優化算法可以參考史上最詳細的梯度下降優化算法介紹)去更新模型參數了,例如可以使用SGD優化算法,相應的loss函數可以有平方差損失、對數損失、hinge損失,FM模型的梯度如下所示:
由於 vj,f
是獨立於i特徵的,因此可以在計算^y(x)
前預先計算出來,這樣就可以在O(1)時間複雜度內計算出來預測結果。所以對於所有的(x, y)
的參數更新都可以在O(kn)的時間複雜度內計算完成,而在稀疏數據集下只需要O(km(x))
的時間複雜度。
2.4 總結
FM使用因子分解形式建模所有可能的交互特徵,而不是直接建模參數化的交互特徵wi,j
,主要有下面兩個優點:
- 在高度非線性數據集下可以估計交互特徵參數,並且可以泛化到數據集中未出現過的交互特徵;
- 參數學習以及預測過程都是線性時間複雜度,可以輕易地使用SGD等優化算法以及使用多種不同的損失函數。
從pape中可以看到,FM爲了提高模型的泛化能力,減小過擬合的方法,主要做了下面三個工作:
- 將交叉特徵參數的學習轉換成學習單個特徵對應的k維向量的方式,從而可以泛化到訓練數據中未出現過的交叉特徵組合的情況。
- 限制特徵對應的向量的維度k值的大小;
- L2等正則化的方式防止過擬合。