天天看點

FM(factorization machine)

1. 模型提出背景

FM解決的是預測性問題。也就是說給定輸入值,給出輸出值。但是針對預測性問題的解決,目前有較多的模型可以用,針對factorization machine這篇文章,作者主要是抓住FM和支援向量機的優劣比較,支援向量機最終是解決數值優化問題,如果自變量是稠密的,那麼使用支援向量機是有較大優勢的。但是如果自變量有較多的類别變量(訓示變量),進而導緻資料比較稀疏,也就是說一個樣本點的輸入多數都是零,這種情況在推薦系統中有較多,這時候支援向量機的劣勢就展現出來了。那麼就出現了如何解決輸入比較稀疏時的預測性問題。

2.例子描述

首先我們借用factorization machine中的例子,因為本人也是從事推薦系統相關工作,也比較喜歡這個例子。

FM(factorization machine)

上述描述性資料,其中S表示事務型資料,我們把轉換成符号型資料,每條記錄表示一個事務

FM(factorization machine)

首先上圖中藍框中的資料表示使用者資訊,是訓示型資料,表示一條記錄中的使用者,藍框中的第一清單示是否是使用者A,第二清單示是否是使用者B等等。橘紅色框表示這個事務中使用者看的是那部電影,橘紅框中的每條記錄隻有一個是1,其他的都為零。黃色框中表示使用者都對哪些電影評過分,比如A對TI,NH,SW三部電影評過分,那麼前三列為0.3,0.3,0.3 ,這裡是将資料标準化了,使得每條記錄值相加為1,綠色框表示的是時間,确定一個起始時間,數值表示距離起始時間的時間,最後一個框表示使用者在評過事務中的這不電影前,還評過其他的哪些電影,預測值為Y,最後一列,表示使用者對這部電影的評分。

我們的輸入就類似這種情況,如果使用者量非常多,電影量也非常多,那麼這個輸入是相當稀疏的,使用支援向量機之類的模型就顯得力不從心,是以作者引出了因子機。

3.模型描述

因子機有度的概念,其實就是表示是多少個自變量互相影響,我們先從2度開始描述 ,假設需要預測的變量為Y,我們需要通過一個預測值 Y^ 來對Y進行預測,然後給定一個損失函數,最小化Y和 Y^ 之間的差距。

Y^(x)=w0+∑i=1nwixi+∑i=1n∑j=i+1n<vi,vj>xixj(1)

其中

w0∈R,w∈Rn,V∈Rn∗k

其中k是正整數,表示用k維的因子去表示一個變量,這個概念也是因子機名字的來源。

∑i=1n∑j=i+1n<vi,vj>xixj

表示兩個變量之間的互動作用,這裡使用的是向量 vi 和 vj 的内積,而不是單純使用一個參數 wij ,其

優勢1,就是可以 vi 向量在衡量 xi 和其他變量的互相作用強度時

都可以用到,如果使用 wij ,我們需要估計 n(n−1)/2 個參數,但是使用内積時我們隻需要估計 kn 個參數,如果 k<n 的話,這個需要估計的參數也會減少很多。

優勢2,如果使用 wij 時,訓練集中沒有出現過變量 xi,xj 同時不為零的情況,那麼 wij 就會為零,但是測試集中出現了 xi,xj 同時不為零的情況,這樣就無法衡量這兩個變量之間的互相作用強度,但是使用内積便可以避免這種情況,隻要 xi 有不為零的記錄, xj 有不為零的記錄,這樣 <vi,vj> <script type="math/tex" id="MathJax-Element-8494"> </script>就不為零。

其中的第二個優勢在推薦系統當中是相當有用的,比如說需要預測A對一部電影MN的評分,但是訓練集中沒有A對這不電影的評分,但是有A的對應變量對應的因子向量,有MN電影對應變量對應因子向量,這樣就可以描述A和電影MN的互相作用,這對于預測評分是很重要的。

模型的求解

FM(factorization machine)

通過上述轉換,我們将公式1轉變成

Y^(x)=w0+∑i=1nwixi+1/2∑f=1k((∑i=1nvi,fxi)2−∑i=1nv2i,fx2i)

涉及的就隻有 nk 個變量 ,

這樣我們套用一些損失函數,比如回歸問題套用均方誤差等等 ,二分類問題使用logit損失等.

FFM(Field-aware Factorization Machines)

YUChin Juan 在2016年對FM模型進行改進,提出了Field-aware Factorization Machines,接下來我将詳細的介紹這種算法,針對推薦算法中的變量,其實是可以分成若幹了類别的。比如使用者相關的特征,商品相關的特征,場景相關的特征,這樣就可以将特征分成若幹個field,在FM模型中,一個特征,舉個例子,使用者的年齡特征 x ,被一個隐因子表示,即k維的向量vx,當我們表征x 和其他特征 y 的互動作用時,其系數為<vx,vy>,無論y是哪一個特征,都是用 vx ,但是我們有理由相信,使用者相關的特征 和商品相關的特征的互動作用 與使用者相關的特征和場景相關的特征的互動作用是不一樣的,那麼當y是商品相關的特征時,互動作用的系數為 <vx,item,vy,user> <script type="math/tex" id="MathJax-Element-8503"> </script> .如果y是場景相關的特征,互動作用的系數為 <vx,scene,vy,user> <script type="math/tex" id="MathJax-Element-8504"> </script>

Y^(x)=w0+∑i=1nwixi+∑j1=1n∑j2=j1+1n<vj1,f2,vj2,f1>xj1xj2

FM

繼續閱讀