計算內容熱度的演算法解釋
什麼樣的一個內容是熱門的呢?這其實是一個相對的概念,面對不同的需求,它的表達是不同的。
其中:
- :內容質量的數值表達,例如一篇文章質量可以定義成文章的點贊數,也可以根據產品需要定義為其他
- :新內容的初始質量,具體含義後續解釋中會理解
- :重力 Gravity,或者說是一個內容變得不再熱門的速度,重力越大,一個內容重新整理的就越快
- :時間
可以看到熱度 在這樣的公式中有 4 個變數即 ,此公式與 Hacker News、Reddit 相同,只是定義內容質量 時用的邏輯不一樣。
1)熱度 與時間 的關係
首先,我們看一個比較簡單的關係,就是熱度與時間的關係:
- :100
- :10
- :1.5
- :時間

很清楚,時間越大,熱度越低。
2)熱度 與初始質量 、時間 的關係
- :0
- :[2, 4, 6]
- :1.5
- :時間

我們能夠看到,對於不同的初始質量 ,內容的初始熱度是不同的,在後續的時間衰減中,如果其他數值不變,那麼初始質量越高則內容熱度越大。
3)熱度 與初始質量 、重力 、時間 的關係
- :0
- :[2, 4, 6]
- :[1.5, 1.2, 1.8]
- :時間

面對不同的重力,即使初始質量高,重力大時其熱度衰減很快。
4)熱度 與質量 、初始質量 、重力 、時間 的關係
- :[90, 190, 90]
- :10
- :[1.5, 1.5, 1.8]
- :時間

我們看到三個交點:
- : , 與 的交點
解釋:一個內容質量 90 的內容,在 交點,即約 3.64 單位時間之後其熱度低於一個全新的初始熱度為 10 的內容。
- : , 與 的交點
- : , 與 的交點
解釋:一個內容質量 190 的內容,在 6.36 單位時間之後,其熱度低於任意新內容。而一個內容質量為 90 的內容,如果重力為 1.8,那麼僅在 2.59 單位時間後其熱度低於任意新內容。
我們可以看到如下結論:
- 初始質量 越高,老內容的熱度更快的被最新生產的內容超越
- 一個內容的質量 越高,此內容熱度高於新內容的時間越長
- 重力 越高,內容熱度衰減越快,老內容的熱度更快被新生產的內容超越
因此,在確定的初始質量 及重力 下,一個內容可以獲得的 決定了其熱度及被新內容超越的時間。
5)質量數值 與時間 線性正相關的假設
假設一個內容質量的數值表達與時間正相關,例如我們用一個文章的點贊量表達其質量,那麼在一個限定的時間裡,其時間越長,點贊量越高:
而 代表了一個新內容獲得質量 的速度,也就是一個新內容獲得點讚的速度,那麼
- :
- :10
- :1.5
- :時間
其中我們測試了三個 分別是:20、25、30

我們看到三個交點:
- : 與 的交點
- : 與 的交點
- : 與 的交點
解釋: 越大,說明單位時間裡一個內容可以獲得的質量越高,也就是說明這個內容本身更受歡迎。對於交點 來講,此內容在 1.62 個單位時間後,即使保持著 增長質量的速度,依然會被一個新內容的熱度超越。而從 交點可以看到,如果其 增長速度為 ,那麼在 6.46 個單位時間後才會被新內容的熱度超越。
6)質量數值 與時間 對數正相關的假設
當然上面的假設有一個問題是,一個文章的質量表達很難和時間長期正相關,也就是說,文章存在時間越長,往往後續獲得的點贊會降低。因此,我們可以假設 與 是對數相關的關係:
- :獲得點讚的速度
- :隨著時間遷移,獲得點贊速度開始衰減的係數

我們看到三個交點:
- : 與 的交點
- : 與 的交點
- : 與 的交點
解釋:對比 與 我們可以看到,因為質量數值的增長隨著時間變少,因而 內容更快地被新內容超越。
內容熱度在掘金裡的使用
- :即一個內容的熱度
rankIndexArticle
- :即一個內容的
hotIndexArticle
是一個文章閱讀數、評論數、點贊數加權求和的數值 - :即一個內容初始的數值
rankIndexUser
是文章作者的影響因子- 影響因子與作者本身的歷史掘力值相關
- :一個衰減的重力引數
- :文章自發布以來的時長
作為掘金社群,我們希望將更多好內容帶給讀者,從數值上,我們希望總和的 變高,同時平衡其與 之間的關係,即新內容獲得的流量,與一個好內容獲得流量之間交點的時間長度。
- :一篇文章本身的質量表達,多快獲得點贊、獲得閱讀,即點選率、點贊率
- :點贊率、點選率隨著文章存在時間是否會衰減,衰減得多塊
說人話:一個獲得了 1000 個點贊、10000 個閱讀、100 個評論的內容,在計算規則下什麼情況會被一篇新文章的熱度超越。而整個社群的熱度計算,是一個動態優化的問題。