本文由Tracholar授權發布,未經允許,請勿轉載。
在組內做過一次因子機的技術分享,這裏將內容以及自己的思考記錄如下。
- 綜述
- 什麽是因子機
- FM與矩陣分解
- FM與決策樹
- FM與神經網絡
綜述
2010年,日本大阪大學(Osaka University)的 Steffen Rendle 在矩陣分解(MF)、SVD++[2]、PITF[3]、FPMC[4] 等基礎之上,歸納出針對高維稀疏數據的因子機(Factorization Machine, FM)模型[11]。因子機模型可以將上述模型全部納入一個統一的框架進行分析。並且,Steffen Rendle 實現了一個單機多線程版本的 libFM 。在隨後的 KDD Cup 2012,track2 廣告點擊率預估(pCTR) 中,國立台灣大學[4]和 Opera Solutions[5] 兩隻隊伍都采用了 FM,並獲得大賽的冠亞軍而使得 FM 名聲大噪。隨後,台灣大學的 Yuchin Juan 等人在總結自己在兩次比賽中的經驗以及 Opera Solutions 隊伍中使用的 FM 模型的總結,提出了一般化的 FFM 模型[6],並實現了單機多線程版的 libFFM ,並做了深入的試驗研究。事實上,Opera Solutions 在比賽中用的 FM 就是FFM。
將 FM 向更高階推廣的工作也有一些,例如 Steffen Rendle 在論文[11]中提出一般化的 d-way FM,他將二階組合的FM中的二階項替換成d階組合項,可以利用 FM 相同的處理技巧將計算時間複雜度降低為線性時間複雜度。這個模型的缺點在於隻考慮d階組合,而實際上,低階組合模式更有意義,因此到目前為止也沒有看到誰在實際中使用。針對這種不足,2016年日本NTT通信科學實驗室的 Mathieu Blondel 等人在NIPS2016上提出了一般意義上的高階 FM 模型,它保留了所有高階項,並利用 ANOVA kernel 和動態規劃算法,將計算時間複雜度降低到線性時間複雜度[12]!
什麽是因子機
因子機的定義
機器學習中的建模問題可以歸納為從數據中學習一個函數 f: Rn → T,它將實值的特征向量 x ∈ Rn 映射到一個特定的集合中。例如,對於回歸問題,集合 T 就是實數集 R,對於二分類問題,這個集合可以是{+1, -1}. 對於監督學習,通常有一標注的訓練樣本集合 D = {(x(1),y(1)),…, (x(n),y(n))}。
線性函數是最簡單的建模函數,它假定這個函數可以用參數 w 來刻畫 ,
對於回歸問題,y = φ(x) ;而對於二分類問題,需要做對數幾率函數變換( 邏輯回歸 )
線性模型的缺點是無法學到模型之間的交互,而這在推薦和CTR預估中是比較關鍵的。例如,CTR預估中常將用戶id和廣告id onehot 編碼後作為特征向量的一部分。 為了學習特征間的交叉,SVM通過多項式核函數來實現特征的交叉,實際上和多項式模型是一樣的,這裏以二階多項式模型為例
多項式模型的問題在於二階項的參數過多,設特征維數為 n,那麽二階項的參數數目為n(n+1)/2。 對於廣告點擊率預估問題,由於存在大量id特征,導致 n 可能為 107維,這樣一來,模型參數的量級為 1014,這比樣本量 4 x 107多得多[6]!這導致隻有極少數的二階組合模式才能在樣本中找到, 而絕大多數模式在樣本中找不到,因而模型無法學出對應的權重。例如,對於某個wij,樣本中找不到xi=1,xj=1 (這裏假定所有的特征都是離散的特征,隻取0和1兩個值)這種樣本,那麽wij的梯度恒為0,從而導致參數學習失敗!
很容易想到,可以對二階項參數施加某種限製,減少模型參數的自由度。FM 施加的限製是要求二階項係數矩陣是低秩的,能夠分解為低秩矩陣的乘積
這樣一來,就將參數個數減少到 kn,可以設置較少的k值(一般設置在100以內,k << n),極大地減少模型參數,增強模型泛化能力,這跟矩陣分解的方法是一樣的。向量 vi 可以解釋為第i個特征對應的隱因子或隱向量。 以user和item的推薦問題為例,如果該特征是user,可以解釋為用戶向量,如果是item,可以解釋為物品向量。
計算複雜度
因為引入和二階項,如果直接計算,時間複雜度將是O(n2),
n是特征非零特征數目, 可以通過簡單的數學技巧將時間複雜度減少到線性時間複雜度。
基於一個基本的觀察,齊二次交叉項之和可以表達為平方和之差
上式左邊計算複雜度為O(n2),而右邊是O(n)。根據上式,可以將原表達式中二次項化簡為
上式計算時間複雜度是O(n)。
基於梯度的優化都需要計算目標函數對參數的梯度,對FM而言,目標函數對參數的梯度可以利用鏈式求導法則分解為目標函數對φ的梯度和的乘積。前者依賴於具體任務,後者可以簡單的求得
優化方案
論文[2]中給出了三種優化方案,它們分別是
- 隨機梯度下降,這種方案收斂慢而且非常敏感,可以利用現代的一些trick,例如采用 AdaGrad 算法,采用自適應學習率,效果相對比較好,論文[6]對FFM就采用這種方案。
- 交替方向乘子(ALS),這種方案隻適用於回歸問題,它每次優化一個參數,把其他參數固定,好處是每次都是一個最小二乘問題,有解析解。
- 基於蒙特卡羅馬爾科夫鏈的優化方案,論文中效果最好的方案,細節可以參考原文。
FFM
在實際預測任務中,特征往往包含多種id,如果不同id組合時采用不同的隱向量,那麽這就是 FFM(Field Factorization Machine) 模型[6]。它將特征按照事先的規則分為多個場(Field),特征 xi屬於某個特定的場f。每個特征將被映射為多個隱向量vi1,…,vif,每個隱向量對應一個場。當兩個特征xi,xj組合時,用對方對應的場對應的隱向量做內積!
fi,fj分別是特征xi,xj對應的場編號。FFM 由於引入了場,使得每兩組特征交叉的隱向量都是獨立的,可以取得更好的組合效果,但是使得計算複雜度無法通過優化變成線性時間複雜度,每個樣本預測的時間複雜度為 O(n2 k),不過FFM的k值通常遠小於FM的k值。論文[6]對FFM在Criteo和Avazu兩個任務(Kaggle上的兩個CTR預估比賽)上進行了試驗,結果表明 FFM 的成績優於 FM。事實上,FM 可以看做隻有一個場的 FFM。
FM與矩陣分解
基於矩陣分解的協同過濾是推薦係統中常用的一種推薦方案[7],從曆史數據中收集user對item的評分,可以是顯式的打分,也可以是用戶的隱式反饋計算的得分。由於user和item數量非常多,有過打分的user和item對通常是十分稀少的,基於矩陣分解的協同過濾是來預測那些沒有過行為的user對item的打分,實際上是一個評分預測問題。矩陣分解的方法假設user對item的打分由下式決定
其中qi是第i個item對相應的隱向量,pu是第u個user對應的隱向量,bi代表item的偏置,用於解釋商品本身的熱門和冷門,bu代表user的偏置,用於解釋用戶本身的打分偏好(例如有些人喜歡打低分),μ是常數。即將評分矩陣分解為user矩陣和item矩陣的乘積加上線性項和常數項,而這兩個矩陣是低秩的!這些參數通過對最小化經驗誤差得到。
從上麵的敘述來看,FM的二階矩陣也用了矩陣分解的技巧,那麽基於矩陣分解的協同過濾和FM是什麽關係呢?以user對item評分預測問題為例,基於矩陣分解的協同過濾可以看做FM的一個特殊例子,對於每一個樣本,FM可以看做特征隻有userid和itemid的onehot編碼後的向量連接而成的向量。從FM和MFCF公式來看,MFCF的用戶向量pu和item向量qi可以看做FM中的隱向量,用戶和item的bias向量bu, bi就是FM中的一次項係數,常數μ也和FM中的常數w0相對應,可以看到, MFCF就是FM的一個特例 !另外,FM可以采用更多的特征,學習更多的組合模式,這是單個矩陣分解的模型所做不到的!因此,FM比矩陣分解的方法更具普遍性!事實上,現在能用矩陣分解的方法做的方案都直接上FM了!
FM與決策樹
FM和決策樹都可以做特征組合,Facebook就用GBDT學習特征的自動組合[8],決策樹可以非常方便地對特征做高階組合。如圖所示,一棵決策的葉子節點實際上就對應一條特征規則,例如最左邊的葉子節點就代表一條特征組合規則x1=1, x2=1。通過增加樹的深度,可以很方便的學習到更高級的非線性組合模式。通過增加樹的棵樹,可以學習到很多這樣的模式,論文[8]采用GBDT來建立決策樹,使得新增的決策樹能夠擬合損失函數的殘差。
但是, 決策樹和二項式模型有一個共同的問題,那就是無法學習到數據中不存在的模式 。例如,對於模式x1=1, x2=1,如果這種模式在數據中不存在,或者數量特別少,那麽決策樹在對特征x1分裂後,就不會再對x2分裂了。當數據不是高度稀疏的,特征間的組合模式基本上都能夠找到足夠的樣本,那麽決策樹能夠有效地學習到比較複雜的特征組合;但是在高度稀疏的數據中,二階組合的數量就足以讓絕大多數模式找不到樣本,這使得決策樹無法學到這些簡單的二階模式,更不用說更高階的組合了。
FM與神經網絡
神經網絡天然地難以直接處理高維稀疏的離散特征,因為這將導致神經元的連接參數太多。但是低維嵌入(embedding)技巧可以解決這個問題,詞的分布式表達就是一個很好的例子。事實上 FM就可以看做對高維稀疏的離散特征做 embedding 。上麵舉的例子其實也可以看做將每一個user和每一個item嵌入到一個低維連續的 embedding 空間中,然後在這個 embedding 空間中比較用戶和item的相似性來學習到用戶對item的偏好。這跟 word2vec[9]詞向量學習類似,word2vec 將詞 embedding 到一個低維連續空間,詞的相似性通過兩個詞向量的相似性來度量。神經網絡對稀疏離散特征做 embedding 後,可以做更複雜的非線性變換,具有比FM跟大的潛力學習到更深層的非線性關係!基於這個思想,2016年,Google提出 wide and deep 模型用作 Google Play的app推薦[10],它利用神經網絡做離散特征和連續特征之間的交叉,神經網絡的輸出和人工組合較低維度的離散特征一起預測,並且采用端到端的學習,聯合優化DNN和LR。如圖所示,Catergorial 特征 embedding 到低維連續空間,並和連續特征拚接,構成了1200維的向量,作為神經網絡的輸入,神經網絡采用三隱層結構,激活函數都是采用 ReLU,最後一層神經元的輸出 a(lf)和離散特征 x 及人工叉積變換後的特征 φ(x),一起預測
參考文獻
- Y. Koren, “Factorization meets the neighborhood: a multifaceted collabo- rative filtering model,” in KDD ’08: Proceeding of the 14th ACM SIGKDD international conference on Knowledge discovery and data mining. New York, NY, USA: ACM, 2008, pp. 426–434.
- S. Rendle and L. Schmidt-Thieme, “Pairwise interaction tensor factorization for personalized tag recommendation,” in WSDM ’10: Proceedings of the third ACM international conference on Web search and data mining. New York, NY, USA: ACM, 2010, pp. 81–90.
- S. Rendle, C. Freudenthaler, and L. Schmidt-Thieme, “Factorizing personalized markov chains for next-basket recommendation,” in WWW ’10: Proceedings of the 19th international conference on World wide web. New York, NY, USA: ACM, 2010, pp. 811–820.
- A two-stage ensemble of diverse models for advertisement ranking in KDD Cup 2012[C]//KDDCup. 2012.
- Jahrer M, Toscher A, Lee J Y, et al. Ensemble of collaborative filtering and feature engineered models for click through rate prediction[C]//KDDCup Workshop. 2012.
- Juan Y, Zhuang Y, Chin W, et al. Field-aware Factorization Machines for CTR Prediction[C]. conference on recommender systems, 2016: 43-50.
- Koren Y, Bell R M, Volinsky C, et al. Matrix Factorization Techniques for Recommender Systems[J]. IEEE Computer, 2009, 42(8): 30-37.
- He X, Pan J, Jin O, et al. Practical Lessons from Predicting Clicks on Ads at Facebook[C]. knowledge discovery and data mining, 2014: 1-9.
- Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and their compositionality[C]. neural information processing systems, 2013: 3111-3119.
- Cheng H T, Koc L, Harmsen J, et al. Wide & Deep Learning for Recommender Systems[C]// The Workshop on Deep Learning for Recommender Systems. ACM, 2016:7-10.
- Rendle S. Factorization Machines[C]. international conference on data mining, 2010.
- Blondel M, Fujino A, Ueda N, et al. Higher-Order Factorization Machines[C]. neural information processing systems, 2016: 3351-3359.