私は 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))
ただし、今から日没までアルゴリズムを微調整する前に、私がまったく知らない、本当に明確に定義されたアルゴリズムが既に存在するかどうかをコミュニティに尋ねたいと思っていました.
各投票の日付データも持っていますが、サイトのコンテンツはあまり時間に敏感ではないので、「何がホットか」でソートすることはまったく気にしません.