在理解了內容和用戶的基礎特征之后,我們將進一步探討推薦算法是如何匹配用戶和內容的。概括而言,這一過程所做的就是“物以類聚,人以群分”。
一、物以類聚:基于內容屬性的相似性推薦
有了完善的物品畫像,我們就可以基于其固有屬性來計算物品與物品之間的相似度,從而推薦與用戶歷史消費相似的新物品。以內容推薦為例,其用于相似度計算的常見因素有:作者層面的相似性(基于訂閱或偏好關系),內容層面的相似性(如關鍵詞、話題、類目、聚類、標簽等)。
基于內容屬性的推薦方式,常見于音樂(如潘多拉)、電影和書籍(如豆瓣)的推薦場景中。以圖書推薦場景為例,在豆瓣圖書上,有三本書分別有如下標簽:
![推薦算法的物以類聚人以群分](https://www.isolves.com/d/file/p/2020/06-22/a4240b4024119de55a2ca622533d2aa2.jpg)
從標簽層面不難看出,《推薦系統實踐》與《推薦系統》在標簽集合層面擁有更多的相同標簽,具有更高的相似度。那么,當用戶A選擇了《推薦系統實踐》之后,系統應當優先給他推薦的是《推薦系統》,而非《大數據時代》。
如果想要進一步細化,那么可以借助TF–IDF方式給不同的標簽設定權重。其基本思想是:出現頻率越高的標簽區分度越低,反之亦然。比如“計算機”是一個高頻出現的標簽,那么這個標簽的區分度就沒有那么高,權重較低;而“推薦系統”是一個低頻出現的標簽,則該標簽就更具有顯著性和區分度,權重較高。
基于內容屬性推薦的好處在于,只依賴物品本身的特征而不依賴用戶的行為,讓新的物品、冷僻的物品都能得到展示的機會。其存在的問題在于,推薦質量的優劣完全依賴于特征構建的完備性,但特征構建本身是一項系統的工程,存在一定成本。在上面的例子中,如果標簽詞粒度不夠細,不能夠全面描述書的內容(比如每本書的標簽詞只有三個),就很難計算出置信的相似度,達不到足夠好的推薦效果。
此外,基于內容屬性推薦沒有考慮用戶對物品的態度,用戶的品位和調性很難得到詮釋和表達。比如,市面上關于內容分發的書籍很多,僅從標簽詞上很難分辨出高下。為了在推薦中更好地引入受眾反饋因素,提出了基于用戶行為的“協同過濾”概念。
二、人以群分:基于用戶行為的協同過濾
舉一個生活中的場景:初次為人父母,“無證上崗”的新手爸媽們內心是激動而又惶恐的。“打聽”成了他們育兒的重要法寶之一。“你家寶寶用的是什么沐浴液?。?rdquo;“你們有沒有上什么早教班啊?”……我在的多個親子群里,無時無刻不在發生這樣的討論。這樣的討論也構成大家進行后續消費決策的主要因素之一。
這種基于人和人之間的相互推薦固然是弱社交關系分發的一種形態,但促成大家進行價值信息交換和購買轉化的,其實是人和人之間的相似點,即為人父母、擁有相似的價值觀和消費觀。
把用戶的消費行為作為特征,以此進行用戶相似性或物品相似性的計算,進行信息匹配,是協同過濾(Collaborative Filtering)的基礎。
協同推薦可以分為三個子類:基于物品(Item-based)的協同、基于用戶(User-based)的協同和基于模型(Model-based)的協同。
基于用戶的協同就契合了上面的例子,其基礎思路分為兩步:第一步,找到那些與你在某一方面口味相似的人群(比如你們都是新手爸媽,傾向于同一種教育理念);第二步,將這一人群喜歡的新東西推薦給你。
下圖中,用戶A和用戶C都閱讀了內容A和內容C,用戶B閱讀了內容B。基于閱讀行為來看用戶相似度,用戶A和用戶C更為相似。那么,當用戶C閱讀了新內容D之后,這一內容就應當推薦給用戶A。
![推薦算法的物以類聚人以群分](https://www.isolves.com/d/file/p/2020/06-22/f83b27f8e5c9db75114bb443b5d3dd75.jpg)
基于物品的協同,其推薦的基礎思路是:先確定你喜歡什么物品,再找到與之相似的物品推薦給你。只是物品與物品間的相似度不是從內容屬性的角度衡量的,而是從用戶反饋的角度衡量的。
比如下圖中,內容A和內容C都被用戶B、C閱讀,從閱讀行為的角度看,兩篇內容更相似。那么,當用戶A閱讀了內容A時,系統就選擇與內容A相似的內容C,將其推薦給用戶A。
![推薦算法的物以類聚人以群分](https://www.isolves.com/d/file/p/2020/06-22/53f8752439391ed27be2e50d5a603e56.jpg)
以書籍為例,在協同推薦的場景下,一本書的特征(標簽)不再是作者、題材、領域這些靜態固有屬性,而是哪些用戶購買了、哪些用戶在購買后給了高分或低分這樣的行為動作。
依賴不同的協同算法,同樣的數據集合可能會得到不同的結果。下表中,展示了不同書籍的用戶購買情況。對于用戶E而言,其購買了《推薦系統實踐》和《大數據時代》兩本書。那下一步,我們應該給他推薦哪本書呢?
在基于物品的協同下,應該給他推薦《推薦系統》。這是因為《推薦系統》與用戶E已經購買的兩本書的購買用戶重疊度更高。
在基于用戶的協同下,應該給他推薦《集體智慧編程》。這是因為用戶E的消費歷史跟用戶A、B、D重疊更高、更相似,而A、B、D三位用戶都購買了《集體智慧編程》。
![推薦算法的物以類聚人以群分](https://www.isolves.com/d/file/p/2020/06-22/9a921d9b361d5e5fcebe54443ac62b90.jpg)
基于用戶的協同算法在1992年就已經被提出,而基于物品的協同算法直到2001年才被亞馬遜提出。大家一度認為基于物品的協同要優于基于用戶的協同,這是因為大型電商網站的用戶數量往往遠大于商品數量,且商品的更新頻率相對較低,基于物品的協同能夠以離線運算的方式獲得更好的推薦效果。但對新聞推薦系統、社交性推薦系統等而言,其物品是海量和頻繁更新的,故而基于用戶的協同也有著相應的用武之地。
協同類推薦的典型應用場景,如豆瓣在書籍介紹下展示的“喜歡讀×××的人也喜歡……”?;谀P偷膮f同,是用用戶的喜好信息來訓練算法模型,實時預測用戶可能的點擊率。比如,在Netflix的系統中就將受限玻爾茲曼機(Restricted Boltzmann machines,RBM)神經網絡應用于協同過濾。將深度學習應用于基于模型的協同,也成了業界廣泛使用的方式。
協同推薦是目前應用最為廣泛的推薦機制,其基于用戶行為的特點使我們不需要對物品或信息進行完整的標簽化分析和建模,從而實現了領域無關,可以很好地發現用戶的潛在興趣偏好。
作者:小武