本月新用户算法问题

你好,

我是 Discourse 论坛的新用户,第一个月结束时获得了 930 多个赞。当月新用户榜单的持有者是两个人,一个大约有 40 个赞,另一个有 60 个赞。我查看了本网站早期帖子中提供的代码,这种情况本不应该发生。仅看我的点赞数,我使用每个信任级别点赞分配的值进行了计算,仅我的最高点赞数就达到了 360 左右。然后,我对获得 60 个赞的用户进行了计算,我将该数字乘以三——即使他被管理员点赞了 60 次,他也远未达到 360。这里发生了什么?我们都在 11 月中旬前后几天加入的……我还有什么没考虑到的?我不是想听起来很苦涩,但这确实令人失望/困惑。到目前为止,没有人能给我答案,除了“当月新用户是骗局”。所以任何信息都会有帮助,但请记住,我已经看过代码了。谢谢!

3 个赞

我看了代码。点赞不仅根据资历加权,而且总数还根据点赞你帖子的独立账户数量进行划分。我想这是一种衡量广泛受欢迎程度的指标。

编辑:哎呀,也许它是按帖子数量而不是账户数量划分的——请看下面的讨论。

4 个赞

我也考虑到了这一点。
这真的很奇怪,似乎是这样。

所以是不同的账号?嗯。这说得通……我无法获取相关数据,但我仍然觉得很奇怪。

不过,还是谢谢你的帮助!

您看过 Dataexplorer 了吗?它内置于核心中,并且可能已经有一个用于查询的脚本。

至于修改“每月新用户”,我不确定有哪些选项。但是,我相信您可以在站点设置中修改每个 TL 的权重。

还没有。也许可以试试。
谢谢!

1 个赞

这可能有助于查找人们共享的自定义项。

2 个赞

只有论坛管理员才能使用 Date Explorer,因此您无法作为用户使用它来获取数据。

您写了很多关于总点赞数的内容,但没有提及帖子数。从点赞数计算出的分数,根据用户的信任级别加权,然后除以您发布的帖子总数:

所以,也许您收到的点赞数更多,但发布的帖子也比获得该徽章的用户更频繁。

7 个赞

这解释了很多。谢谢!
(但没什么道理。在我看来,发布更多内容应该被视为对社区的贡献,不应损害分数。)

什么对社区的贡献最大?是许多帖子因缺乏吸引力而获得的点赞很少,还是少数能引起用户兴趣并获得大量点赞的帖子?

(我意识到点赞的使用在不同社区有所不同,有些社区的普通用户看不到点赞的价值,或者这并非他们的习惯……)

2 个赞

我同意,我大部分时候都明白你的观点,但我认为在我的论坛上情况有所不同。
大多数帖子很少能获得一两个赞,而且“月度新用户”并不考虑解决方案,我认为这可能不错(但不确定是否是插件)或者甚至可以不自动授予徽章,而是由版主或管理员来选择。这样徽章就能更贴合每个论坛的实际情况。
我想问一下,你认为在两周内获得 1.1K 个赞、700 篇左右帖子和 60 个解决方案算是在论坛上有帮助,还是在(大致相同的时间内)获得 60 个赞、40 篇帖子更符合“月度新用户”的标准?
顺便说一句,节日快乐!

2 个赞

这是一个非常好的观点,我同意你目前的算法可能过于简单。我认为一个好的第一步是使帖子因子非线性,例如

SUM(...) / SQRT(5 + COUNT(DISTINCT p.id))::float AS score

或者甚至

LN(1 + SUM(CASE ... END)) / (5 + COUNT(DISTINCT p.id))::float AS score

4 个赞

一种有利于更受欢迎帖子的方法是计算点赞数的平方和,然后除以帖子数量。

我确实想知道我错误的看法是否可能具有价值:考虑到点赞账户的数量。例如,这可能有助于对抗小团体或投票团。

顺便说一句,我注意到在过去 12 个月里,我的论坛只选出了 13 位“每月新用户”徽章的获胜者,而可能选出的有 24 位。

2 个赞

是的,我同意。这可能是一个好主意。

能用英语解释一下吗?我几乎看不懂新的月度用户代码,哈哈。

有没有信任等级更高的用户可以把标题编辑成“月度新用户算法问题”之类的?这显然不是一个 bug。只是有点奇怪。
谢谢 @Moin

2 个赞

“问题”在于分数(基本上)是

$$\n\text{Score} = \frac{\text{# Likes}}{\text{# Posts}}\n$$

正如你已经注意到的,这可能不是期望的情况。如果他们的平均点赞数相同,那么大量的帖子应该比少量的帖子评分更高。

因此,为了“解决”这个问题,我们应该更改函数:当帖子数量增加时,分母的增长应该“慢一些”。我们可以通过应用一个函数来解决这个问题。通常的候选函数是 SQRT 和 LN,因为它们是递增的但增长速度低于线性:

因此,通过将除数更改为当帖子数量增加时增长速度“不那么快”的函数,分数会“更高”(毕竟,除以一个较小的数会得到一个较大的结果)。将公式更改为对除数应用 SQRT 或 LN 可以得到期望的结果(“如果他们的平均点赞数相同,那么大量的帖子应该比少量的帖子评分更高。”)

第二个公式试图避免相反的不期望的效果:少量被大量点赞的帖子也不应该能够主导分数。

3 个赞

如果你是管理员,可以进入站点设置并更改权重因子以使它们趋于平缓。

例如,可以更改信任级别和员工的权重。您可以更改权重,以便无论信任级别或是否为员工,点赞的权重都将相等,而不是随着职位而增加。

我不是管理员,但还是谢谢你。
看来你每天都能学到新东西 :grinning:

谢谢你的解释!这是一个很棒的解决方案。真希望我的论坛也能有这个功能……

2 个赞

在大多数情况下,事实并非如此。按照这个逻辑,真正表明您的帖子是否有用的信号恰恰是收到的点赞数量。如果您发布了很多内容,但无法维持较高的“点赞数/帖子数”比例,这表明您可能只是在闲聊,或者在问一些本可以通过搜索找到答案的问题。

例如,您的问题已经在以下链接中讨论过:

2 个赞

好的。我很抱歉提出这个问题,但我不同意。不同的论坛对“点赞”的使用方式不同,我认为 @RGJ 发布的解决方案对我的情况会有帮助。并非所有论坛都倾向于喜欢每一条帖子,因为我们通常只在帖子能提升我们并与我们所说的话一致时才倾向于点赞。对大多数用户来说,仅仅是“正确”并不足以获得点赞。我会查看你提供的链接,但我之前没有看到。我认为没有必要发表与讨论早期我已回复过的相同观点。我们能求同存异吗?

但请仔细想想。如果你真的乐于助人,那么你发帖越多越好。我认为徽章就应该关于这一点。
在你链接的帖子中,你可能在数据方面是正确的,但积极参与社区不仅仅是数字的问题。我之前说过,如果我只在正确的主题上发表了一次正确的言论,然后就完全不活跃了,我也可能赢得这个徽章。这是一个不好的漏洞。

确实如此。

所以,按照目前的公式,一个创建了单个帖子“我放弃了,这个论坛太糟糕了”的用户,如果获得了 20 个点赞,他的得分将高于一个创建了 60 个有帮助的帖子,总共获得 200 个点赞的用户。

(对我来说)这似乎不太对。

4 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.