4

この質問は、現時点ではプログラミングよりも論理的です.使用する必要があるアルゴリズムを理解したら、それを実装する方法を検討します。

データベース内のアイテムのリストがあり、それらが正しいかどうかを判断するためにユーザーによって投票される必要があります。目的は、アイテム情報の信頼性を示すために、各アイテムに % を提供することです。

考慮すべきいくつかの基準があります..

  • 投票は絶対的なものではありません。各ユーザーの投票の重みはカルマによって異なります。
  • ユーザーのカルマは、投票に基づいて計算する必要があります。たとえば、ユーザーがアイテムを送信し、他のユーザーがそれが正しいことを確認するために投票した場合、そのユーザーのカルマは増加します。高いカルマを持つ他のユーザーが投票したのと同じ方向にユーザーがアイテムに投票した場合にも、カルマが与えられる可能性があります。カルマの高い​​他のユーザーと反対の方向に投票すると、その投票は間違っていると見なされ、アイテムのスコアは低下しますが、カルマ レベルも低下し、将来の投票での影響力が低下します。
  • ユーザーは、賛成票だけでなく反対票も投じることができます。
  • アイテムの計算されたスコアは、アイテムの年齢を考慮に入れる必要があります (時間の経過とともに、アイテムの信頼性が低下する可能性があるため、スコアは減少します)。

これを行うための最適なアルゴリズムに関する推奨事項、またはプログラミング言語 (PHP など) でこれを実装する方法に関するヒントはありますか?

4

2 に答える 2

7

これを最初に読んでください:http://www.evanmiller.org/how-not-to-sort-by-average-rating.html

これは、ベルヌーイパラメーターのウィルソンスコア信頼区間として知られる数学的概念の概要です。

この記事は、ユーザーの投票を使用して、実際に有用で数学的に適切なスコアを計算する方法についての優れた入門書です。これを行うと、あなたはすでにAmazon.comよりも進んでいます

次に、おそらくその式を少し調整する必要があると思います。その式では、賛成票の割合にpを使用します。その投票を行ったユーザーのカルマを反映するために、 pの式を更新する必要がある場合があります。

最後に、年齢を考慮に入れるために、数式の結果に年齢乗数を掛けます。たとえば、結果の関連性を1日ごとに1%低くしたい場合は、0.99^age_in_daysを掛けます。

一言で言えば、それは私がたどる道です。お役に立てれば。

于 2010-10-22T10:02:41.563 に答える
1

私はあなたの計算のためにあなたが彼らの投票の時に以前の有権者が持っていたカルマだけを考慮し、彼らの現在のカルマ(彼らから変わったかもしれない)ではないとあなたが考えるアイテムのカルマだけを考慮すると仮定しますすべてのアイテムとすべてのユーザーが関与します。
別の仮定は、カルマは確かに絶対的ですが、投票はビューよりも頻度が低いため、新しい投票が行われるときに再計算されるということです。
すべてのユーザーのすべての投票、投票時に持っていたカルマ、および各アイテムの投票方向を保存します。
最終的な仮定:投票直後ではなく、特定の期間の後に、提出者にカルマを追加します。すぐに追加すると、サブミッターのカルマが頻繁に上下し、システムに大きなジッターが発生します。新しい投票を取得した場合、最初にアイテムの新しいカルマを計算し、次にアイテムの絶対的なカルマの変更に応じてユーザーにカルマを追加します。

アイテムのカルマは、すべての投票ユーザーのカルマの合計です。たとえば、3つの投票があります。1つは50カルマ、1つは150カルマ、もう1つは30カルマです。これにより、合計カルマは170になります。したがって、アイテムのカルマは+170になります。
新しいユーザーが投票したら、新しい投票を考慮してアイテムのカルマを再計算します。(前の例)新しいユーザーは10カルマで投票します。アイテムの新しいカルマは+180です。アイテムの古いカルマと新しいカルマの違いは、ユーザーが取得するカルマです。(前の例)ユーザーの投票によってアイテムのカルマが+10変更されたため、ユーザーは+10カルマを取得します(将来の投票用)。このアイデアの欠点は、高カルマのユーザーが新しいカルマを非常に速く取得することです。したがって、適切にスケーリングするには、ここにも制限ファクター(対数など)を追加する必要があります。アイテムの年齢も考慮したいので、獲得したカルマポイントに年齢に応じた係数を掛けることができます(たとえば、アイテムが5日より古い場合、ユーザーはカルマをまったく取得しません:5日-投票までの期間に変更されたカルマ値を掛けたもの)。

もちろん、これはあなたが実装したいシステムの非常に漠然としたドラフトであり、それがあなたの考えに合うかどうかはわかりません。おそらく、他の要素も追加するように変更できます。
関連性の割合は次のように決定できます:(絶対正のカルマ/絶対負のカルマ):1未満の値は、正のカルマよりも負のカルマが多く、その逆も同様です。しかし、信頼できる%値を得るには、私の意見でも比較するための値が必要です(定数であるか、そうでない場合でも計算されます)。

于 2010-10-22T10:01:01.443 に答える