ユーザーフラグ付け比率レポートのスコア

ユーザーフラグ比率レポートのスコアが少しわかりにくくなっているようです。 :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  同意
------------------------
0  |   0  25  100  225
   |
5  |   5   0    5   20
   |
10 |  10   2    0    2
   |
15 |  15   6    1    0
   |
反対

この計算式を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

大部分は私が書いたわけではありません。主に、同意数より不同意数が多い場合に記録が表示されなくなるバグを修正しました。そのため、ロジックの大部分については確信が持てません。@eviltrout

「同意 × 同意」の計算を行ったのは、一度も不同意をしたことがないユーザーを強調するのが興味深いと思ったからです。しかし、これは極端なケースであり、ほとんどのユーザーはこのカテゴリには入りません。そのため、おそらくもう一方の分岐を最適化するべきでしょう。

この計算式が考慮していない特定のケースをより適切に処理できるよう、式を修正してください。

「いいね!」 1

@eviltrout に確認することをお勧めします。

「いいね!」 1

私はここで提案に大歓迎です。代わりに何を提案されますか?

「いいね!」 2