【CTR预估】CTR模型如何加入稠密连续型和序列型特征?
“?CTR預估任務中除了廣泛使用的稀疏離散型特征外,還會用到稠密連續型以及一些序列類型的特征,本文為大家簡要梳理幾種特征的處理方式~”
稠密連續類型特征的處理
在點擊率預估問題中,可以嘗試的幾種方法
歸一化后直接輸入dnn部分,不參與fm部分交叉
不歸一化經過bn后輸入dnn,不參與fm部分交叉
離散化后作為id feature, embedding后與其他sparse feature的embedding 一起參與fm的交叉
為每一個field下的dense value??維護一個embedding vector??,取??作為其最終的embedding表示,與其他sparse feature的embedding一起參與fm的交叉,如下圖右側的Feature field M
3和4的區別在于3中根據dense value的取值會分配到不同的embedding vector,而4中的不同的dense value只有一個embedding vector
整理自淺夢在【數值類型的特征怎么加入深度模型如nfm,deepfm?】的回答https://www.zhihu.com/question/348103064/answer/878224028
帶權重序列類型特征的處理
這個問題抽象出來就是給定一個由若干個(item_id,weight)組成的列表,如何將這個信息用在模型里面。通常來說這種列表的含義可以是用戶歷史偏好的item_id以及偏好權重,或者是歷史收藏加購過的商品或者對應店鋪的次數等等。對于問題中的數據
?
一般情況有以下兩種做法來使用這個信息:
不考慮上下文因素,直接將這個列表輸入。
回歸到最簡單的情況,給定一個無權序列,我們一般可以通過sum/mean pooling 的方式將一個變長序列壓縮到一個定長的向量,輸入給我們的模型。
那么對于帶權序列,其實可以看作是一個weighted sum/mean pooling的過程,其實有點類似引入一個attention機制,只不過attention score是預先計算好的。
這種方法完整保留了用戶所有的偏好信息,更多的是作為一種用戶側表征。
對于上述數據,我們得到的表示向量為(不考慮score的歸一化)?
考慮上下文因素,根據當前預估item進行一個查表操作。
比如我們當前打分item屬于標簽1,那么直接查表得到('標簽1', 0.8),這個時候我們可以選擇直接使用權重0.8作為輸入,或者選擇用0.8*emb(標簽1)作為輸入。
這種方法表達的是用戶對于當前item的偏好。
整理自淺夢在【CTR預估:(標簽-權重)列表類特征怎么輸入到模型?】的回答
https://www.zhihu.com/question/352399723/answer/869939360
普通序列類型特征的處理
這里就有比較多的方式了,最常用的mean/sum pooling,target attention,self attention以及一些時序建模的方法~ 關注公眾號,未來會一一為大家介紹
參考資料
AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks
https://arxiv.org/abs/1810.11921
以上就是常用的CTR模型中對稠密連續型和序列特征的處理方法,歡迎關注公眾號淺夢的學習筆記,回復“加群”一起參與討論交流!
歷史文章
快速掌握TensorFlow中張量運算的廣播機制
【Graph Embedding】DeepWalk算法原理,實現和應用?
喜歡的話點個在看吧????
? ? ? ? ? ?
總結
以上是生活随笔為你收集整理的【CTR预估】CTR模型如何加入稠密连续型和序列型特征?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经典算法解读:一文看懂支持向量机以及推导
- 下一篇: 员外带你读论文:LINE: Large-