作為產品經理,不懂一點個性化推薦原理,怎么行?
在之前的文章《針對大眾點評V10改版的一些看法》里面提到要想提高用戶對內容的點擊率,可以通過算法來實現個性化推薦。具體到實操階段,雖然主要涉及到算法,但作為一名產品經理還是有必要了解的,為此我最近梳理出個性化推薦相關內容,不足之處,歡迎大家指正和討論。
1. 為何要做個性化推薦
個性化推薦,一方面從用戶角度,可以基于用戶特征過濾掉“無效”物品/信息,推薦符合用戶口味的物品/信息,從而提升用戶體驗,進一步也增加用戶點擊率,從而為轉化提供更多的可能性;另一方面從系統的角度,也可以讓更多長尾的物品/信息被曝光,從而最大效率的利用資源。如下圖所示,可以看出好的個性化推薦比簡單熱門排序算法有更好的的有效信息覆蓋度(圖中斜線面積)。
2. 推薦算法的前提——斷物識人
通常我們說物以類聚、人以群分,推薦算法也是基于用戶喜好物品/信息的相似性和同類用戶興趣相同的原理來推薦,這里就涉及到人一物和人—人—物的關系,為了可量化人與物以及人與人的關系,我們需要做的就是給提煉出人和物的特征——即給人和物打上標簽,通過標簽抽象出事物更具有表意性、更為顯著的特點,然后通過標簽進行匹配。
2.1 給物打上標簽
標簽不只是簡單的給物品/信息分類,而是代表著分發給不同的用戶群體,比如運動、健身類視頻就可以在標簽中加上“球迷”“健身達人”等,有關動漫等二次元的內容,也可以加入些類似“宅男”“蘿莉”等標簽。
這里補充一下標簽和分類的區別,分類是樹狀的,是自上而下依次劃分的。在分類體系里,每個節點都有嚴格的父子關系,在兄弟節點層都具有可以被完全枚舉的屬性值,如天貓的商品服務分類(下圖)。應用分類時必須考慮分類權威性和信息完備性問題,避免因為子節點覆蓋不全或分類錯誤導致的認知問題。
標簽是網狀的,更強調表達屬性關系而非繼承關系, 只有權重大小之分,不強調包含與被包含關系。這就使得相對于分類而言,標簽的靈活性更強。 在權威性方面,標簽是弱化的,每個用戶都可參與進來,基于自己的偏好貼標簽,從而借助規模效應實現對信息表意完備性的覆蓋。因此,在設計系統時,可以先基于產品場景快速覆蓋主要標簽,再結合標簽集合的使用頻次、專家建議等因素逐步將部分入口收斂到樹狀的分類體系中來。
通過PGC和UGC可以獲取物品/信息標簽。例如人人都是產品經理上文章通過審核后,官方會在文章下面會打上相關標簽。有的產品除給物品/信息打上標簽之外,還會以分值代表這一標簽的表征程度,如音樂推薦引擎潘多拉(Pandora)的音樂基因工程中,歌曲體系被抽離出450個標簽,細化到如主唱性別、電吉他失真程度、背景和聲類型等。每一首歌曲都會經由工作人員耗時二三十分鐘,有選擇性地標注一些標簽,并以0~5的分值代表這一標簽的表征程度。
而在豆瓣,給電影的標簽的是普通網友產出(如下圖所示)。群體的力量為豆瓣積累了大量具有語義表意性的標簽。當然,由于用戶的多樣性和編輯的開放性,用戶標簽系統需要經過特定的清洗和歸一處理。
2.2 給用戶打上標簽
一個用戶行為的數據集一般由一個三元組的集合表示,其中記錄{u,i,b}表示用戶u給物品i打上了標簽b(當然實際中會包含用戶屬性、物品屬性等,更為復雜)。給用戶提供標簽一般有4種方法 :
- 給用戶推薦一個系統中最熱門的標簽;
- 給用戶推薦物品i上最熱門的標簽;
- 給用戶推薦他自己經常使用的標簽;
- 將方法2和方法3融合,通過一個系數將上面的推薦結果線性加權,生成最終的推薦結果。
實際推薦過程中,為了給用戶更精確的推薦,除了用戶行為數據外,還會收集用戶基本信息、位置信息、搜索等信息建立完整的用戶畫像。
3. 推薦算法原則——物以類聚、人以群分
3.1 物以類聚:基于物的相似性推薦
基于物的相似性推薦是基礎的推薦策略。如果你瀏覽或購買過某種類型的內容/物品,則基于類型或標簽給你推薦其他內容/物品(如下圖)。以內容推薦為例,其用于相似度計算的常見因素有:作者層面的相似性(基于訂閱或偏好關系),內容層面的相似性(如關鍵詞、話題、類目、標簽等)。
如果想要進一步細化,那么可以借助TF– IDF方式給不同的標簽設定權重,其基本思想是一個標簽在某內容中出現次數越多, 同時在所有內容中出現次數越少, 越能夠代表該內容, 那么這個標簽的權重應該較高,反之區分度就沒有那么高,權重較低。
以內容/物品屬性來推薦:
(1)優點
只依賴物品本身的特征而不依賴用戶的行為,讓新的物品、冷僻的物品都能得到展示的機會。
(2)缺點
- 推薦質量的優劣完全依賴于特征構建的完備性,但特征構建本身是一項系統的工程,存在一定成本;
- 基于物品或信息屬性推薦沒有考慮用戶對物品的態度,用戶的品位和調性很難得到詮釋和表達。比如,市面上關于內容分發的書籍很多,僅從標簽詞上很難分辨出高下。
因此,為了在推薦中更好地引入受眾反饋因素,提出了基于用戶行為的“協同過濾”概念。
3.2 人以群分:基于用戶行為的協同過濾
協同推薦是目前應用最為廣泛的推薦機制,其基于用戶行為的特點使我們不需要對內容/物品進行完整的標簽化分析和建模,從而實現了領域無關,可以很好地發現用戶的潛在興趣偏好。考慮到協同過濾的方式依賴歷史數據,新的用戶和新的物品會存在冷啟動的問題,該問題筆者的《個性化推薦中不得不知道的冷啟動問題——以內容類產品為例》文章中有相關梳理。
基于用戶的協同其基礎思路分為兩步:
- 第一步,找到那些與你在某一方面口味相似的人群;
- 第二步,將這一人群喜歡的新東西推薦給你。
目前主要包括三個子類:基于用戶( User- based)的協同、基于物品( Item- based)的協同、和基于模型( Model- based)的協同。
(1)基于用戶的 CF(User CF)
基于用戶的CF的基本思想相當簡單,通過用戶對內容/物品的偏好找到相鄰鄰居用戶,然后將鄰居用戶喜歡的推薦給當前用戶。下圖給出了一個例子,對于用戶 A,根據用戶的歷史偏好,這里只計算得到一個鄰居—用戶C,然后將用戶C喜歡的物品D推薦給用戶 A(如下圖):
① 發現偏好相同的用戶
通常用 Jaccard 公式或者余弦相似度計算兩個用戶之間的相似度。設 N(u) 為用戶 u 喜歡的物品或信息集合,N(v) 為用戶v喜歡的物品或信息集合,那么u和v的相似度為:
假設目前共有4個用戶:A、B、C、D;共有5篇物品或信息:a、b、c、d、e。用戶與物品/信息的關系(用戶喜歡物品/信息),如下圖左邊所示,為計算方便,通常首先需要建立“物品—用戶”的倒排表(如下圖中間所示),然后對于每個物品,喜歡他的用戶,兩兩之間相同物品加1。例如喜歡物品 a 的用戶有 A 和 B,那么在矩陣中他們兩兩加1(如下圖右邊所示)。
計算用戶兩兩之間的相似度,上面的矩陣僅僅代表的是公式的分子部分。以余弦相似度為例(如下圖),到此,計算用戶相似度就大功告成,可以很直觀的找到與目標用戶興趣較相似的用戶。
② 推薦物品
首先需要從矩陣中找出與目標用戶u最相似的K個用戶,用集合S(u, K) 表示,將S中用戶喜歡的物品或信息全部提取出來,并去除u已經喜歡的物品。對于每個候選物品i ,用戶u對它感興趣的程度用如下公式計算:
如上面的4個用戶,假設我們要給A推薦物品,選取 K = 3 個相似用戶,相似用戶則是:B、C、D,那么他們喜歡過并且A 沒有喜歡過的物品有:c、e,那么分別計算 p(A, c) 和 p(A, e),通過公式可計算出用戶 A 對 c 和 e 的喜歡程度可能是一樣的,在真實的推薦系統中,只要按得分排序,取前幾個物品就可以了。
(2)基于物品的 CF(Item CF)
基于物品的 CF 的原理和基于用戶的 CF 類似,只是在計算鄰居時采用物品本身,而不是從用戶的角度,即基于用戶對物品的偏好找到相似的物品,然后根據用戶的歷史偏好,推薦相似的物品給他。下圖給出了一個例子,對于物品A,根據所有用戶的歷史偏好,喜歡物品 A的用戶都喜歡物品C,得出物品A和物品C比較相似,而用戶C喜歡物品A,那么可以推斷出用戶C可能也喜歡物品 C。
ItemCF的算法結構基本與UserCF的算法類似(如下圖),只不過由對人的相似度改為了物品之間的相似度,這里不做過多說明了。
N(i)和N(j)表示喜歡物品i的用戶數,ItemCF的算法結構基本與UserCF的算法類似,這里不做過多說明了。
(3)基于模型的協同
基于模型的協同過濾推薦就是基于樣本的用戶喜好信息,訓練一個推薦模型,然后根據實時的用戶喜好的信息進行預測推薦。
① 建立好評分規則
比如,對于一篇內容而言,可能會有以下行為:
② 算出用戶對物品或信息的偏好
基于模型的協同最常見的方法為矩陣分解(Matrix factorization),其示意圖如下圖左邊。矩陣分解通過把原始的評分矩陣R分解為兩個矩陣相乘,只考慮有評分的值,訓練時不考慮missing項的值,如下圖右邊所示。其背后的核心思想,找到兩個矩陣,它們相乘之后得到的那個矩陣的值,與評分矩陣R中有值的位置中的值盡可能接近。這樣一來,分解出來的兩個矩陣相乘就盡可能還原了評分矩陣R,因為有值的地方,值都相差得盡可能地小,那么missing的值通過這樣的方式計算得到,比較符合趨勢。具體案例可參考知乎上關于網易云音樂的歌單推薦算法的回答。
4. 個性化推薦系統的架構
個性化推薦引擎架構主要包括三部分,如下圖所示:
- 模塊A部分負責從數據庫或緩存中拿到用戶行為數據,通過分析不同行為,生成當前用戶的特征向量(即標簽),如果使用非行為特征,就不需要行為提取和分析模塊了,該模塊的輸出就是用戶特征向量。
- 模塊B部分負責將用戶的特征向量通過特征- 物品或信息相關矩陣轉化為初始推薦物品或信息列表。
- 模塊C部分負責對初始的推薦列表進行過濾、排名等處理,從而生成該引擎的最終推薦結果。
此外,有的推薦系統會將用戶行為拆分為數據和事件,其中,數據的時間敏感度更低,事件的時間敏感度更高?;跁r間維度,會在推薦系統中增加一個近線層,比如,我在大眾點評上輸入了野郊公園后,如果希望及時更新用戶的推薦列表,那么這次觀看動作就會被視作事件型進入近線層,以更快地更新用戶畫像數據,因此短期內我會收到公園甚至是該公園相關推薦,但是過了一段時間后,公園的頻度就會少很多。
5. 小結
一說到個性化推薦,大家都會覺得這是技術來主導的事情,但是通過前面對個性化推薦的了解后, 作為產品經理,還是有不同的優化空間和迭代導向。
5.1 完善用戶畫像
完善用戶畫像既可以通過盡可能多的外部渠道數據塑造用戶來實現,也可以借助產品設計和運營活動引導用戶多沉淀行為來實現。以支付寶為例,一次過年的集五?;顒樱妥屗占藬狄詢|計的關系鏈數據。而緊隨 其后的螞蟻森林、螞蟻莊園等輕社交游戲,間接地豐富了用戶的線下支付數據、用戶的健康數據等。
5.2 完善規則系統, 優化用戶使用體驗
一方面,規則是最快的上線生效途徑,可以用于糾偏、提權等操作。比如最新的網絡語舉個例子,在《中國有嘻哈》開播之前,大眾是不知道紅花會是什么的。這時,產品經理就該進行規則干預了,標注紅花會是一個嘻哈團體。
另一方面,需要認識到短期的干預是應該逐步被長期的機制所替換的。我們應該下力氣解決系統的滯后性, 讓它能夠更快速地實現搜索意圖理解的進化,比如監控全網產出的新物品或信息,分析其中的共現詞匯特點。
5.3 根據推薦的結果優化推薦結果
評測推薦系統的指標有:
- 用戶滿意度;
- 預測準確度;
- 覆蓋率;
- 多樣性;
- 新穎性;
- 驚喜度;
- 信任度;
- 實時性;
- 健壯性和商業目標。
因此,基于不同的場景,在使用推薦系統后,產品需要去親自體驗并收集各方面反饋,將反饋同步給技術,并基于反饋,嘗試不同推薦方式共同作用,做到查遺補缺,找到更有的推薦方案。
作者:瑪麗娟,微信公眾號:瑪麗娟娟有話說
本文由 @瑪麗娟 原創發布于人人都是產品經理。未經許可,禁止轉載
題圖來自 Pexels,基于 CC0 協議
你好,文中的發現偏好相同的用戶的中間圖片是錯誤,d、e物品喜歡的用戶只有D用戶
大學學的內容都還給老師了,有關算法,矩陣,向量這些內容請問該如何快速撈起呢?
高中數學課本了解下 ?? ??
不錯哦
在學校期間看這個都沒有現在吃力
贊同,深有體會 ??
你好,文中的發現偏好相同的用戶的中間圖片是錯誤,c物品喜歡的用戶有ABCD,而不是只是BD。
應該是A物喜歡的是AC,而不是AB,哈哈,我改一下
辛苦
?? 特別棒!學習了很多