運營必須了解的內容分發策略(二):推薦算法解析
編輯導語:在上一篇中,我們講到了運營必須了解的內容分發策略——打壓與推優;本文詳細介紹了推薦算法解析,比如我們平常在刷抖音時,你會發現他給你的推送都是你感興趣的;本文對此做出詳細分析,我們一起來看一下。
推薦算法可謂目前社區產品內容分發的標配,尤其是有抖音珠玉在前,精準的推薦效果和巨大的商業成功甚至讓許多模仿者對個性化推薦近乎迷信。
作為運營,我們雖然不需要參與算法的設計與coding,但若能對其背后的工作邏輯有一個基本的理解,更有助于我們完成策略干預與算法優化等工作,在與產品、研發同學溝通時也不至于因知識盲區而鬧出笑話。
一、推薦算法的工作流程
推薦算法在工作時有四個步驟:獲取數據、召回、排序、結果展示。
1. 獲取數據
數據是推薦的依據,是算法決定將什么樣的內容推給誰的根本,主要包括用戶數據與內容數據。用戶數據有基本畫像(如年齡、性別、地理位置等)和行為數據(如播放、點贊、評論、分享等);內容數據有基礎數據(如標簽tag、發布者權重等)和熱度數據(播放、點轉評等)。
2. 召回
數據庫存有海量的內容,考慮到計算負荷與實時性的要求,算法不可能在用戶每刷新一次時,都對數據庫中所有的內容計算分值排序一次;所以通常會通過特定的規則召回指定數量的內容,視社區內容體量而定,這個數量通常為幾百到幾千。
3. 排序
算法從數據庫中召回的內容良莠不齊,而產品的目的則是將好的內容優先展示給給用戶,故而需要對召回的內容做統一的打分排序。
4. 結果展示
將排序的結果映射到前端的槽位展示,即是用戶所看見的內容信息。
二、推薦算法的類別
目前主流的推薦算法,主要有流行度推薦(熱度推薦)、基于內容推薦、協同過濾這三種邏輯;輔以人群推薦、標簽推薦、運營干預等更簡單的靈活策略。
算法的本質是“猜你最想看什么”,其中熱度推薦負責找出當下最熱門的內容;協同過濾與基于內容推薦負責找出你可能感興趣的類型。
社區在應用算法時通常會將上述幾種邏輯分別加權然后混合計算,在技術受限或不需要個性化的社區場景也有單獨使用熱度推薦的情況,如B站的【熱門】tab,皮皮蝦的排行榜等。
后文將對幾種推薦邏輯分別進行解析。
三、熱度推薦
熱度推薦即是根據內容的產生時間、播放、點贊、評論、分享等交互數據計算出時下最流行的內容,其數學原理相對簡單,舉個例子:
如圖即為某個社區產品帖子的熱度計算公式,不必對公式恐懼,其原理很簡單,其中:
1)views:瀏覽量,對瀏覽量做了一次取對數,主要是為了防止某些瀏覽量較大的內容異軍突起,待在榜單遲遲不動。
2)recommendScore:點贊數,作為文章熱門程度的考慮因素。
3)articleComments:評論數,為了降低刷評論的影響,對其作了一次取對數操作。
4)(age/2 + update/2 + 1) ^ i:分母是對時間因子的考慮,宏觀上來看,就是文章熱度和創建時間成反比;細節上體現為指數函數,可以通過對 i 變量的調控來改變時間因子在對熱度的影響。
6)age:內容發布時間
7)update:內容最后更新時間
8)i:重力因子,取值的大小會直接決定熱門排序
對于同一內容,上面的計算公式均可化簡為:
可以看出,熱度和創建時間成反比,那么這個反比的值最終就由重力因子i 來影響。
如果想要突出新熱內容、過濾時間過久的熱門內容,需要增大重力因子,若是如同周熱門和月熱門則需要按時間要求依次逐漸降小i 值。
對于不同的變量i取值,熱度隨時間的衰減趨勢如圖所示:
舉個實例,在我所運營社區的話題頁面推薦流中,通常按照i=1來計算熱度,以此保證內容每天的新鮮度;但當我在做一個每周熱門榜單的項目時,則將i調整為0.5,降低時間衰減的影響,以此保證內容質量。
四、基于內容推薦
基于內容推薦,即通過算法識別內容的元數據,在用戶瀏覽或點贊過內容A時,為你推薦相似的內容B。
其原理是識別內容標題、簡介、字幕、標簽等信息,提取出特征關鍵詞,根據關鍵詞計算內容相似度,以此作為推薦根據;比如基于詞向量的推薦算法。
基于內容推薦最常見的應用場景莫過于電商,在淘寶中我們經常會遇到這種情況:當你點擊、搜索過某種商品后,算法會將大量的同類商品塞到你的推薦流甚至其它平臺的廣告上,在早期推薦策略比較蠢的時候甚至經常推薦已經買過的商品。
五、協同過濾
不同與基于內容推薦的通過識別內容元數據與語義分析來計算內容相似度的方法,協同過濾更偏向于發動“群眾的智慧”,通過用戶群體對不同內容的打分來計算內容的相關性,或猜測用戶可能喜歡什么;前者為基于內容的協同過濾,后者為基于用戶的協同過濾。
1. 基于內容的協同過濾
根據所有用戶對內容的打分,發現內容與內容的相似度,然后再根據用戶的歷史偏好信息將類似的內容推薦給該用戶。
所謂的打分包括播放、點贊、點踩等等交互行為,可以是喜歡也可以是不喜歡。
舉例說明:
如表所示,甲乙丙為歷史偏好信息相近的用戶,ABC為不同內容。
其中甲喜歡內容A、內容B、內容C,乙喜歡內容A與內容C,目標用戶丙喜歡內容A;由歷史偏好可認為內容A與內容C相似,喜歡A的用戶讀會喜歡C,以此為依據將內容C推薦給用戶丙。
2. 基于用戶的協同過濾
根據目標用戶的歷史消費行為,找到與目標用戶消費行為相似的近似用戶,再以近似用戶的喜好為依據向目標用戶推薦內容;簡而言之就是“和你相似的人也喜歡這個”。
舉例說明:
如表所示,甲喜歡內容ACD,乙喜歡內容B,目標用戶丙喜歡AC;由此可認為用戶甲與用戶丙的消費喜好是相似的,以此為依據將內容D推薦給用戶丙。
六、運營如何理解推薦算法
個性化推薦算法是非常復雜的,本文也僅停留在概念理解的層面,但其實可以發現,推薦算法許多工作邏輯同我們運營在做內容分發時的思路是一致的;比如熱度推薦對應推優,基于內容推薦對應專題內容聚合、協同過濾對應精準營銷等等。
算法確實取代了一部分運營的工作,甚至做的比人好得多,但也有其局限性;比如熱度推薦并不能真正理解內容、把控內容導向;協同過濾會使得用戶的推薦流越來越垂直,甚至有被算法控制的感覺。
在真正的人工智能時代到來以前,運營策略干預仍然會在內容分發中扮演重要角色,與推薦算法互補共存。
本文由 @酸梅湯 原創發布于人人都是產品經理,未經許可,禁止轉載
題圖來自 unsplash,基于 CC0 協議
看到啦!非常有用!剛入職的運營小白最近正在因為搞不懂算法問題而頭禿…請問可不可以出一期運營必備的技術知識呀~
非常感謝,這個公式可以舉個栗子嗎,時間要如何表示
發布時間可以乘除???那個時間成反比有點不明白也
求教,熱度推薦公式的系數是怎么得到的呀? 0.0
非常棒! 熱度推薦的公式構造,嚴謹點來說,對數那里是不是得寫成 log(1+x)
非常受用,感謝,第三部分什么時候更呀
感謝感謝
內容最后發布時間:是指發布人對內容的編輯的時間,還是指其它用戶對該內容的點贊、評論等操作時間?
內容最后發布時間單位是天嗎?
看需求,如果是bbs類論壇、貼吧虎撲這種,對回帖的需求比較高,就用回復時間;正常的內容、社交社區的時間線帖子類內容用編輯時間做最后發布時間。時間單位是秒。