1脑漫、FFM理論
在CTR預(yù)估中,經(jīng)常會遇到one-hot類型的變量袋坑,one-hot類型變量會導(dǎo)致嚴(yán)重的數(shù)據(jù)特征稀疏的情況仗处,為了解決這一問題好爬,在上一講中趴拧,我們介紹了FM算法赌结。這一講我們介紹一種在FM基礎(chǔ)上發(fā)展出來的算法-FFM(Field-aware Factorization Machine)密末。
FFM模型中引入了類別的概念,即field旷档。還是拿上一講中的數(shù)據(jù)來講模叙,先看下圖:
在上面的廣告點擊案例中鞋屈,“Day=26/11/15”范咨、“Day=1/7/14”、“Day=19/2/15”這三個特征都是代表日期的厂庇,可以放到同一個field中渠啊。同理,Country也可以放到一個field中权旷。簡單來說替蛉,同一個categorical特征經(jīng)過One-Hot編碼生成的數(shù)值特征都可以放到同一個field,包括用戶國籍拄氯,廣告類型躲查,日期等等。
為了使用FFM方法译柏,所有的特征必須轉(zhuǎn)換成“field_id:feat_id:value”格式镣煮,field_id代表特征所屬field的編號,feat_id是特征編號鄙麦,value是特征的值典唇。數(shù)值型的特征比較容易處理,只需分配單獨的field編號胯府,如用戶評論得分介衔、商品的歷史CTR/CVR等。categorical特征需要經(jīng)過One-Hot編碼成數(shù)值型骂因,編碼產(chǎn)生的所有特征同屬于一個field炎咖,而特征的值只能是0或1,如用戶的性別侣签、年齡段塘装,商品的品類id等急迂。除此之外影所,還有第三類特征,如用戶瀏覽/購買品類僚碎,有多個品類id且用一個數(shù)值衡量用戶瀏覽或購買每個品類商品的數(shù)量猴娩。這類特征按照categorical特征處理,不同的只是特征的值不是0或1,而是代表用戶瀏覽或購買數(shù)量的數(shù)值卷中。按前述方法得到field_id之后矛双,再對轉(zhuǎn)換后特征順序編號,得到feat_id蟆豫,特征的值也可以按照之前的方法獲得议忽。
在FFM中,每一維特征 十减,針對其它特征的每一種field
栈幸,都會學(xué)習(xí)一個隱向量
。因此帮辟,隱向量不僅與特征相關(guān)速址,也與field相關(guān)。也就是說由驹,“Day=26/11/15”這個特征與“Country”特征和“Ad_type"特征進(jìn)行關(guān)聯(lián)的時候使用不同的隱向量芍锚,這與“Country”和“Ad_type”的內(nèi)在差異相符,也是FFM中“field-aware”的由來蔓榄。
假設(shè)樣本的個特征屬于
個field并炮,那么FFM的二次項有
個隱向量。而在FM模型中甥郑,每一維特征的隱向量只有一個渣触。FM可以看作FFM的特例,是把所有特征都?xì)w屬到一個field時的FFM模型壹若。根據(jù)FFM的field敏感特性嗅钻,可以導(dǎo)出其模型方程。
? ??????????????????????????????????????
可以看到店展,如果隱向量的長度為养篓,那么FFM的二次參數(shù)有
個,遠(yuǎn)多于FM模型的
個赂蕴。此外柳弄,由于隱向量與field相關(guān),F(xiàn)FM二次項并不能夠化簡概说,其預(yù)測復(fù)雜度是
碧注。
下面以一個例子簡單說明FFM的特征組合方式。輸入記錄如下:
這條記錄可以編碼成5個特征萍丐,其中“Genre=Comedy”和“Genre=Drama”屬于同一個field,“Price”是數(shù)值型放典,不用One-Hot編碼轉(zhuǎn)換逝变。為了方便說明FFM的樣本格式基茵,我們將所有的特征和對應(yīng)的field映射成整數(shù)編號。
那么拱层,F(xiàn)FM的組合特征有10項,如下圖所示宴咧。
其中,紅色是field編號掺栅,藍(lán)色是特征編號箱吕。
2、FFM實現(xiàn)細(xì)節(jié)
這里講得只是一種FFM的實現(xiàn)方式柿冲,并不是唯一的茬高。
2.1 損失函數(shù)
FFM將問題定義為分類問題,使用的是logistic loss假抄,同時加入了正則項
? ??????????????????????????????????????
什么怎栽,這是logisitc loss?第一眼看到我是懵逼的宿饱,邏輯回歸的損失函數(shù)我很熟悉啊熏瞄,不是長這樣的啊谬以?其實是我目光太短淺了强饮。邏輯回歸其實是有兩種表述方式的損失函數(shù)的,取決于你將類別定義為0和1還是1和-1为黎。大家可以參考下下面的文章:https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/6340129.html邮丰。當(dāng)我們將類別設(shè)定為1和-1的時候,邏輯回歸的損失函數(shù)就是上面的樣子铭乾。
2.2 梯度下降
梯度下降方法有很多種剪廉,根據(jù)為提高效率分別衍生了批量梯度下降,隨機(jī)梯度下降及小批量梯度下降炕檩,根據(jù)需求選擇即可
參考文獻(xiàn)
論文:Field-aware Factorization Machines for CTR Prediction
推薦系統(tǒng)遇上深度學(xué)習(xí)(二)--FFM模型理論和實踐
C++版的FFM模型:libFFM