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