社交网络查询的幂律曲线拟合

3

Twitter最近宣布,你可以通过输入某个Twitter用户的关注者数量到下面的公式中,来近似计算该用户的排名:

exp($a + $b * log(follower_count))

其中$a=21,$b=-1.1

这显然比按照给定用户的关注者数量对整个用户列表进行排序要高效得多。

如果你从另一个社交网站获得了类似的数据集,你该如何推导出适合该数据集的$a和$b值?基本上是某些频率列表的分布被假定为幂律。


请注意,这不是“对数正态”所指的意思... - Oliver Charlesworth
对数/对数比例尺上的线性是我真正想表达的意思。 - ʞɔıu
2个回答

6

你有以下模型:

y = exp(a + b.log(x))

这相当于:

log(y) = a + b.log(x)

因此,如果您对数据集进行对数处理,则会得到一个线性模型,因此您可以使用线性回归来确定最佳拟合值ab
然而,这一切对我来说都听起来毫无意义。谁能说某个社交网络站点使用这种关系来确定用户排名呢?

+1,他们不这样做,Twitter也从未表示过他们这样做。这只是通过关注者数量来近似您的排名,而不是真正的“排名”。 - Kirk Broadhurst
@Kirk:的确,我最初误解了OP所说的“排名”的意思。我想反问的问题是:谁能说出给定社交网站的分布遵循这种关系呢? - Oliver Charlesworth
抱歉,我误解了你的意思!我猜想这假设分布是对数正态或遵循“幂律”,这可能是一个相当合理但完全不可靠的假设。 - Kirk Broadhurst
这是关于我下面的答案。我知道这不是最优雅的解决方案,但它非常实用。主要优点是Excel也允许您使用不同的算法来改善Excel求解器插件中的拟合。顺便说一下,如果您的数据集太大,可以通过对数据进行随机抽样来减少它。 - luiscolorado

1

您可以使用名为“Solver”的 Microsoft Excel 插件。它已包含在 Excel 中,但不一定默认安装。请在您的 Excel 版本中查找“插件”和“solver”,并加载它。

安装插件后,请执行以下操作:

  1. 创建一个新的工作表。在A列中,您可以放置每个人的ID(可选)。

  2. B列是关注者的数量。

  3. 如果数据没有排序,请使用B列进行排序。

  4. 在C列中放置排名(例如1、2、3等)

  5. 在单元格D1中放置值21,在单元格E1中放置值-1.1。这些是$A和$B的Twitter值。它们是我们的基准值。它们可能会改变。

  6. 在单元格D2中放置类似于这样的公式:=exp($E$1+$F$1*log(B2))

  7. 将D2单元格的公式复制到数据末尾。

  8. 在单元格E2中放置一个公式来比较实际排名与公式结果之间的差异(即方差)。例如,=sqrt(c2*c2+d2*d2)。实际值和预测值越接近,该值就越趋近于0。

  9. 将单元格E2复制到数据末尾。

  10. 在数据底部,在E列中求和方差。例如,假设您的数据有10,000个值。在单元格E10001中输入=sum(e2:e10000)。

  11. 转到“数据”菜单,并查找“求解器”菜单位置。该位置可能因您的Excel版本而异。使用“帮助”功能搜索目标寻求。

  12. 按照帮助中的说明(我现在必须离开)使用求解器插件。显然,可变单元格是D1和E1,目标是使E10001(方差之和)尽可能接近零。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接