R&S | 深度討論FM和FFM:不僅是推薦

我看到很多人都已經(jīng)寫(xiě)過(guò)有關(guān)FM(Factorization Machine)和FFM(Field-aware Factorization Machine)模型的原理和實(shí)現(xiàn)方法,有關(guān)論文、實(shí)現(xiàn)方法和一些我看的比較好的博客,我都放在這里,有需要的小伙伴可以直接傳送過(guò)去:

FM論文:https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf
FFM論文:https://www.csie.ntu.edu.tw/~cjlin/papers/ffm.pdf
CTR預(yù)估算法之FM, FFM, DeepFM及實(shí)踐:https://blog.csdn.net/john_xyz/article/details/78933253
深入FFM原理與實(shí)踐:https://tech.meituan.com/2016/03/03/deep-understanding-of-ffm-principles-and-practices.html

東西我都放在這里了,很明顯,下面的內(nèi)容,肯定就不會(huì)是上面文章提到過(guò)的,而是FM和FFM的一些細(xì)節(jié)思路,我抽取出來(lái)詳細(xì)和大家討論。

網(wǎng)上搜FM、FFM全都是,一般都會(huì)頂著推薦系統(tǒng)或者相關(guān)的帽子,CTR之類的,但是在我最近的學(xué)習(xí)看來(lái),絕對(duì)不是一個(gè)只能用在推薦系統(tǒng)問(wèn)題上的模型,很多實(shí)際的問(wèn)題都能用到,而在思想上,很多文章也沒(méi)有談到FM和FFM的一些實(shí)現(xiàn)細(xì)節(jié),所以我在這里展開(kāi)討論一下。

懶人目錄:

  • FM中的特征工程問(wèn)題
  • FM中的組合特征問(wèn)題
  • FFM的Field-aware
  • FM和FFM的應(yīng)用場(chǎng)景

FM中特征工程的問(wèn)題

從我的經(jīng)驗(yàn)和理解看來(lái),F(xiàn)M中其實(shí)是非常建議大家對(duì)特征進(jìn)行離散化和one-hot的,這點(diǎn)我再下一章里面談,這里先談這兩個(gè)特征工程方法的細(xì)節(jié)。

首先,什么是one-hot特征,首先,對(duì)于初始數(shù)據(jù),必須是離散型才能轉(zhuǎn)為one-hot,舉個(gè)例子,性別有男、女,則轉(zhuǎn)為one-hot,則變成“性別=男”和“性別=女”兩個(gè)特征,如果該名用戶為男性,則“性別=男”=1,“性別=女”=0,,這種特征就能實(shí)現(xiàn)用乘的方式組合。

離散化特征,是針對(duì)連續(xù)型特征而言的,舉個(gè)簡(jiǎn)單的例子,商品售價(jià),而嚴(yán)格的當(dāng)然有一些離散的由于單個(gè)值的樣本比較少或者意義不大所以也需要進(jìn)行離散化,例如考試成績(jī),對(duì)小的間隔只有0.5,這個(gè)85和85.5其實(shí)差別不會(huì)很大,這種建議最好放在一起,進(jìn)行離散化。離散化最直接的方式就是“分桶”,把整個(gè)特征空間平均分為若干份,例如成績(jī),90到100,80到90等,然后用戶的考試成績(jī)?cè)儆檬欠裨谠搮^(qū)間內(nèi)來(lái)進(jìn)行one-hot化即可,當(dāng)然還有更加復(fù)雜的,例如地理位置,精度和緯度加起來(lái)進(jìn)行哈?;?,得到GeoHash,也是一種離散化的方法,然后通過(guò)該用戶在不在該位置,就能one-hot化。

而且,我對(duì)于離散化特征,其實(shí)是非常喜歡做one-hot的,尤其是類別比較多的,例如用戶所在省,國(guó)內(nèi)34個(gè),如果只是由0-33來(lái)表示,在衡量距離的時(shí)候,就會(huì)有問(wèn)題,例如0是北京,10是河北,20是廣東,一旦計(jì)算,北京和河北并不一定就比北京和廣東近(不是地理上,而是綜合特點(diǎn)上)而one-hot化后,大家的距離都是2(漢明距離),比較公平。

進(jìn)行了離散化、one-hot化后,就能夠進(jìn)行FM了。

補(bǔ)充一下,這里只是談到了有關(guān)FM中特別提到的兩種特征工程方法,但是特征工程遠(yuǎn)遠(yuǎn)不止如此,有關(guān)的拓展大家可自行拓展閱讀,這還是一個(gè)在實(shí)際運(yùn)用中比模型本身還要重要的點(diǎn),望大家能重視。

FM中的組合特征問(wèn)題

可能有人會(huì)問(wèn),為什么FM中要進(jìn)行離散化和one-hot化,主要是因?yàn)樽罱K放入模型的特征要進(jìn)行相乘計(jì)算,相乘其實(shí)是一個(gè)非常不穩(wěn)定的計(jì)算,主要由于兩者相乘的會(huì)有過(guò)大的變化(即使是歸一化后),在FFM的論文中也曾經(jīng)提到過(guò)這么一句話:

It is more difficult to apply FFMs on numerical data sets.

可見(jiàn),還是非常建議大家去做離散化的,離散化后,其實(shí)one-hot只是隨手的事情了。

有關(guān)組合特征的問(wèn)題,似乎由于被看成一種trick,所以沒(méi)有被很多有關(guān)領(lǐng)域的書(shū)作為重點(diǎn)來(lái)討論,有些文章寫(xiě)的挺好的,例如下面這篇,會(huì)比較全面,大家看完了會(huì)有比較深入的了解。

https://segmentfault.com/a/1190000014799038

書(shū)上討論的不多(連《百面機(jī)器學(xué)習(xí)》這樣的書(shū)中討論的都很少),但是在現(xiàn)實(shí)問(wèn)題上,通過(guò)特征的組合其實(shí)能夠令模型效果有新的提升,在工業(yè)界,甚至可以體現(xiàn)十分個(gè)性化的信息,男性不一定喜歡球鞋,但是如果是某個(gè)圈子里的,就很可能非常喜歡了,可見(jiàn),組合信息可能會(huì)產(chǎn)生十分特別的效果。

回頭看看FM是怎么解決的,這里就要請(qǐng)出FM最核心的公式(公式1),論文截圖一出,原汁原味。

image.png

第一項(xiàng)和第二項(xiàng)大家都很熟悉,分別是常數(shù)項(xiàng)和一次項(xiàng),而第三項(xiàng),就是一個(gè)組合項(xiàng),任取兩個(gè)特征相乘,在給予特定的組合權(quán)重(其實(shí)是兩個(gè)特征向量的點(diǎn)乘),這里的特征,應(yīng)該是離散化、one-hot化的特征。

首先看兩個(gè)特征,xi和xj,one-hot化后,兩者相乘的優(yōu)勢(shì)就會(huì)變得非常明顯了,其實(shí)就表達(dá)了一個(gè)“且”的概念,當(dāng)且僅當(dāng)兩個(gè)特征同時(shí)不為0,這項(xiàng)才有值(這里絕對(duì)注意哈,在實(shí)際的特征中,為0不是指沒(méi)有意義,但是在one-hot化后,就是了!注意區(qū)分和立即),于是就能真正體現(xiàn)FM的真實(shí)含義。

再來(lái)看v,vi和vj其實(shí)都是向量,在FM論文的公式(3)中已經(jīng)定義了,f是轉(zhuǎn)化特征的維數(shù),可以表示更加豐富的含義(大家可以想象一下矩陣分解),這種高緯度化能夠令一個(gè)特征的描述更為豐富,從單一值轉(zhuǎn)化為更為豐富的含義,而此時(shí),具體這個(gè)特征是什么就顯得不是很重要,他用一個(gè)抽象的向量表示,且高緯度的表達(dá)也更為精準(zhǔn),這也是NLP領(lǐng)域里面提到的embedding的一大重要意義。

所以,可以看到FM用了一種非常巧妙的方式去進(jìn)行了特征的組合,且這種方式的效率很高,同時(shí)復(fù)雜度也很低(FM論文中詳細(xì)證明了是線性復(fù)雜度,與特征個(gè)數(shù)和向量特征維數(shù)f有關(guān))。

同時(shí)強(qiáng)調(diào),特征組合的方式非常豐富,《百面機(jī)器學(xué)習(xí)》中還提到了基于決策樹(shù)方法的組合,這些都建議去看看,有的時(shí)候,組合特征能夠一定程度的提升性能,比換模型、在模型加attention之類的要高效很多。

FFM的Field-aware

FFM的核心創(chuàng)新點(diǎn)就在于引入了Field-aware的概念,在于把幾個(gè)相同性質(zhì)的特征歸結(jié)為一個(gè)field,例如“Day=1/3/19”、“Day=1/1/18”、“Day=21/3/15”(日/月/年)都是日期特征,上面提到的廣東省北京市河北省都是地點(diǎn)省級(jí)別的特征,應(yīng)該放在一個(gè)field里面,每一個(gè)特征(onehot)x_i,對(duì)對(duì)應(yīng)的field_f學(xué)習(xí)一個(gè)隱向量v_i_f,此時(shí)隱向量就是連接特征和field的橋梁,即“sex=male”這個(gè)特征,就和Date這個(gè)field進(jìn)行了連接,于是模型就更新為這樣:

image.png

引入了field的概念,核心目標(biāo)在于,很多時(shí)候沒(méi)有必要衡量任意兩個(gè)小特征的關(guān)系,而只需要衡量小特征和每個(gè)field之間的關(guān)系,這樣能一定程度降低稀疏性,提升隱向量的實(shí)際含義和泛化能力,隱向量的個(gè)數(shù)確實(shí)大大縮小,但是field的個(gè)數(shù)卻也有關(guān),因此不好說(shuō)誰(shuí)的復(fù)雜度高了,和實(shí)際問(wèn)題有關(guān),可以說(shuō)的是,其實(shí)在FFM作者的實(shí)驗(yàn)中,F(xiàn)FM的提升相比FM并不多。

image.png

FM和FFM的應(yīng)用場(chǎng)景

文章開(kāi)頭就講過(guò),不要把FM和FFM局限在推薦系統(tǒng)尤其是CTR的問(wèn)題,很多時(shí)候能做好多別的問(wèn)題,都能夠借鑒,其他領(lǐng)域的小伙伴也可以把這整個(gè)思路當(dāng)做是一個(gè)trick,在合適的問(wèn)題中使用。在FM論文中,作者就已經(jīng)抽象化的提到了FM的應(yīng)用場(chǎng)景,分別是回歸問(wèn)題、二分類問(wèn)題和pairwise排序問(wèn)題,而且,隨著技術(shù)的演進(jìn),甚至被放入了深度學(xué)習(xí)中的某一層中,例如DeepFM中,甚至有結(jié)合wide&deep進(jìn)行組合的新模式,可謂是十分豐富,他不再是一個(gè)獨(dú)立的模型,例如也有人用支持向量機(jī)來(lái)替代softmax或者sigmoid作為最后一層的輸出層計(jì)算,都是有的,希望大家能夠從一些比較局限的思維里面走出來(lái)。

小結(jié)

開(kāi)始想寫(xiě)理論,我自己代碼也有,但是感覺(jué)寫(xiě)進(jìn)來(lái)并無(wú)必要,寫(xiě)寫(xiě)刪刪,最終到了這個(gè)狀態(tài),一方面網(wǎng)上的大量文章其實(shí)都有,另一方面是感覺(jué)對(duì)模型深層次的理解遠(yuǎn)比理論本身和代碼有用,這兩個(gè)是帶領(lǐng)你把事情完成的基礎(chǔ),但是不是你進(jìn)行理解、改進(jìn)和深化的動(dòng)力,例如DeepFM的提出就是依賴于對(duì)模型的理解。

FM的作者在論文中提到FM的三大優(yōu)點(diǎn)分別是可處理高度稀疏的數(shù)據(jù)、線性復(fù)雜度、實(shí)數(shù)域可用(雖然我前面還是建議做離散化和one-hot),而在我看來(lái),其實(shí)FM和FFM之所以厲害,有下面幾個(gè)原因,供大家參考:

  • 在線性模型的基礎(chǔ)上,提出了通過(guò)組合特征來(lái)提升性能的方案
  • 通過(guò)使用離散化特征來(lái)解決線性模型的缺陷,實(shí)現(xiàn)靈活的非線性化
  • 適用于特征多樣化(如用戶特征)、且具有一定稀疏性的問(wèn)題
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容