Factorization Machines
/ 2020-01 Howard Wonanut 推薦算法系列文章(1)
😀人工翻譯幷包含部分個人理解,歡迎批評指正,但謝絕轉載。
本文介紹因子分解機(FM),這是一種新的模型,它結合了支持向量機(SVM)和因式分解模型的優點。FM是一種通用預測器(與SVM一樣),能夠處理任何實值數。另外,其使用分解參數模擬變量之間的所有交互(原文:In contrast to SVMs, FMs model all interactions between variables using factorized parameters.)。因此,即使在SVM也無力迴天的稀疏性(如推薦系統)問題中,FM模型也能勝任。本文證明了FM的模型方程可以在線性時間內完成計算。
另一方面,有許多不同的因子分解模型,如矩陣分解;並行因子分析或專用模型,如SVD ++,PITF或FPMC。這些模型的缺點是它們不具有普遍適用性,僅適用於特殊輸入數據。此外,他們的模型方程和優化算法也是針對特定任務的。FM僅通過指定輸入數據(即特徵向量)就可以模擬這些模型。這使得即使對於沒有分解模型專業知識的用戶,FM也很容易使用。
關鍵詞:因子分解機;稀疏數據;張量因子化;支持向量機
1 FM模型基本介紹
SVM分類器是機器學習和數據挖掘領域的翹楚,但是其在協同過濾這樣的推薦領域就無法繼續稱霸了,因爲在這個領域的數據往往具有稀疏這個特點,SVM在稀疏數據中往往不能得到一個優秀的分類超平面。因此,FM模型就橫空出世了,FM模型中文名叫作因子分解機(Factorization Machines),我看到這個名字是真的不知其意。
FM模型的優點主要有三點:
- FM能夠在特徵矩陣非常稀疏的情況下使用,完爆SVM
- FM具有線性時間複雜度,可以在原始中進行優化,不用像SVM那樣依賴支持向量。
- FM是一種可以與任何實值特徵向量一起使用的通用預測器。
- 支持特徵組合(我加的)
2 使用稀疏數據做預測
在傳統的監督學習問題中,假設給定訓練集,其中爲標籤。如果其爲離散值,則常用該數據做分類任務,如果其爲數值,則常用該數據做迴歸任務。同時,在排名問題(如推薦系統)中可以用來給特徵向量打分,並且根據分值對其進行排序。
本文中使用的數據是高度稀疏的,給定特徵向量中的絕大多數值都是0。做如下定義:
- :特徵向量中特徵不爲0的個數;
- :數據集中的均值,其中任意。
極度稀疏的數據()在現實世界中很常見,如購物應用的推薦系統。如果有很多類別特徵,每個類別特徵有很多類,那麼特徵矩陣就會特別稀疏(如購物應用中的商品往往有上千種)。
🐒 舉個栗子:
假如現在有一個電影評分系統,該系統記錄用戶在時間給電影打分爲。現給定用戶列表和電影列表爲:
部分評分操作數據爲:S = {(A, TI, 2010-1, 5), (A, NH, 2010-2, 3), (A, SW, 2010-4, 1), (B, SW, 2009-5, 4), (B, ST, 2009-8, 5),(C, TI, 2009-9, 1), (C, SW, 2009-12, 5)}。
針對上面數據的一個簡單的預測問題就是:預測某個一個用戶在某個時間給某個電影的評分。數據將會被轉化爲下圖所示的矩陣。
每行表示目標與其對應的特徵向量 ;藍色區域表示了用戶變量;紅色區域表示了電影變量,黃色區域表示了該用戶曾經看過的電影,按照其看過的電影數歸一化,使得其和爲1;綠色區域表示投票月份(從2009年1月開始算);棕色區域表示了用戶上一個評分的電影;最右邊的區域是評分。
本文將以該數據集爲例解釋爲什麼FM比SVM好,到現在你應該明確:相比於SVM,FM是一個更加通用的預測模型,因此FM不僅能用於推薦系統,也能夠在其他領域使用。
3 FM模型
3.1 模型推導
在這個部分,我們詳細的介紹一下FM模型。普通的線性模型都是將各個特徵獨立考慮的,並沒有考慮到特徵之間的相互關係。但是實際上,特徵之間可能具有一定的關聯,比如男生更喜歡購買電子設備,女生更喜歡購買衣服化妝品。如果能找出這類的特徵,是非常有意義的。
3.1.1 模型等式
爲了簡單起見,這裏只考慮二階交叉的情況(特徵兩兩組合),對應的FM模型爲:
其中,n代表樣本的特徵數量,是第i個特徵的值,是模型參數,表示第個變量和第個變量的交互作用(interaction),只有當與都不爲0時,交叉纔有意義。
由於線代中有如下定義:
如果一個實對稱矩陣正定,則與合同,那麼存在可逆矩陣,使得
如果矩陣是正定矩陣,那麼只要足夠大,就存在使得,其中是 的二維矩陣。因此可以將上面的式子轉化爲:
其中表示維數爲的向量的點乘,爲超參數,決定因子分解的維度:
表示第個變量的個因子組成的向量。
不過在數據稀疏的情況下,應該選擇較小的,因爲可能沒有足夠的數據來估計矩陣。限制的大小能夠使得FM模型更加通用,能夠提高其泛化能力。
3.1.2 在數據稀疏的情況下進行參數估計
在數據稀疏的情況下,交互作用項對應的特徵和的不爲0的樣本將非常少,當訓練樣本不足時,很容易導致參數 訓練不充分而不準確,最終影響模型的效果。不過,FM模型能夠克服這個困難,因爲該模型通過分解打破了交互作用參數的獨立性。這意味着一個交互作用項也會有助於估計與其相關的交互作用項的參數。
上面的話是真的難懂,基於上面的例子說明一下:
假如現在想要估計Alice(A)和Star Trek(ST) 的交互作用參數,由於訓練集中沒有實例同時滿足和非零,因此會導致這兩個特徵之間沒有交互()。但是如果使用了特徵矩陣分解(factorized)獲得了矩陣,我們可以通過求解求解。
直接計算上面的公式求解的時間複雜度爲,因爲所有的特徵交叉都需要計算。但是可以通過公式變換,將時間複雜度減少到線性複雜度,如下公式推導:
3.2 使用FM進行預測
FM算法可以應用在多種預測任務中,包括:
- 迴歸:可以直接作爲預測結果;
- 二分類:可以直接作爲分類結果,可使用hingle loss或者logit loss進行優化;
- 排名:向量可通過分數進行排序,並且通過pairwise的分類損失來優化成對樣本。
在以上的任務中,一般都會使用L2正則防止過擬合。
3.3 參數學習
從上面的描述可以知道FM可以在線性的時間內進行預測。因此模型的參數()可以通過梯度下降的方法(例如隨機梯度下降)來學習。FM模型的梯度是:
由於與是獨立的,因此可以提前計算其結果(如在計算的時候直順便算了)。並且每次梯度更新可以在常數時間複雜度內完成,因此FM參數訓練的複雜度也是。綜上可知,FM可以在線性時間訓練和預測,是一種非常高效的模型。
3.4 擴展到d-階
前面都是針對2階FM模型進行討論,這個模型可以直接拓展到d階:
其中第個交互作用項的參數可以通過PARAFAC模型的參數:
如果直接計算上面公式的時間複雜度爲,如果進行優化,其時間複雜度也會是線性的。
4 FM vs. SVM
文章在這裏還做了挺多對比的,我就不詳細寫了,說下大概思路:
4.1 SVM模型公式
SVM分類器進行預測的公式如下:
其中是映射函數,將在空間中的特徵映射到更高維的空間中,映射函數與核函數的關係爲:
以線性核(Linear kernel)和多項式核(Polynominal kernel)爲例,線性核函數爲,其對應的映射函數爲。因此線性核的SVM預測函數爲:
因此線性SVM等價於1-階FM模型。
而多項式核爲:,當d爲2時,其映射函數爲:
多項式核SVM的模型等式爲:
其中
通過對比2-階多項式核SVM與FM,你會發現,SVMs核FMs的主要區別在於參數化:SVM的所有參數之間都是相互獨立的,如與。相反的,FMs的特徵矩陣經過分解,因此和並不是相互獨立的,他們之間會存在聯繫,因爲存在重疊向量。
4.2 SVM和FM模型對比
爲什麼線性SVM在和多項式SVM在稀疏條件下效果會比較差呢?
- 線性svm只有一維特徵,不能挖掘深層次的組合特徵在實際預測中並沒有很好的表現;
- 而多項式svn正如前面提到的,交叉的多個特徵需要在訓練集上共現才能被學習到,否則該對應的參數就爲0,這樣對於測試集上的case而言這樣的特徵就失去了意義,因此在稀疏條件下,SVM表現並不能讓人滿意。
而FM不一樣,通過向量化的交叉,可以學習到不同特徵之間的交互,進行提取到更深層次的抽象意義。
此外,FM和SVM的區別還體現在:
- FM可以在原始形式下進行優化學習,而基於kernel的非線性SVM通常需要在對偶形式下進行;
- FM的模型預測是與訓練樣本獨立,而SVM則與部分訓練樣本有關,即支持向量。
4.3 SVM和FM模型區別總結
- SVM的密集參數化需要直接觀察相互作用,而這通常是在稀疏環境中無法獲得的。 然而即使在稀疏情況下,FM的參數也可以很好地進行參數估計。
- FM可以直接在原始的模型公式上進行學習,而SVM需要模型推導
- FM模型不依賴於訓練集,而SVM依賴於訓練集(支持向量和訓練集中的數據有關)