【推荐系统】POLY2、FM、FFM模型的进化之路
文章目錄
- POLY2模型
- FM模型
- FFM模型
POLY2模型
邏輯回歸模型是CTR預(yù)測(cè)領(lǐng)域較為廣泛使用的模型,原因有模型具備可解釋性,良好的數(shù)學(xué)解釋性,可以實(shí)現(xiàn)并行化提高效率,但是它有個(gè)缺點(diǎn)就是不能夠捕捉數(shù)據(jù)的非線性關(guān)系,如果非要這樣,一般情況下需要人工進(jìn)行特征交叉,但是這樣的成本較大,而且需要有經(jīng)驗(yàn)的算法專(zhuān)家才能夠交叉出好的特征,所以如果可以使用算法進(jìn)行交叉,那么整個(gè)系統(tǒng)的工作效率將大大提高。
所以,這時(shí)產(chǎn)生了POLY2模型進(jìn)行特征的 “暴力” 組合,它的原理很簡(jiǎn)單,就是將任意兩個(gè)特征兩兩交叉,這將會(huì)新產(chǎn)生 n(n?1)2\frac{n(n-1)}{2}2n(n?1)? 個(gè)新的組合特征,這是我們的模型預(yù)測(cè)公式將會(huì)變?yōu)?#xff1a;
?POLY2(w,x)=∑j1=1n?1∑j2=j1+1nwj1,j2xj1xj2\phi POLY2(w,x)=\sum_{j_1=1}^{n-1}\sum_{j_2=j_1+1}^nw_{j_1,j_2}x_{j_1}x_{j_2} ?POLY2(w,x)=j1?=1∑n?1?j2?=j1?+1∑n?wj1?,j2??xj1??xj2??
這個(gè)模型之后的工作將是學(xué)習(xí)各個(gè)交叉特征的權(quán)重,這在一定程度上解決了特征組合的問(wèn)題,但POLY2模型本質(zhì)上仍是線性模型,其訓(xùn)練方法與邏輯回歸沒(méi)有什么區(qū)別。
但是這個(gè)模型也會(huì)有兩個(gè)缺點(diǎn):
- 由于CTR領(lǐng)域的數(shù)據(jù)一般為稀疏矩陣,存在很多用戶(hù)和物品沒(méi)有交互的項(xiàng),這將會(huì)導(dǎo)致這個(gè)組合特征的權(quán)重?zé)o法進(jìn)行訓(xùn)練,原因是訓(xùn)練集中無(wú)數(shù)據(jù),導(dǎo)致大部分交叉特征的權(quán)重缺乏有效的數(shù)據(jù)進(jìn)行訓(xùn)練(原因是訓(xùn)練參數(shù)需要對(duì)參數(shù)進(jìn)行求導(dǎo),然后采用梯度下降更新參數(shù),但是那些無(wú)交互的特征,由于矩陣中的值全為0,導(dǎo)致對(duì)這些參數(shù)求導(dǎo)得到的導(dǎo)數(shù)為0,導(dǎo)致參數(shù)無(wú)法訓(xùn)練)
- 權(quán)重的參數(shù)的數(shù)量由 nnn 直接上升到 n2n^2n2 ,極大地增加了訓(xùn)練復(fù)雜度。
FM模型
為了解決矩陣稀疏的問(wèn)題,2010年,Rendle提出了FM模型,它的思想就是對(duì)每個(gè)特征訓(xùn)練一個(gè)隱向量,然后將POLY2中交叉特征的權(quán)重替換為這兩個(gè)特征隱向量的內(nèi)積,公式為:
?FM(w,x)=∑j1=1n∑j2=j1+1n(wj1wj2)xj1xj2\phi FM(w,x)=\sum_{j_1=1}^n\sum_{j_2=j_1+1}^n(w_{j_1}w_{j_2})x_{j_1}x_{j_2} ?FM(w,x)=j1?=1∑n?j2?=j1?+1∑n?(wj1??wj2??)xj1??xj2??
舉個(gè)例子吧,現(xiàn)在有年齡、愛(ài)好、性別三個(gè)特征,如果我們使用POLY2,當(dāng)我們計(jì)算年齡-愛(ài)好這個(gè)新特征的權(quán)重時(shí),模型會(huì)對(duì)其進(jìn)行求導(dǎo)然后計(jì)算這個(gè)組個(gè)特征的權(quán)重,然而FM是會(huì)分別對(duì)這三個(gè)特征列訓(xùn)練一個(gè)隱向量,比如我們隱向量是5維,那么當(dāng)我們計(jì)算年齡-愛(ài)好這個(gè)組合特征的權(quán)重時(shí),我們此時(shí)只需要將年齡和愛(ài)好兩個(gè)特征對(duì)應(yīng)的隱向量做內(nèi)積操作,然后將得到的結(jié)果作為這個(gè)組合特征的權(quán)重。
這樣做的好處就是能夠有效的訓(xùn)練模型參數(shù),即使對(duì)于那些為觀測(cè)到的數(shù)據(jù)也可以進(jìn)行參數(shù)訓(xùn)練,比如對(duì)于【年齡:20,愛(ài)好:歌曲】這個(gè)特征可能在訓(xùn)練數(shù)據(jù)中沒(méi)有,那么如果采用POLY2的方式肯定是無(wú)法進(jìn)行訓(xùn)練的,因?yàn)槿鄙傧嚓P(guān)數(shù)據(jù),但是使用FM他就可以解決這個(gè)問(wèn)題,盡管沒(méi)有這個(gè)數(shù)據(jù),但是我們可以使用【年齡:20,性別:男】這個(gè)數(shù)據(jù)進(jìn)行訓(xùn)練年齡這列的隱向量,然后使用訓(xùn)練好的隱向量在和愛(ài)好的隱向量做內(nèi)積就可以得到年齡和愛(ài)好的權(quán)重。
POLY2各個(gè)交叉特征權(quán)重之間是獨(dú)立的,而FM訓(xùn)練的隱向量相互之間是依賴(lài)的,當(dāng)我們?nèi)狈δ挲g-愛(ài)好這個(gè)數(shù)據(jù)時(shí),可以使用年齡-性別這個(gè)數(shù)據(jù)進(jìn)行訓(xùn)練年齡的隱向量,其余同理,這就導(dǎo)致各個(gè)特征的隱向量都可以訓(xùn)練,而且是相互依賴(lài)的。
FM優(yōu)點(diǎn):
- FM引入隱向量的做法,與矩陣分解用隱向量代表用戶(hù)和物品的做法異曲同工
- 通過(guò)引入隱向量,把POLY2模型 n2n^2n2 級(jí)別的權(quán)重參數(shù)數(shù)量減少到了 nknknk ,極大地降低了訓(xùn)練開(kāi)銷(xiāo)
FFM模型
2015年,基于FM提出的FFM在多項(xiàng)CTR預(yù)估大賽中奪魁,FFM模型的全稱(chēng)為 Field-aware Factorization Machines。
它的特殊之處在于他引入了特征域的概念,使得模型的表達(dá)能力更強(qiáng),公式如下:
?FFM(w,x)=∑j1=1n∑j2=j1+1n(wj1,f2wj2,f1)xj1xj2\phi FFM(w,x)=\sum_{j_1=1}^n\sum_{j_2=j_1+1}^n(w_{j_1,f_2}w_{j_2,f_1})x_{j_1}x_{j_2} ?FFM(w,x)=j1?=1∑n?j2?=j1?+1∑n?(wj1?,f2??wj2?,f1??)xj1??xj2??
這個(gè)公式和FM的幾乎是一樣的,只不過(guò)是它的權(quán)重有所不同,FM的權(quán)重是各個(gè)特征的隱向量做內(nèi)積得到的,FFM的權(quán)重也是隱向量做內(nèi)積得到的,但是他和FM不同,FM只為每個(gè)特征列訓(xùn)練一個(gè)隱向量,而FFM是為每個(gè)特征列訓(xùn)練 fff 個(gè)隱向量,其中 fff 為特征域的個(gè)數(shù)。
其中特征與可以理解為它將所有的特征進(jìn)行分類(lèi),將一些特征分到一類(lèi)中,這個(gè)類(lèi)就叫做特征域,引入它的目的是提高模型的表達(dá)能力,比如不同的特征之間可能不同,這就需要不同種類(lèi)的特征相互獨(dú)立的進(jìn)行訓(xùn)練隱向量權(quán)重,比如現(xiàn)在我們的特征有用戶(hù)、物品、其它大類(lèi),如果是用戶(hù)類(lèi)的特征與物品類(lèi)中的特征做交叉,那么我們就需要使用用戶(hù)域?qū)ξ锲酚虻碾[向量,如果是用戶(hù)對(duì)其它,那么就使用用戶(hù)域?qū)ζ渌碾[向量,每個(gè)特征都會(huì)訓(xùn)練3個(gè)隱向量,分別用于與自己同域的特征做交叉,另外兩個(gè)分別用戶(hù)和另外兩個(gè)域的特征做交叉,如果是FM,不需要考慮域,只是將任何兩個(gè)交叉特征的隱向量做內(nèi)積,FFM會(huì)為每個(gè)特征多訓(xùn)練幾個(gè)隱向量,分別用戶(hù)與不同種類(lèi)的向量做交叉,這大大提高了模型的表達(dá)能力,從參數(shù)上講這是肯定的,因?yàn)槟P蛥?shù)變多了,那么模型能夠表達(dá)的數(shù)據(jù)容量也就更大了。
FFM優(yōu)點(diǎn):
- 通過(guò)引入特征域的概念,為每個(gè)特征訓(xùn)練不同的隱向量,分別用于與不同種類(lèi)的特征做交叉,提高了模型的表達(dá)能力
- 在有 nnn 個(gè)特征, fff 個(gè)特征域,隱向量維度為 kkk ,模型權(quán)重的參數(shù)變?yōu)?n?f?kn*f*kn?f?k
總結(jié)
以上是生活随笔為你收集整理的【推荐系统】POLY2、FM、FFM模型的进化之路的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《冰与火之歌》
- 下一篇: 【毕业设计】基于单片机的智能衣柜系统设计