推薦系統中的ID特徵為什麼有用?

2022-05-18 18:47:16 字數 838 閱讀 5109

常見的id類特徵有使用者特徵user_id,物品特徵item_id等,通常來說這類特徵都是人為按順序編碼的特徵,並不能反映使用者或者物品的自然屬性特徵。但是在很多推薦相關的文章,都有提到使用這類特徵,而且似乎還非常重要,並且除了推薦系統,在計算廣告、反欺詐風控模型裡都有成功的案例。這是為什麼呢?

一、id類特徵為什麼會有用?

加入id類特徵,比如使用者的id,相當於特徵裡多了乙個獨有的使用者id,那麼這裡的其它特徵也就是代表的是這個使用者的獨有特徵。如果這個人對100個電影評價過,那麼就會有該使用者的100條樣本,根據這100條樣本模型就能大概學出該使用者的匹配模式,在**的時候如果發現還是該使用者,模型就知道他喜歡什麼了。

1)可以極大提高模型的個性化能力和實際效果,甚至可以對抗熱度穿透現象。

2)可以使得在學習過程中,每個人的訊號更合理地影響整體模型,使得模型泛化能力更好

3)可以使得模型能夠對每個id有更細粒度的排序能力,使得模型的個性化效果更好

二、怎麼用?

通常是把id類特徵作為類別特徵,然後one-hot展開,接著再與其它特徵進行交叉使用,只有交叉使用才能發揮id類特徵的重要作用。下圖是電影資料movielens中id的one-hot展開:

在fm中將使用者id和物品id採用one-hot展開作為特徵列,還能分別生成使用者的embedding向量物品的embedding向量

關於fm實現movielens的簡單樣例請參考github:   

MySQL 為什麼推薦自增 id 作為主鍵

在計算機裡,無論是記憶體還是磁碟,作業系統都是按頁的大小進行讀取的 頁大小通常為 4 kb 磁碟每次讀取都會預讀,會提前將連續的資料讀入記憶體中,這樣就避免了多次 io,這就是計算機中有名的區域性性原理,即我用到一塊資料,很大可能這塊資料附近的資料也會被用到,乾脆一起載入,省得多次 io 拖慢速度,...

自動推薦系統效果為什麼不好

今晚在資料探勘研究院看到的一篇文章 自動推薦系統效果為什麼不好 為什麼朋友推薦的書總是讓我滿意,難道朋友在推薦書的時候作了比計算機所能進行的運算還要複雜的大腦活動了嗎?使用者的訴求和心理很微妙,很多時候你自己都不知道自己的訴求,前1分鐘你想吃肯德基,後1分鐘你可能放棄這個想法,正如keso說的我買了...

推薦系統中涉及到Id轉換

最近的推薦系統專案中,使用spark 中的機器學習演算法實現推薦,會把收到的使用者行為資料轉換為對應的評分資料,參考電影評分資料一樣,其中spark mllib中的als演算法需要的資料格式是uid itemid rating這種格式的,其中uid,itemid是int型別的,但是server手機到...