計算內容熱度的算法解釋

定義一個內容的熱度

什麼樣的一個內容是熱門的呢?這實際上是一個相對的概念,面對不一樣的需求,它的表達是不一樣的。測試

H = \frac{W + I}{(T+1)^{G}}

其中:優化

  • W:內容質量的數值表達,例如一篇文章質量能夠定義成文章的點贊數,也能夠根據產品須要定義爲其餘
  • I:新內容的初始質量,具體含義後續解釋中會理解
  • G:重力 Gravity,或者說是一個內容變得再也不熱門的速度,重力越大,一個內容刷新的就越快
  • T:時間

能夠看到熱度 H 在這樣的公式中有 4 個變量即 H(W,I,T,G),此公式與 Hacker News、Reddit 相同,只是定義內容質量 W 時用的邏輯不同。3d

1)熱度H與時間T的關係

首先,咱們看一個比較簡單的關係,就是熱度與時間的關係:code

  • W:100
  • I:10
  • G:1.5
  • T:時間
H = \frac{100+10}{(T+1)^{1.5}}

熱度與時間的關係

很清楚,時間越大,熱度越低。cdn

2)熱度H與初始質量I、時間T的關係

  • W:0
  • I:[2, 4, 6]
  • G:1.5
  • T:時間

熱度與初始質量、時間的關係

咱們可以看到,對於不一樣的初始質量 I,內容的初始熱度是不一樣的,在後續的時間衰減中,若是其餘數值不變,那麼初始質量越高則內容熱度越大。blog

3)熱度H與初始質量I、重力G、時間T的關係

  • W:0
  • I:[2, 4, 6]
  • G:[1.5, 1.2, 1.8]
  • T:時間

熱度與初始質量、重力、時間的關係

面對不一樣的重力,即便初始質量高,重力大時其熱度衰減很快。產品

4)熱度H與質量W、初始質量I、重力G、時間T的關係

  • W:[90, 190, 90]
  • I:10
  • G:[1.5, 1.5, 1.8]
  • T:時間

熱度與質量、初始質量、重力、時間的關係

咱們看到三個交點:it

  • AW=90G=1.5I=10的交點

解釋:一個內容質量 90 的內容,在 A 交點,即約 3.64 單位時間以後其熱度低於一個全新的初始熱度爲 10 的內容。io

  • BW=190G=1.5I=10的交點
  • CW=90G=1.8I=10的交點

解釋:一個內容質量 190 的內容,在 6.36 單位時間以後,其熱度低於任意新內容。而一個內容質量爲 90 的內容,若是重力爲 1.8,那麼僅在 2.59 單位時間後其熱度低於任意新內容。社區

咱們能夠看到以下結論:

  1. 初始質量 I 越高,老內容的熱度更快的被最新生產的內容超越
  2. 一個內容的質量 W 越高,此內容熱度高於新內容的時間越長
  3. 重力 G 越高,內容熱度衰減越快,老內容的熱度更快被新生產的內容超越

所以,在肯定的初始質量 I 及重力 G 下,一個內容能夠得到的 W 決定了其熱度及被新內容超越的時間。

5)質量數值W與時間T線性正相關的假設

假設一個內容質量的數值表達與時間正相關,例如咱們用一個文章的點贊量表達其質量,那麼在一個限定的時間裏,其時間越長,點贊量越高:

W(T) = c\times{T}

c 表明了一個新內容得到質量 W 的速度,也就是一個新內容得到點讚的速度,那麼

  • Wc\times{T}
  • I:10
  • G:1.5
  • T:時間
H = \frac{c\times{T}+10}{(T+1)^{1.5}}

其中咱們測試了三個 c 分別是:20、2五、30

當質量與時間線性正相關時,熱度與時間的關係

咱們看到三個交點:

  • AW=20\times{T}I=10的交點
  • BW=25\times{T}I=10的交點
  • CW=30\times{T}I=10的交點

解釋:c 越大,說明單位時間裏一個內容能夠得到的質量越高,也就是說明這個內容自己更受歡迎。對於交點 A 來說,此內容在 1.62 個單位時間後,即便保持着 20\times{T} 增加質量的速度,依然會被一個新內容的熱度超越。而從 C 交點能夠看到,若是其 W 增加速度爲 30\times{T},那麼在 6.46 個單位時間後纔會被新內容的熱度超越。

6)質量數值W與時間T對數正相關的假設

固然上面的假設有一個問題是,一個文章的質量表達很難和時間長期正相關,也就是說,文章存在時間越長,每每後續得到的點贊會下降。所以,咱們能夠假設WT是對數相關的關係:

W(T) = c\times{\log_{d}{(T+1)}}
  • c:得到點讚的速度
  • d:隨着時間遷移,得到點贊速度開始衰減的係數

當質量與時間對數正相關時,熱度與時間的關係

咱們看到三個交點:

  • AW=20\times{\log_{2}{(T+1)}}I=10的交點
  • BW=20\times{\log_{1.5}{(T+1)}}I=10的交點
  • CW=20\times{T}I=10的交點

解釋:對比 AC 咱們能夠看到,由於質量數值的增加隨着時間變少,於是 A 內容更快地被新內容超越。

內容熱度在掘金裏的使用

H = \frac{W + I}{(T+1)^{G}}
  • H:即一個內容的熱度 rankIndexArticle
  • W:即一個內容的 hotIndexArticle 是一個文章閱讀數、評論數、點贊數加權求和的數值
  • I:即一個內容初始的數值 rankIndexUser 是文章做者的影響因子
    • 影響因子與做者自己的歷史掘力值相關
  • G:一個衰減的重力參數
  • T:文章自發布以來的時長

做爲掘金社區,咱們但願將更多好內容帶給讀者,從數值上,咱們但願總和的 W 變高,同時平衡其與 T 之間的關係,即新內容得到的流量,與一個好內容得到流量之間交點的時間長度。

  • c:一篇文章自己的質量表達,多快得到點贊、得到閱讀,即點擊率、點贊率
  • d:點贊率、點擊率隨着文章存在時間是否會衰減,衰減得多塊

說人話:一個得到了 1000 個點贊、10000 個閱讀、100 個評論的內容,在計算規則下什麼狀況會被一篇新文章的熱度超越。而整個社區的熱度計算,是一個動態優化的問題。

不一樣問題下的參數調整

  • 新內容太多,近期熱門的不足
    1. 下降初始數值 I
    2. 下降衰減重力 G
    3. 提升內容質量的加權數值 c
  • 內容都是熱門的,新東西看不到
    1. 提升初始數值 I
    2. 提升衰減重力 G
    3. 下降加權 c
  • 一下子是一個老的熱門的,一下子是一個特別新的
    1. G 較小的同時,I 過大
相關文章
相關標籤/搜索