產品經理需要了解的推薦算法之——熱度推薦原理和實施

產品經理需要了解的推薦算法之——熱度推薦原理和實施

今日頭條的走紅帶動了“個性化推薦”的概念,自此之後,內容型的產品,個性化算法就逐漸從賣點變為標配。伴隨著“機器學習”,“大數據”之類的熱詞和概念,產品的檔次瞬間提高了很多。而各種推薦算法絕不僅僅是研發自己的任務,作為產品經理,必須深入到算法內部,參與算法的設計,以及結合內容對算法不斷“調教”,才能讓產品的推薦算法不斷完善,最終與自己的內容雙劍合璧。

本文以新聞產品為例,結合了我之前產品從零積累用戶的經驗,整理了作為PM需要了解的基本算法知識和實操。


1. 算法的發展階段

個性化推薦不是產品首次發佈時就能帶的,無論是基於用戶行為的個性化,還是基於內容相似度的個性化,都建立在大量的用戶數和內容的基礎上。產品發佈之初,一般兩邊的數據都有殘缺,因此個性化推薦也無法開展。

所以在產品發展的初期,推薦內容一般採用更加聚合的“熱度算法”,顧名思義就是把熱點的內容優先推薦給用戶,雖然無法做到基於興趣和習慣為每一個用戶做到精準化的推薦,但能覆蓋到大部分的內容需求。而且啟動成本比個性化推薦算法低太多。

因此內容型產品,推薦在發佈初期用熱度算法實現冷啟動,積累了一定量級以後,才能逐漸開展個性化推薦算法。


2. 熱度算法

2.1 熱度算法基本原理

需要了解的是,熱度算法也是需要不斷優化去完善的,基本原理:

新聞熱度分 = 初始熱度分 + 用戶交互產生的熱度分 - 隨時間衰減的熱度分

Score = S0 + S(Users) - S(Time);

新聞入庫後,系統為之賦予一個初始熱度值,該新聞就進入了推薦列表進行排序;隨著新聞不斷被用戶點擊閱讀,收藏,分享等,這些用戶行為被視作幫助新聞提升熱度,系統需要為每一種新聞賦予熱度值;同時,新聞是有較強時效性的內容,因此新聞發佈之後,熱度必須隨著新聞變得陳舊而衰減。

新聞的熱度就在這些算法的綜合作用下不斷變化,推薦列表的排序也就不斷變化。


2.2 初始熱度不應該一致

上面的算法為每一條入庫的新聞賦予了同樣的熱度值,但在現實使用後發現行不通,例如娛樂類別比文化類別受歡迎程度本身就高很多;或者突發了嚴重的災害或事故;或是奧運會期間,體育類別的關注度突然高了起來;而此時如果還是每條新聞給同樣的熱度就不能貼合實際了。

解決辦法就是把初始熱度設置為變量:

1)按照新聞類別給予新聞不同的初始熱度,讓用戶關注度高的類別獲得更高的初始熱度分,從而獲得更多的曝光,例如:

產品經理需要了解的推薦算法之——熱度推薦原理和實施


2)對於重大事件的報道,如何讓它入庫時就有更高的熱度,我們採用的是熱詞匹配的方式。

即對大型新聞站點的頭條,Twitter熱點,競品的頭條做監控和扒取,並將這批新聞的關鍵詞維護到熱詞庫並保持更新;每條新聞入庫的時候,讓新聞的關鍵詞去匹配熱詞庫,匹配度越高,就有越高的初始熱度分。

這樣處理後,重大事件發生時,Twitter和門戶網站的爭相報道會導致熱詞集中化,所有匹配到這些熱詞的新聞,即報道同樣事件的新聞,會獲得很高的初始熱度分。


2.3 用戶行為分規則不是固定不變的

解決了新聞入庫的初始分之後,接下來是新聞熱度分的變化。先要明確用戶的的哪些行為會提高新聞的熱度值,然後對這些行為賦予一定的得分規則。例如對於單條新聞,用戶可以點擊閱讀(click),收藏(favor),分享(share),評論(comment)這四種行為,我們為不同的行為賦予分數,就能得到新聞的實時用戶行為分為:

S(Users) = 1*click + 5*favor + 10*comment + 20*share

這裡對不同行為賦予的分數為1,5,10,20,但這個值不能是一成不變的;當用戶規模小的時候,各項事件都小,此時需要提高每個事件的行為分來提升用戶行為的影響力;當用戶規模變大時,行為分也應該慢慢降低,因此做內容運營時,應該對行為分不斷調整。

當然也有偷懶的辦法,那就是把用戶規模考慮進去,算固定用戶數的行為分,即:

S(Users) = (1*click + 5*favor + 10*comment + 20*share)/DAU * N(固定數)

這樣就保證了在不同用戶規模下,用戶行為產生的行為分基本穩定。


2.4 熱度隨時間的衰減不是線性的

由於新聞的強時效性,已經發布的新聞的熱度值必須隨著時間流逝而衰減,並且趨勢應該是衰減越來越快,直至趨近於零熱度;換句話說,如果一條新聞要一直處於很靠前的位置,隨著時間的推移它必須要有越來越多的用戶來維持。


產品經理需要了解的推薦算法之——熱度推薦原理和實施

我們要求推薦給用戶的新聞必須是24h以內,所以理論上講,衰減算法必須保證在24h後新聞的熱度一定會衰減到很低,如果是線性衰減,當某些新聞突然有大量用戶閱讀,獲得很高的熱度分時,可能會持續排名靠前很久,讓用戶覺得內容更新過慢。

參考牛頓冷卻定律,時間衰減因子應該是一個類似於冪函數:

T(Time) = e ^ (k*(T1 - T0)) 其中T0是新聞發佈時間,T1是當前時間;

而最終的新聞的熱度算法也調整為:

Score = ( S0(Type) + S(Users) ) / T(Time)


2.5 其他影響因素

很多新聞產品會給用戶“贊”,“踩”或“不在推薦此類”的選項,這些功能不僅適用於個性化推薦,對熱度算法也有一定的作用;

新聞的推送會造成大量的打開,在計算熱度的時候需要排除掉相關的影響。類似於這樣的因素,都會對熱度算法產生影響,因此熱度算法上線後,依然需要不斷地“調教”。建議把所有的調整指標做成可配項,例如初始熱度分,行為事件分,衰減因子等,從而讓產品和運營能實時調整和驗證效果,達到最佳狀態。


分享到:


相關文章: