6

私は Web サイトに単純なアップ/ダウン投票システムを実装し、個々の投票、投票時間、および一意のユーザー iD (ハッシュされた IP) を追跡しています。

私の質問は、投票の割合または合計を計算する方法ではありませんが、投票に基づいて良いスコアを決定するための優れたアルゴリズムは何ですか?

単純に賛成票を集計するだけでなく、純粋な投票率でソートすることは受け入れられないと思います。

次の例を検討してください。

  • 画像 A: 賛成 4 票、反対 1 票
  • 画像 B: 賛成 5 票、反対 4 票
  • 画像 C: 賛成 1 票、反対 0 票

理想的なシステムは、最初に A を配置し、おそらくその後に B、次に C を配置します。

純粋なパーセンテージのシナリオでは、順序は C > A > B. (誤り) 純粋な投票数のシナリオでは、順序は B > A > C. (誤り)

スコアに対するシステムの信頼度に基づいた、やや「ハイブリッド」なアルゴリズムのアイデアがあります。おそらく次のようなものです。

// (if totalvotes > 0, else score = 0)
score = 1 - ((downvotes+1 / totalvotes+1) * sqrt(1 / totalvotes))

ただし、今から日没までアルゴリズムを微調整する前に、私がまったく知らない、本当に明確に定義されたアルゴリズムが既に存在するかどうかをコミュニティに尋ねたいと思っていました.

各投票の日付データも持っていますが、サイトのコンテンツはあまり時間に敏感ではないので、「何がホットか」でソートすることはまったく気にしません.

4

2 に答える 2

2

投票の平均による並べ替えはあまり良くありません。

代わりに、この記事で説明したように、肯定的な評価の割合と少数の観察による不確実性とのバランスを取ることで、スコアをより適切に表現できます。

以下の記事では、多くの人気のある Web サイトが犯すのと同じ過ちを犯さない方法について説明します。(Amazon、urbandictionary など)

http://evanmiller.org/how-not-to-sort-by-average-rating.html

お役に立てれば!

于 2012-04-22T18:14:47.527 に答える
0

私はそれがあなたの質問に答えないことを知っていますが、私はいくつかの式を見つけようとして楽しみのために3分を費やしました...ただそれをチェックしてください:)列は賛成票であり、Bは反対票です:)

=(LN((A1+1)/(A1+B1+1))+1)*LN(A1)

5   3       0.956866995
4   1       1.133543015
5   4       0.787295787
1   0       0
6   4       0.981910844
2   8       -0.207447157
6   5       0.826007385
3   3       0.483811507
4   0       1.386294361
5   0       1.609437912
6   1       1.552503332
5   2       1.146431478
100 100     -3.020151034
10  10      0.813671022
于 2012-04-22T17:58:01.510 に答える