推薦系統的召回

所謂召回,在剛接觸推薦系統的時候可能只看字面意思無法理解召回的意思,召回可以理解為向用戶粗選一批待推薦的商品,相當於

粗排序。之後會加一層CTR預估的rank模型,相當於精排序

推薦系統的主要模塊即為:召回 => 排序(精排) => 過濾模塊(對最終展示商品進行過濾,多樣性排序等)

推薦系統是一個很大的話題,涉及到很多模塊,這裡主要是調研了一下推薦召回環節的主流做法。一般有如下幾條線路。

基於Content的推薦

方法:只使用內容信息,而不直接使用用戶行為數據。通過分析內容,推薦與用戶瀏覽歷史相似的內容。因此,如何計算內容之間的相似性是問題的關鍵。一般分成“分詞”,“詞權重分析”,“降維”三個階段,每個階段都有很多可以優化的地方,不同的做法會帶來不一樣的推薦體驗。

優點:(一)不依賴用戶行為數據,因此不存在新內容的冷啟動問題。(二)基於內容的做法很容易在“降維”階段引入用戶行為,從而可以吸收一部分CF的優點。

缺點:(一)需要精細優化的地方會很多,沒有工匠精神,效果比較難出來。(二)最重要的模塊是通過對用戶session實時分析用戶意圖。

應用: 在電商推薦中,如果基於內容計算商品相似度,內容相似度一般定義為(品牌+品類+價格+標題的內容相似度),大規模兩兩之間相似度計算非常困難,工程上實現需要LSH等方法

基於CF的推薦

方法:只使用用戶行為數據,而不管內容信息。通過用戶行為向量,使用item-base和user-base方法推薦相似內容或者相似人群喜歡的內容。

優點:(一)當用戶行為數據豐富的時候,itembase和userbase的協同過濾方法非常通用,很容易出效果。(二)用戶行為關聯可以推薦出偏topic屬性的內容,而不會侷限於關鍵詞,因此相關性效果一般都很好。

缺點

:新內容的冷啟動問題很嚴重,只能通過EE的方式緩解。

應用:電商中基本是item-based CF,即對於一個用戶,先取出用戶過去的行為session商品(如點擊,加購物車,下單等),根據規則向用戶的召回集中選擇商品,可以配置多個召回源,如相似、相關、偏好店鋪熱銷等。因此重點是離線計算好多種相似度關係(比如商品與商品的相似度、相關度,店鋪下商品的熱門程度、店鋪與店鋪的相似程度等) ,注:商品和商品的相似度,一般通過用戶的瀏覽行為,用頻繁項集(基於共現次數+熱門商品降權方法)來計算,這樣不用引入22之間計算的笛卡爾積,計算效率得到保證。

如果是user-based CF,則首要任務是計算用戶之間的相似度,同樣計算量非常大,但這種方法推薦新穎性較好(網易雲音樂好像適用類似方法)。微信的deepwalk(用戶的相識關係是典型的圖模型),deepwalk通過節點的遊走可以算出每個節點的embedding,進而求節點的相似度。

基於內容和CF的混合推薦

方法

:不僅使用用戶行為信息,而且還使用內容信息。一般是使用feature-based模型來進行推薦。

優點:(一)理論完備,通過模型的推廣能力來解決新內容的冷啟動問題,而且在小數據集上離線指標往往比CF能取得更好的效果。(二)可以通過提高模型複雜度不斷提高推薦效果。

缺點:工程實現時難度比較大,需要解決用戶和海量內容的打分服務。


分享到:


相關文章: