计算内容热度的算法解释

定义一个内容的热度

什么样的一个内容是热门的呢?这实际上是一个相对的概念,面对不一样的需求,它的表达是不一样的。测试

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 过大
相关文章
相关标签/搜索