阅读 2092

计算内容热度的算法解释

定义一个内容的热度

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

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

其中:

  • W:内容质量的数值表达,例如一篇文章质量可以定义成文章的点赞数,也可以根据产品需要定义为其他
  • I:新内容的初始质量,具体含义后续解释中会理解
  • G:重力 Gravity,或者说是一个内容变得不再热门的速度,重力越大,一个内容刷新的就越快
  • T:时间

可以看到热度 H 在这样的公式中有 4 个变量即 H(W,I,T,G),此公式与 Hacker News、Reddit 相同,只是定义内容质量 W 时用的逻辑不一样。

1)热度H与时间T的关系

首先,我们看一个比较简单的关系,就是热度与时间的关系:

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

热度与时间的关系

很清楚,时间越大,热度越低。

2)热度H与初始质量I、时间T的关系

  • W:0
  • I:[2, 4, 6]
  • G:1.5
  • T:时间

热度与初始质量、时间的关系

我们能够看到,对于不同的初始质量 I,内容的初始热度是不同的,在后续的时间衰减中,如果其他数值不变,那么初始质量越高则内容热度越大。

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:时间

热度与质量、初始质量、重力、时间的关系

我们看到三个交点:

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

解释:一个内容质量 90 的内容,在 A 交点,即约 3.64 单位时间之后其热度低于一个全新的初始热度为 10 的内容。

  • 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、25、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 过大
关注下面的标签,发现更多相似文章
评论