當前位置:
首頁 > 科技 > 產品經理需要了解的演算法——熱度演算法和個性化推薦

產品經理需要了解的演算法——熱度演算法和個性化推薦

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

本文以新聞產品為例,結合了我之前產品從零積累用戶的經驗,整理了作為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 其他影響因素

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

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

3. 基於內容的推薦演算法

現在,你的內容產品順利度過了早期階段,擁有了幾萬甚至十幾萬級別的日活。這時候,你發現熱度演算法導致用戶的閱讀內容過於集中,而個性化和長尾化的內容卻鮮有人看,看來是時候開展個性化推薦,讓用戶不僅能讀到大家都喜歡的內容,也能讀到只有自己感興趣的內容。

這裡引入一個概念叫「新聞特徵向量」來標識新聞的屬性,以及用來對比新聞之間的相似度。我們把新聞看作是所有關鍵詞(標籤)的合集,理論上,如果兩個新聞的關鍵詞越類似,那兩個新聞是相關內容的可能性更高。 新聞特徵向量是由新聞包含的所有關鍵詞決定的。得到新聞特徵向量的第一步,是要對新聞內容進行到關鍵詞級別的拆分。

3.1 分詞

分詞需要有兩個庫,即正常的詞庫和停用詞庫。正常詞庫類似於一本詞典,是把內容拆解為詞語的標準;停用詞庫則是在分詞過程中需要首先棄掉的內容。

停用詞主要是沒有實際含義的,例如「The」,「That」,「are」之類的助詞;表達兩個詞直接關係的,例如「behind」,「under」之類的介詞,以及很多常用的高頻但沒有偏向性的動詞,例如「think」「give」之類。顯而易見,這些詞語對於分詞沒有任何作用,因此在分詞前,先把這些內容剔除。

剩下對的內容則使用標準詞庫進行拆詞,拆詞方法包含正向匹配拆分,逆向匹配拆分,最少切分等常用演算法,這裡不做展開。

因為網路世界熱詞頻出, 標準詞庫和停用詞庫也需要不斷更新和維護,例如「藍瘦香菇」,「套路滿滿」之類的詞語,可能對最終的效果會產生影響,如果不及時更新到詞庫里,演算法就會「一臉懵逼」了。

因此,推薦在網上查找或購買那些能隨時更新的詞庫,各種語種都有。

3.2 關鍵詞指標

前面已經說過,新聞特徵向量是該新聞的關鍵詞合集,那關鍵詞的重合度就是非常重要的衡量指標了。

那麼問題來了,如果兩條新聞的關鍵詞重合度達到80%,是否說明兩條新聞有80%的相關性呢?

其實不是,舉個例子:

(1)一條「廣州摩拜單車投放量激增」的新聞,主要講摩拜單車的投放情況,這篇新聞里「摩拜單車」是一個非常高頻的辭彙,新聞在結尾有一句「最近廣州天氣不錯,大家可以騎單車出去散心」。因此「廣州天氣」這個關鍵詞也被收錄進了特徵向量。

(2)另外一條新聞「廣州回南天即將結束,天氣持續好轉」,這篇新聞結尾有一句「天氣好轉,大家可以騎個摩拜單車出門溜溜啦」,新聞裡面「廣州天氣」是非常高頻的辭彙,「摩拜單車」儘管被收錄,但只出現了一次。

這兩個新聞的關鍵詞雖然類似,講的卻是完全不同的內容,相關性很弱。如果只是看關鍵詞重合度,出現錯誤判斷的可能性就很高;所以特徵向量還需要有第二個關鍵詞的指標,叫新聞內頻率,稱之為TF(Term Frequency),衡量每個關鍵詞在新聞裡面是否高頻。

那麼問題來了,如果兩條新聞的關鍵詞重合度高,新聞中關鍵詞的頻率也相差無幾,是否說明相關性很強呢?

理論上是的,但又存在另外一種情況:如果我們新聞庫里所有的新聞都是講廣州的,廣州天氣,廣州交通,廣州經濟,廣州體育等,他們都是講廣州相關的情況,關鍵詞都包含廣州,天河,越秀,海珠(廣州各區)等,並且有著類似的頻率,因此演算法很容易將它們判斷為強相關新聞;從地域角度講,這種相關性確實很強,但從內容類別層面,其實沒有太多相關性,如果我是一個體育迷,你給我推薦天氣,交通之類的內容,就沒多大意義了。

因此引入第三個關鍵詞的指標,即關鍵詞在在所有文檔中出現的頻率的相反值,稱之為IDF(Inverse Document Frequency)。

為什麼會是相反值?因為一個關鍵詞在某條新聞出現的頻率最大,在所有文檔中出現的頻率越小,該關鍵詞對這條新聞的特徵標識作用越大。

這樣每個關鍵詞對新聞的作用就能被衡量出來即TFIDF=TF * IDF,這也就是著名的TF-IDF模型。

3.3 相關性演算法

做完分詞和關鍵詞指標後,每一篇新聞的特徵就能用關鍵詞的集合來標識了:

其中word0,1,2……n是新聞的所有關鍵詞,tfidf0,1,2……n則是每個關鍵詞的tfidf值。

兩個新聞的相似度就能通過重合的關鍵詞的tfidf值來衡量了。根據之前所學的知識,幾何中夾角餘弦可以用來衡量兩個向量的方向的差異性,因此在我們的演算法中使用夾角餘弦來計算新聞關鍵詞的相似度。夾角越小,相似度越高。

有了關鍵詞和各關鍵詞的tfidf之後,就可以計算新聞的相似度了。假設兩條新聞的特徵列表如下:

可以看到兩條新聞有5個重合的關鍵詞:廣州,摩拜單車,太陽,天河和市長,因此兩條新聞的相關性由這5個關鍵詞決定,計算方式如下:

得出兩條新聞的相關性最終值;用同樣的方法能得出一條新聞與新聞庫裡面所有內容的相關性。

3.4 用戶特徵

得到新聞特徵以後,還需要得到用戶特徵才能對兩者進行匹配和推薦,那怎麼獲得用戶特徵呢?

需要通過用戶的行為來獲得,用戶通過閱讀,點贊,評論,分享來表達自己對新聞內容的喜愛;跟熱度排名類似,我們對用戶的各種行為賦予一定的「喜愛分」,例如閱讀1分,點贊2分,評論5分等,這樣新聞特徵跟用戶行為結合後,就能得到用戶的特徵分。

而隨著用戶閱讀的新聞數越來越多,該用戶的標籤也越來越多,並且越發精準。

從而當我們拿到新聞的特徵後,就能與用戶的關鍵詞列表做匹配,得出新聞與用戶閱讀特徵的匹配度,做出個性化推薦。

3.5 其他運用

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 大數據實驗室 的精彩文章:

十大必須掌握的機器學習演算法,竟然都如此有趣
90後最想去哪買房?大數據為你揭示真相!
史上最明了的「編程語言琅琊榜」
文本挖掘找出50年間最流行的音樂
理解這25個概念,你的人工智慧,深度學習,機器學習才算入門!

TAG:大數據實驗室 |

您可能感興趣

你應該了解的AI演算法,樹搜索和演化演算法
演算法餘暉
深度策略梯度演算法是真正的策略梯度演算法嗎?
矛盾著的演算法,演算法中的矛盾
推薦系統產品與演算法概述
理解關聯規則演算法:演算法應用
可視化解釋壓縮演算法的工作原理
演算法的時間複雜度
高性能計算之定製化優化演算法講座
動力系統與優化演算法
【演算法資源】貪婪演算法
演算法與程序的區別
機器學習優化演算法「梯度下降」及其變種演算法
危險的視頻推薦演算法
演算法是區塊鏈構成的根本,演算法和持續性決定數據導向
量化深度強化學習演算法的泛化能力
人臉識別演算法演化史
新的演算法決定了理想的咖啡因劑量和警覺性的時間
【演算法面經】重讀:機器學習面試演算法梳理
簡單解釋推薦系統的相似度及演算法