常見的id類特征有用戶特征user_id,物品特征item_id等,通常來說這類特征都是人為按順序編碼的特征,並不能反映用戶或者物品的自然屬性特征。但是在很多推薦相關的文章,都有提到使用這類特征,而且似乎還非常重要,並且除了推薦系統,在計算廣告、反欺詐風控模型里都有成功的案例。這是為什么呢?
一、ID類特征為什么會有用?
加入id類特征,比如用戶的id,相當於特征里多了一個獨有的用戶id,那么這里的其它特征也就是代表的是這個用戶的獨有特征。如果這個人對100個電影評價過,那么就會有該用戶的100條樣本,根據這100條樣本模型就能大概學出該用戶的匹配模式,在預測的時候如果發現還是該用戶,模型就知道他喜歡什么了。
1)可以極大提高模型的個性化能力和實際效果,甚至可以對抗熱度穿透現象。
2)可以使得在學習過程中,每個人的信號更合理地影響整體模型,使得模型泛化能力更好
3)可以使得模型能夠對每個id有更細粒度的排序能力,使得模型的個性化效果更好
4)某些人就是喜歡做某些事情,並且沒有什么可解釋性,通過id可以綁定這些特殊情況。
二、怎么用?
通常是把id類特征作為類別特征,然后one-hot展開,接着再與其它特征進行交叉使用,只有交叉使用才能發揮id類特征的重要作用。下圖是電影數據movielens中id的one-hot展開:

在FM中將用戶id和物品id采用one-hot展開作為特征列,還能分別生成用戶的embedding向量和物品的embedding向量。
關於FM實現movielens的簡單樣例請參考github: https://github.com/gczr/FM
參考連接:https://www.zhihu.com/question/34819617
