用户举报比例报告评分

用户标记比例报告中的分数看起来有点令人困惑。:slightly_smiling_face:

例如:

  • 仅有“不同意”标记的用户,其得分高于没有标记的用户,也高于“同意”和“不同意”数量相近的用户。
  • 例如,拥有 100 个“不同意”和 100 个“同意”标记的用户,其得分与没有标记的用户完全相同,均为 0。

这个分数背后的意图是什么?(cc: @j.jaffeux)


当前每个分数的计算公式如下:

if disagreed == 0
  agreed * agreed
else
  ((1 - (agreed / disagreed)) * (disagreed - agreed)).to_i

来源:app/models/reports/user_flagging_ratio.rb

以下是“同意”和“不同意”标记数量分别为 0、5、10 和 15 时的分数示例:

   |   0   5   10   15  agreed
------------------------
0  |   0  25  100  225
   |
5  |   5   0    5   20
   |
10 |  10   2    0    2
   |
15 |  15   6    1    0
   |
disagreed

如果你将该公式输入到 Wolfram Alpha 中,结果如下所示。:wink:(其中 x 代表“同意”,y 代表“不同意”)

编辑:

该算法的最新更改在此处提及:User_flagging_ratio_count - #8 by j.jaffeux

3 个赞

我使用这份报告的具体场景是识别最符合或最不符合社区管理要求的用户。从这个角度来看,15/0 和 0/15 这两种情况因不同原因同样重要,如果在这两种情况下分别给出 255 或 -255 的分数,我认为会使情况更加精确。但我不确定算法如何在同时考虑举报数量的权重的情况下实现这一点,而举报数量同样重要。

3 个赞

哇,这意味着在保持 agreed 数值不变的情况下,随着 disagreed 数值增加,得分会越来越高(当 disagreed > agreed 时)。

一个更合理、更直接的公式可能是:

(agreed * agreed) - (disagreed * disagreed)

也就是说,agreed 总是会让得分更高,而 disagreed 总是会让得分更低。我不确定是否有必要让公式比这更复杂,但这只是我的个人观点(如果得分可以为负数的话)。

不过,我觉得这样也可以。考虑到这两个值(一个应增加得分,另一个应降低得分)是相等的,这会有什么问题吗?

1 个赞

大部分内容并非我编写,我主要是修复了一个导致在“不同意”数量多于“同意”数量时无法显示记录的 bug。因此,我不太确定大部分逻辑。@eviltrout

我使用了“同意 * 同意”的计算方式,因为我觉得这样可以突出显示那些我们从未表示过不同意的用户。但这属于边缘情况,大多数用户不会落入这一类别,所以我们可能应该优化另一个分支。

欢迎随时修正该公式,以更好地处理它未考虑到的任何特定情况。

1 个赞

你应该联系一下 @eviltrout

1 个赞

我在这里非常乐意接受建议。您有什么替代建议吗?

2 个赞