StackExchange 问题的“趣味性”功能

机器算法验证 数据挖掘 预测模型
2022-02-11 04:11:48

我正在尝试为 StackExchange 站点组合一个数据挖掘包,特别是,我一直在尝试确定“最有趣”的问题。我想使用问题分数,但要消除由于视图数量而产生的偏差,但我不知道如何严格地处理这个问题。

在理想世界中,我可以通过计算对问题进行排序vn, 在哪里v是总票数和n是观看次数。毕竟,它将衡量对问题投赞成票的人的百分比,减去对问题投反对票的人的百分比。

不幸的是,投票模式要复杂得多。投票倾向于“平稳”到一定程度,这会大大低估广受欢迎的问题。在实践中,一个有 1 次浏览和 1 次赞成的问题肯定会比任何其他有 10,000 次浏览但少于 10,000 票的问题得分和排序更高。

我目前正在使用vlogn+1作为一个经验公式,但我想准确一点。我怎样才能以数学上的严谨性来解决这个问题?

为了解决一些评论,我将尝试以更好的方式重述问题:

假设我有一个问题v0总票数和n0意见。我希望能够估计总票数v1当视图达到n1.

这样,我可以简单地选择一个标称值n1并根据预期排序所有问题v1全部的。


我在 SO datadump 上创建了两个查询,以更好地显示我正在谈论的效果:

按分数划分的平均观看次数

结果:

按分数查看

观看次数平均得分(100 次观看次数)

结果:

按浏览量评分


两个公式比较

结果,不确定是否更直更好:(vn穿蓝色衣服,vlogn+1红色的)

公式

2个回答

人们可能会将一个有趣的问题定义为在考虑到视图数量的情况下获得了相对较多的选票。为此,您可以创建一条基线曲线,以反映给定视图的预期票数。比基线吸引更多选票的曲线被认为特别有趣。

要构建基线,您可能需要计算每 100 个视图箱的投票数中位数。此外,您可以计算中值绝对偏差 (MAD) 作为每个 bin 标准偏差的稳健度量。那么,“兴趣度”可以计算为

interestingness(votes,views) = (votes-baselineVotes(views))/baselineMAD(views) 

这是我的理论。我认为有两种问题:那些主要留在 SE 内部的问题(通常视图较少),以及那些因为从其他地方链接到外部而被外部人员查看的问题(通常有更多视图)。

对于大部分留在 SE 中的问题,投票是衡量有趣问题的一个很好的衡量标准。这是投票的重点。

当一个问题链接到网站外部时,投票就不再有意义了。一些链接站点的 SE 成员可能很少,而其他链接站点的 SE 成员可能更多。这些问题的投票数量的差异可能很高(正如您的分数与视图图所证明的那样,曲线的右侧开花了)。这些问题会有更多的观点,观点可能是有趣问题的更好指标。或者一个更大的社区碰巧发现更有趣的问题。在这种情况下有很多变数,我认为值得尝试找到更多信息来区分这些情况。SE会公开转介信息吗?