1 概述
重排序模型中壹粟,特征主要使用離散one-hot編碼的特征畜晰。這是由任務(wù)本身特點(diǎn)與歷史發(fā)展以及模型特點(diǎn)決定的西土。
首先就任務(wù)本身來說陆错,主要涉及到的特征分為用戶特征-物品特征-行為特征。這些特征往往都是離散的如用戶性別剪侮,用戶愛好拭宁,物品分類等
就歷史發(fā)展來說,是從人工規(guī)則--LR--GBDT+LR--FM--... 發(fā)展而來,這里都傾向于離散特征
而就整個(gè)發(fā)展過程中最關(guān)鍵以及工業(yè)應(yīng)用中最常用的模型LR來講杰标,離散特征更有優(yōu)勢
而one-hot編碼的離散特征兵怯,更容易引入非線性以及容易后續(xù)的特征組合,所以獨(dú)熱(one-hot)編碼的離散特征在推薦系統(tǒng)重排序以及CTR預(yù)測中都十分普遍在旱。
1.1 特征與特征域(feature field)
例如我們有數(shù)據(jù):用戶性別,年齡推掸,物品品牌桶蝎,物品價(jià)格等特征,則可以做如下轉(zhuǎn)化
性別:[男谅畅,女]:[1,0] 表示男
年齡:[0-15歲登渣,15-25歲,25-35歲毡泻,35-50歲胜茧,大于50歲]:[0,0,1,0,0] 表示用戶年齡在25-35之間
物品品牌:[李寧,特步仇味,Nike呻顽,Adidas,匡威] : [0,0,0,1,0]表示Adidas
物品價(jià)格:[0-500元丹墨,500-1000元廊遍,1000-2000元,大2000元]:[0,1,0,0]則表示物品價(jià)格500-1000元
域 | 性別 | 年齡 | 品牌 | 價(jià)格 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
特征 | 男 | 女 | 15 | 25 | 35 | 50 | >50 | ln | tb | nike | adi | kw | 500 | 1000 | 2000 | >2000 |
樣本 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
則表示一個(gè)樣本
y=1可以表示一個(gè)年齡25-35歲的男性購買或點(diǎn)擊了一個(gè)adi品牌價(jià)格500-1000之間的商品或其廣告
所以男女分別變成了特征通過01表示是否是該特征贩挣,而性別作為男女的抽象則變成了特征域喉前。
這里其實(shí)對于域,并沒有嚴(yán)格的規(guī)定王财,從常識來講傾向于把域如此來分卵迂,但同樣,也可以根據(jù)具體樣本特征做分組绒净。
其主旨是:相同類型的特征組成一個(gè)域
2 FM(Factorization Machine)
2.1 模型推導(dǎo)
一般線性模型
注意此處表示樣本的第i個(gè)特征见咒,而不是第i個(gè)樣本。n表示每個(gè)樣本共n維特征挂疆。
LR
LR是線性模型的一個(gè)轉(zhuǎn)換论颅。
但是從線性模型公式我們可以看出,線性模型只是使用了單個(gè)特征囱嫩,沒有考慮不同特征之間交叉的因素恃疯。例如性別和品牌的交叉,組成新特征“男-Nike”墨闲,“女-Nike”今妄,“男-李寧”,“女-李寧”等,這些同樣也是能夠提供信息的盾鳞。
所以犬性,可以設(shè)計(jì)一個(gè)新模型
這相比于一般線性模型,就多了二元特征交叉的信息腾仅。當(dāng)然乒裆,也可以繼續(xù)添加三元交叉,四元交叉等等
但是推励,這里又要考慮計(jì)算量的問題鹤耍。首先要注意,對于CTR任務(wù)验辞,n是很大的稿黄,因?yàn)楠?dú)熱編碼之后,域的展開就非常大跌造。而當(dāng)我們考慮二元交叉特征時(shí)杆怕,組合特征是數(shù)量級的
這會造成參數(shù)數(shù)量呈指數(shù)增長,而樣本量m基本固定壳贪。這就導(dǎo)致添加三元等更高的特征交叉后陵珍,特征維度很容易超過樣本量m
當(dāng)特征維度遠(yuǎn)大于樣本量m時(shí),每個(gè)參數(shù)就難以得到足夠的訓(xùn)練违施,造成欠擬合
所以暫時(shí)只考慮二元特征交叉
而僅僅是二元特征交叉撑教,其參數(shù)是
級別的。而又由于
本身就稀疏醉拓,所以
更加稀疏伟姐,在總體樣本上,很容易出現(xiàn)某個(gè)組合
總為0的情況亿卤,這樣對應(yīng)的
就得不到訓(xùn)練愤兵。
為了應(yīng)對這個(gè)問題,就需要把參數(shù)數(shù)量降下來排吴。
通過線性代數(shù)知識我們知道可以使用矩陣分解技術(shù)把矩陣W分解
W是維秆乳,V是
維,當(dāng)令
時(shí)钻哩,就可以把計(jì)算量從
降到
所以根據(jù)這樣的思想屹堰,我們可以對每個(gè)特征構(gòu)建一個(gè)向量
,則
則式(2.3)可以轉(zhuǎn)換成
進(jìn)一步轉(zhuǎn)化得
式(2.4)(2.5)就是FM模型,我們稱為隱向量或者
的隱向量
2.2 優(yōu)化算法
我們對式(5)的最后一部分做進(jìn)一步轉(zhuǎn)換(詳情見最后注釋)
對于此模型街氢,設(shè)有損失函數(shù)
可以是MAE扯键,也可以是交叉熵?fù)p失函數(shù)
其根據(jù)鏈?zhǔn)椒▌t梯度
即表示為損失函數(shù)對模型的導(dǎo)乘以模型對參數(shù)的導(dǎo)。
模型對參數(shù)的求導(dǎo):
面對這樣的情況珊肃,我們可以使用如下幾種優(yōu)化算法求解參數(shù)
- 隨機(jī)梯度下降法(SGD)
- 交替最小二乘法(ALS)
- 馬爾科夫鏈蒙特卡羅法(MCMC)
隨機(jī)梯度下降法(SGD)
很容易理解荣刑,根據(jù)上述式子可以得出損失函數(shù)的梯度馅笙,得知梯度后就很方便的可以應(yīng)用SGD
交替最小二乘法(ALS)
又稱坐標(biāo)下降法
即每次只優(yōu)化一個(gè)參數(shù)。令導(dǎo)數(shù)=0厉亏,求解當(dāng)前這個(gè)參數(shù)的最優(yōu)值董习。
馬爾科夫鏈蒙特卡羅法(MCMC)
不會不想查 :)
以上三種方法具體可移步參考鏈接
3 FFM(Field Factorization Machine)
3.1 模型推導(dǎo)
FM的核心是特征交叉,這里面最重要的就是隱向量爱只。FM中皿淋,每個(gè)特征都有且只有一個(gè)隱向量
在特征交叉時(shí),對應(yīng)的隱向量點(diǎn)乘得到這個(gè)交叉特征的權(quán)重
然而恬试,每個(gè)特征所代表的意義是不一樣的窝趣,例如在計(jì)算交叉特征:“男性-20到30歲”,“男性-Nike”時(shí)忘渔,用同一個(gè)男性隱向量v點(diǎn)乘20-30歲和nike的隱向量結(jié)果的區(qū)別度低高帖。FFM認(rèn)為缰儿,每個(gè)特征的隱向量應(yīng)該有多個(gè)畦粮,當(dāng)該特征與不同類型(域field)的特征做交叉時(shí),應(yīng)該使用對應(yīng)的隱向量乖阵,這樣可以做到更精細(xì)地刻畫交叉特征的權(quán)重宣赔。所以每個(gè)特征應(yīng)該有和field數(shù)量相同的隱向量個(gè)數(shù)。
假設(shè)樣本共有l(wèi)個(gè)域
特征分別屬于域
有l(wèi)個(gè)隱向量
分別對應(yīng)l個(gè)域瞪浸,v是一個(gè)k維向量
有l(wèi)個(gè)隱向量
分別對應(yīng)l個(gè)域儒将,v是一個(gè)k維向量
則當(dāng)做交叉時(shí),
應(yīng)該選取
所在域?qū)?yīng)的隱向量
應(yīng)該選取
所在域?qū)?yīng)的隱向量
即
這樣更精準(zhǔn)了对蒲,但是參數(shù)量多了l倍钩蚊。所以實(shí)際應(yīng)用中,F(xiàn)FM設(shè)置的隱向量長度k會比FM的k小很多以盡可能降低計(jì)算量蹈矮。
3.2 優(yōu)化算法
同F(xiàn)M
4 總結(jié)
FM模型相比傳統(tǒng)LR模型砰逻,多了二元交叉特征組合。提高了模型表征能力泛鸟。
從根本上來說蝠咆,F(xiàn)M之所以可以這么容易的拓展與組合,是因?yàn)槿蝿?wù)使用的是獨(dú)熱編碼的離散化特征
FM全稱Factorization Machine北滥。其中Factorization是因式分解的意思刚操。通過上面的介紹,我想很容易理解這個(gè)因式分解的意思再芋。當(dāng)出現(xiàn)特征交叉如菊霜,必然會有這個(gè)交叉特征的參數(shù)
,而FM把這個(gè)參數(shù)分解成了兩個(gè)向量的點(diǎn)乘
济赎。而這兩個(gè)向量可以看成是特征
的一種編碼占卧。
對隱向量的進(jìn)一步探討
對于onehot編碼來說遗菠,
特征對應(yīng)著向量
其中第i位=1,其他=0华蜒;
特征對應(yīng)著向量
其中第j位=1辙纬,其他=0;
所以的隱向量=
等價(jià)于
被編碼成
:
而表示兩特征交叉叭喜,其權(quán)重
則被FM表示成了兩隱向量的內(nèi)積
則
注意式子
雖然看似有的復(fù)雜度贺拣,但實(shí)際上
絕大多數(shù)時(shí)候都=0,這表示對于每一個(gè)樣本捂蕴,式(4.1)計(jì)算量遠(yuǎn)達(dá)不到
譬涡。對于一個(gè)特定的樣本,式(4.1)退化成
表示該樣本的稀疏特征中1的數(shù)量啥辨。
即
請理解這段涡匀,這段在理解DeepFM中有用。參加過一個(gè)會議溉知,會上有人說對于CTR預(yù)測或推薦系統(tǒng)重排序來說陨瘩,最根本的是做特征組合。
因?yàn)楠?dú)熱編碼的特征级乍,每一維表征的信息太少舌劳,需要通過組合來提高每一維的表征能力。
同時(shí)玫荣,特征組合引入了非線性甚淡,可以提高擬合能力。其實(shí)GBDT+LR模型捅厂,也是一種特征組合贯卦。
FM實(shí)際上做了一個(gè)Embedding 工作,把稀疏的獨(dú)熱特征轉(zhuǎn)換成了稠密特征焙贷,這對于深度學(xué)習(xí)是友好的撵割,所以后續(xù)有很多FM和神經(jīng)網(wǎng)絡(luò)結(jié)合的工作。
未完待續(xù)盈厘。睁枕。。
5 注釋
[1].此處應(yīng)用平方和公式
即
參考
https://www.cnblogs.com/pinard/p/6370127.html
https://tracholar.github.io/machine-learning/2017/03/10/factorization-machine.html
https://www.cnblogs.com/wkang/p/9788012.html