[深度学习] FM FFM 算法基本原理
???? 在推薦系統(tǒng)和計(jì)算廣告業(yè)務(wù)中,點(diǎn)擊率CTR(click-through rate)和轉(zhuǎn)化率CVR(conversion rate)是衡量流量轉(zhuǎn)化的兩個(gè)關(guān)鍵指標(biāo)。準(zhǔn)確的估計(jì)CTR、CVR對(duì)于提高流量的價(jià)值,增加廣告及電商收入有重要的指導(dǎo)作用。
無論使用什么類型的模型,點(diǎn)擊率這個(gè)命題可以被歸納到二元分類的問題,我們通過單個(gè)個(gè)體的特征,計(jì)算出對(duì)于某個(gè)內(nèi)容,是否點(diǎn)擊了,點(diǎn)擊了就是1,沒點(diǎn)擊就是0。對(duì)于任何二元分類的問題,最后我們都可以歸結(jié)到邏輯回歸上面。
- 早期的人工特征工程 + LR(Logistic Regression):這個(gè)方式需要大量的人工處理,不僅需要對(duì)業(yè)務(wù)和行業(yè)有所了解,對(duì)于算法的經(jīng)驗(yàn)要求也十分的高。
- GBDT(Gradient Boosting Decision Tree) + LR:提升樹短時(shí)這方面的第二個(gè)里程碑,雖然也需要大量的人工處理,但是由于其的可解釋性和提升樹對(duì)于假例的權(quán)重提升,使得計(jì)算準(zhǔn)確度有了很大的提高。
- FM-FFM:FM和FFM模型是最近幾年提出的模型,并且在近年來表現(xiàn)突出,分別在由Criteo和Avazu舉辦的CTR預(yù)測(cè)競(jìng)賽中奪得冠軍,使得到目前為止,還都是以此為主的主要模型占據(jù)主導(dǎo)位置。
- Embedding模型可以理解為FFM的一個(gè)變體。
一、LR模型
LR是一種寬而不深的結(jié)構(gòu),所有的特征直接作用在最后的輸出結(jié)果上。模型優(yōu)點(diǎn)是簡(jiǎn)單、可控性好,但是效果的好壞直接取決于特征工程的程度,需要非常精細(xì)的連續(xù)型、離散型、時(shí)間型等特征處理及特征組合。通常通過正則化等方式控制過擬合。
二、FM模型
因子分解機(jī)(Factorization Machine, FM)是由Steffen Rendle提出的一種基于矩陣分解的機(jī)器學(xué)習(xí)算法,其主要用于解決數(shù)據(jù)稀疏的業(yè)務(wù)場(chǎng)景(如推薦業(yè)務(wù)),特征怎樣組合的問題。
paper指出FM與SVM相比,有如下優(yōu)勢(shì):
FM(Factorization Machines,因子分解機(jī)),在數(shù)據(jù)非常稀疏的情況下,依然能估計(jì)出可靠的參數(shù)進(jìn)行預(yù)測(cè)。與傳統(tǒng)的簡(jiǎn)單線性模型不同的是,因子分解機(jī)考慮了特征間的交叉,對(duì)所有嵌套變量交互進(jìn)行建模(類似于SVM中的核函數(shù)),因此在推薦系統(tǒng)和計(jì)算廣告領(lǐng)域關(guān)注的點(diǎn)擊率CTR(click-through rate)和轉(zhuǎn)化率CVR(conversion rate)兩項(xiàng)指標(biāo)上有著良好的表現(xiàn)。此外,FM的模型還具有可以用線性時(shí)間來計(jì)算,以及能夠與許多先進(jìn)的協(xié)同過濾方法相融合等優(yōu)點(diǎn)。
線性模型建模為如下公式:
對(duì)于二分類問題則需要在上式的基礎(chǔ)上添加一個(gè)對(duì)數(shù)幾率回歸:
線性模型的優(yōu)點(diǎn)是簡(jiǎn)單、方便、易于求解,但缺點(diǎn)在于線性模型中假設(shè)不同特征之間是獨(dú)立的,即特征 不會(huì)相互影響。為了解決簡(jiǎn)單線性模型無法學(xué)得特征間交叉影響的問題,SVM通過引入核函數(shù)來實(shí)現(xiàn)特征的交叉,實(shí)際上和多項(xiàng)式模型是一樣的,這里以只考慮兩個(gè)特征交叉的二階多項(xiàng)式模型為例:
上式也可以稱為Poly2(degree-2 poly-nomial mappings)模型
模型覆蓋了LR的寬模型結(jié)構(gòu),同時(shí)也引入了交叉特征,增加模型的非線性,提升模型容量,能捕捉更多的信息.? 從公式來看,模型前半部分就是普通的LR線性組合,后半部分的交叉項(xiàng)即特征的組合。單從模型表達(dá)能力上來看,FM的表達(dá)能力是強(qiáng)于LR的,至少不會(huì)比LR弱,當(dāng)交叉項(xiàng)參數(shù)全為0時(shí)退化為普通的LR模型。
多項(xiàng)式模型的問題在于二階項(xiàng)的參數(shù)過多,設(shè)特征維數(shù)為 n,那么二階項(xiàng)的參數(shù)數(shù)目為 n(n-1)/2。
任意兩個(gè)參數(shù)都是獨(dú)立的。然而,在數(shù)據(jù)稀疏性普遍存在的實(shí)際應(yīng)用場(chǎng)景中,二次項(xiàng)參數(shù)的訓(xùn)練是很困難的.
對(duì)于廣告點(diǎn)擊率預(yù)估問題,由于存在大量id特征,導(dǎo)致 n 可能為 維,這樣一來,模型參數(shù)的量級(jí)為 ,這比樣本量多得多!這導(dǎo)致只有極少數(shù)的二階組合模式才能在樣本中找到,而絕大多數(shù)模式在樣本中找不到,因而模型無法學(xué)出對(duì)應(yīng)的權(quán)重。
為此,Rendle于2010年提出FM模型,它能很好的求解上式,其特點(diǎn)如下:
- FM模型可以在非常稀疏的情況下進(jìn)行參數(shù)估計(jì)
- FM模型是線性時(shí)間復(fù)雜度的,可以直接使用原問題進(jìn)行求解,而且不用像SVM一樣依賴支持向量。
- FM模型是一個(gè)通用的模型,其訓(xùn)練數(shù)據(jù)的特征取值可以是任意實(shí)數(shù)。而其它最先進(jìn)的分解模型對(duì)輸入數(shù)據(jù)有嚴(yán)格的限制。FMs可以模擬MF、SVD++、PITF或FPMC模型。
FM模型原理
在矩陣分解,一個(gè)rating可以分解為user矩陣和item矩陣,如下圖所示:
分解后得到user和item矩陣的維度分別為nk和km,(k一般由用戶指定),相比原來的rating矩陣,空間占用得到降低,并且分解后的user矩陣暗含著user偏好,Item矩陣暗含著item的屬性,而user矩陣乘上item矩陣就是rating矩陣中用戶對(duì)item的評(píng)分。因此,參考矩陣分解的過程,FM模型也將上式的二次項(xiàng)參數(shù)進(jìn)行分解:
通過上式得變換,因子分解機(jī)的二次項(xiàng)的復(fù)雜度簡(jiǎn)化到O(kn)。
FM例子
上圖是一個(gè)人造的廣告CTR的數(shù)據(jù)例子,代表的意思是在某個(gè)網(wǎng)站(Publisher)上刊登一則廣告(Advertiser),某個(gè)用戶(用戶性別特征Gender)是否會(huì)點(diǎn)擊某條廣告的數(shù)據(jù)。
這個(gè)例子中假設(shè)包含三個(gè)特征域(Field):
網(wǎng)站Publisher(可能的特征值是ESPN、Vogue、NBC)、廣告Advertiser(可能的特征值是Nike、Adidas、Gucci)
性別Gender(可能的特征值是Male、Female)。
由這個(gè)例子可以看出組合特征的重要性:
如果在體育網(wǎng)站ESPN上發(fā)布Nike的廣告,那么100次展現(xiàn),80次會(huì)被點(diǎn)擊,而20次不會(huì)被點(diǎn)擊。意味著組合特征(Publisher=”ESPN” and Advertiser=”Nike”)是個(gè)很強(qiáng)的預(yù)測(cè)用戶是否點(diǎn)擊的二階組合特征。
FM模型在做二階特征組合的時(shí)候,對(duì)于每個(gè)二階組合特征的權(quán)重,是根據(jù)對(duì)應(yīng)兩個(gè)特征的Embedding向量?jī)?nèi)積,來作為這個(gè)組合特征重要性的指示。當(dāng)訓(xùn)練好FM模型后,每個(gè)特征都可以學(xué)會(huì)一個(gè)特征embedding向量,如上圖所示。當(dāng)做預(yù)測(cè)的時(shí)候,比如我們接收到上面例子的數(shù)據(jù),需要預(yù)測(cè)用戶是否會(huì)點(diǎn)擊這條廣告,則對(duì)三個(gè)特征做兩兩組合,每個(gè)組合特征的權(quán)重,可以根據(jù)兩個(gè)對(duì)應(yīng)的特征embedding內(nèi)積求得,對(duì)所有組合特征求和后,套接Sigmoid函數(shù)即可做出二分類預(yù)測(cè)。
三、FFM模型
FFM(Field Factorization Machine)是在FM的基礎(chǔ)上引入了“場(chǎng)(Field)”的概念而形成的新模型。在FM中的特征 與其他特征的交叉時(shí),特征 使用的都是同一個(gè)隱向量 。而FFM將特征按照事先的規(guī)則分為多個(gè)場(chǎng)(Field),特征屬于某個(gè)特定的場(chǎng)F。每個(gè)特征將被映射為多個(gè)隱向量 ,每個(gè)隱向量對(duì)應(yīng)一個(gè)場(chǎng)。當(dāng)兩個(gè)特征 ,組合時(shí),用對(duì)方對(duì)應(yīng)的場(chǎng)對(duì)應(yīng)的隱向量做內(nèi)積。
FFM例子
對(duì)于FM模型來說,每個(gè)特征學(xué)會(huì)唯一的一個(gè)特征embedding向量。注意,和FFM的最大不同逐漸出現(xiàn),為了更容易向FFM模型理解過渡,我們可以這么理解FM模型中的某個(gè)特征的embedding,我們拿ESPN這個(gè)特征作為例子,當(dāng)這個(gè)特征和其它特征域的某個(gè)特征進(jìn)行二階特征組合的時(shí)候,不論哪個(gè)特征域的特征和ESPN這個(gè)特征進(jìn)行組合,ESPN這個(gè)特征都反復(fù)使用同一個(gè)特征embedding去做內(nèi)積。也可以理解為ESPN這個(gè)特征在和不同特征域特征進(jìn)行組合的時(shí)候,共享了同一個(gè)特征向量。
沿著這個(gè)思路思考,我會(huì)問出一個(gè)問題:我們可以改進(jìn)下FM模型嗎?ESPN這個(gè)特征和不同特征域特征進(jìn)行組合的時(shí)候,可以使用不同的特征向量嗎?
既然FM模型的某個(gè)特征,在和任意其它特征域的特征進(jìn)行組合求權(quán)重的時(shí)候,共享了同一個(gè)特征向量。那么,如果我們把這個(gè)事情做地更細(xì)致些,比如ESPN這個(gè)特征,當(dāng)它和Nike(所屬特征域Advertiser)組合的時(shí)候用一個(gè)特征embedding向量,而當(dāng)它和Male(所屬特征域Gendor)組合的時(shí)候,使用另外一個(gè)特征embedding向量,這樣是否在描述特征組合的時(shí)候更細(xì)膩一些?
也就是說,當(dāng)ESPN這個(gè)特征(屬于Publisher網(wǎng)站這個(gè)域)和屬于廣告Advertiser這個(gè)域的特征進(jìn)行組合的時(shí)候,用一個(gè)特征embedding;和屬于性別Gender這個(gè)特征域的特征進(jìn)行組合的時(shí)候,用另外一個(gè)特征embedding。
這意味著,如果有F個(gè)特征域,那么每個(gè)特征由FM模型的一個(gè)k維特征embedding,拓展成了(F-1)個(gè)k維特征embedding。之所以是F-1,而不是F,是因?yàn)樘卣鞑缓妥约航M合,所以不用考慮自己。
上圖展示了這個(gè)過程,因?yàn)檫@個(gè)例子有三個(gè)特征域,所以ESPN(屬于Publisher網(wǎng)站這個(gè)域站)有兩個(gè)特征embedding,
當(dāng)和Nike特征組合的時(shí)候,用的是針對(duì)網(wǎng)站Advertisor這個(gè)特征域的embedding去做內(nèi)積;而當(dāng)和Male這個(gè)特征組合的時(shí)候,則用的是針對(duì)性別Gender這個(gè)特征域的embedding去做內(nèi)積。
同理,Nike和Male這兩個(gè)特征也是根據(jù)和它組合特征所屬特征域的不同,采用不同的特征向量去做內(nèi)積。
而兩兩特征組合這個(gè)事情的做法,FFM和FM則是完全相同的,區(qū)別就是每個(gè)特征對(duì)應(yīng)的特征embedding個(gè)數(shù)不同。
FM每個(gè)特征只有一個(gè)共享的embedding向量,而對(duì)于FFM的一個(gè)特征,則有(F-1)個(gè)特征embedding向量,用于和不同的特征域特征組合時(shí)使用。
從上面的模型演化過程,我們可以推出,假設(shè)模型具有n個(gè)特征,那么FM模型的參數(shù)量是n*k(暫時(shí)忽略掉一階特征的參數(shù)),其中k是embedding特征向量大小。
而FFM模型的參數(shù)量呢?因?yàn)槊總€(gè)特征具有(F-1)個(gè)k維特征向量,所以它的模型參數(shù)量是(F-1)*n*k,也就是說參數(shù)量比FM模型擴(kuò)充了(F-1)倍。
這意味著,如果我們的任務(wù)有100個(gè)特征域,FFM模型的參數(shù)量就是FM模型的大約100倍。
這其實(shí)是很恐怖的,因?yàn)楝F(xiàn)實(shí)任務(wù)中,特征數(shù)量n是個(gè)很大的數(shù)值,特征域幾十上百也很常見。
正因?yàn)镕FM模型參數(shù)量太大,所以在訓(xùn)練FFM模型的時(shí)候,很容易過擬合,需要采取早停等防止過擬合的手段。而根據(jù)經(jīng)驗(yàn),FFM模型的k值可以取得小一些,一般在幾千萬訓(xùn)練數(shù)據(jù)規(guī)模下,取8到10能取得較好的效果,當(dāng)然,k具體取哪個(gè)數(shù)值,這其實(shí)跟具體訓(xùn)練數(shù)據(jù)規(guī)模大小有關(guān)系,理論上,訓(xùn)練數(shù)據(jù)集合越大,越不容易過擬合,這個(gè)k值可以設(shè)置得越大些。
下面的圖來很好的表示了三個(gè)模型的區(qū)別:
參考:
總結(jié)
以上是生活随笔為你收集整理的[深度学习] FM FFM 算法基本原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 澜起科技澄清申明:有不法分子制作“澜起科
- 下一篇: [深度学习] 自然语言处理---Tran