筆者重讀《推薦系統實踐》,總結了其中要點,也闡述了自己的一些想法,分享給大家,供大家參考學習。
筆者重讀《推薦系統實踐》,總結了其中要點,也闡述了自己的一些想法,分享給大家,供大家參考學習。
在這個信息過載的時代,個性化推薦系統是我們日常都會接觸到的,最近因為要給小伙伴分享,重新過了一下《推薦系統實踐》這本書的內容,也把其中一些要點整理分享出來。
首先來說說,為什么要有個性化推薦系統,主要是為了以下兩點:
- 解決信息過載問題;
- 挖掘長尾物品/信息。
推薦系統通過發掘用戶的行為,找到用戶的個性化需求,從而將長尾物品準確推薦給需要它的用戶,幫助用戶找到他們感興趣但很難發現的物品。
推薦算法評估指標
- 準確率:準確率是針對預測結果而言的,表示給用戶推薦的物品中,有多少是真正感興趣的。
- 召回率:召回率是針對推薦的結果,它表示的是用戶感興趣的物品中,有多少個是系統推薦的。
- 覆蓋率:反映了推薦算法挖掘長尾物品的能力,如果所有物品都至少推薦給了1個用戶,則覆蓋率為100%。
- 流行度:根據推薦物品的平均流行度進行度量,如果推薦物品的流行度都比較高,則物品新穎度比較低。
協同過濾算法是基于用戶行為數據設計的推薦算法,其中主要包括三類算法:「基于領域的方法」、「隱語義模型」、「基于圖的隨機游走算法」,這里主要給大家介紹一下「基于領域的方法」,分為User CF和Item CF兩種。
基于用戶的協同過濾(User Collaborative Filtering)
User CF的基礎邏輯是給用戶推薦和他興趣相似的其他用戶喜歡的物品,步驟如下:
- 找到和目標用戶興趣相似的用戶集合;
- 找到這個集合中的用戶喜歡的,且目標用戶沒有聽說過的物品推薦給目標用戶。
設有兩個用戶u和v,N(u)表示用戶u曾經有過正反饋的物品集合,可通過以下方式計算兩個用戶的興趣相似度:
Jaccard公式:
計算余弦相似度:
得到用戶的興趣相似度后,選擇與用戶興趣最相似的K個用戶,將他們的興趣物品(并排除目標用戶已反饋過的物品),推薦給目標用戶。
算法缺點
- 隨著網站用戶數目越來越大,計算用戶興趣相似矩陣越來越困難;
- 運算時間復雜度和空間復雜度與用戶數增長近似于平方關系。
因此,亞馬遜推出了-item CF。
基于物品的協同過濾(Item Collaborative Filtering)
User CF的基礎邏輯是給用戶推薦和他之前喜歡的物品相似的物品,步驟如下:
- 計算物品之間的相似度;
- 根據物品的相似度和用戶的歷史行為給用戶生成推薦列表。
通過計算喜歡物品 i 的用戶中有多少也喜歡物品 j,來計算兩個物品的相似度:
得到物品的相似度后,選擇與其最相似的K個物品集合,推薦給目標用戶。
User CF與Item CF算法的對比
推薦系統的評估維度
評估一個推薦系統的質量,需要綜合多個維度進行評估,核心維度如下:
- 用戶滿意度:用戶后續行為反饋,調研
- 預測準確度:準確度/召回率
- 覆蓋率:對物品長尾的挖掘能力,注意馬太效應的影響
- 多樣性:用戶興趣類型分布
- 新穎性:排除用戶歷史反饋物品,排除熱門物品
- 驚喜度:非用戶歷史興趣,但是滿意
- 信任度:透明度,推薦機制解釋程度
- 實時性:是否可以針對用戶行為實時進行反饋
- 健壯性:防攻擊,反作弊
- 商業目標達成情況
除了以上所述,搭建推薦系統,還需要考慮的一個重要問題就是“冷啟動”,涉及冷啟動的場景主要有以下三類:
1. 用戶冷啟動
一個新用戶,沒有任何歷史行為數據,怎么做推薦。
2. 物品冷啟動
一個新上線的物品,沒有用戶對它產生過行為,怎么推薦給感興趣的用戶。
3. 系統冷啟動
一個新開發的網站,沒有用戶數據,怎么做個性化推薦。
根據系統的場景屬性,可以設計不同的冷啟動方式:
- 提供非個性化推薦;
- 利用用戶注冊信息如年齡性別等做粗顆粒度推薦;
- 利用用戶社交關系;
- 新用戶要求對一系列物品進行反饋;
- 對應新物品,利用內容屬性推薦給相似物品感興趣用戶;
- 專家搭建多維度標簽體系。
設計一個健全的推薦系統,算法和策略需要綜合考慮多項因素,包括服務器、計算資源成本,人力成本,可持續性和可擴展性等。
高質量的推薦系統會使用戶對系統產生依賴,因此,推薦系統不僅能為用戶提供個性化服務,還能與用戶建立長期穩定的關系,提高用戶忠誠度,防止用戶流失。
希望我的梳理可以給到一些啟發和參考。
本文由 @orca 原創發布于人人都是產品經理,未經作者許可,禁止轉載。
題圖來自Unsplash,基于CC0協議。


