良いアルゴリズムの推奨をお探しです。複数のソースを使用して成果を標準化する
私はユーザーと業績があります。ユーザーはAchievementsを作成し、他のユーザーに提供します。各達成度には、ユーザーが指定するポイント値が関連付けられます。ユーザーの合計得点は、すべての成果の合計です。
基本的に:
Achievement :
owner = Alias
points = int
User :
achievements = list(Achievement)
def points() :
sum([achievements.points])
[OK]を、ので、このシステムは明らかに非常にゲームが可能です。あなたは多くのアカウントを作り、お互いに多くの成果をあげることができます。ポイントの値をユーザーが指定したものとは異なるものにスケールすることで、これを少し減らそうとしています。
- すべてのユーザーが正直であると仮定しても、それほど違いはありません。ポイント値を正規化するにはどうすればよいですか? 1人のユーザーが簡単な成果ごとに5ポイントを与え、別のユーザーが10ポイントを与えます。どのようにして1つの値に正規化できますか?目標は、ポイントが難易度に比例する分布になります。
- ポイント値を判断できないユーザーがいる場合は、達成したユーザーの数に基づいて難易度をどのように把握できますか?
- ユーザーは大部分が分割されたグループに分割され、1人のユーザーが他のグループ全体に対して成果を出すと仮定します。これは、前の2つのアルゴリズムに役立ちますか?たとえば、ユーザーAは奇数で終了するユーザーにのみ成果を与え、ユーザーBは偶数で終了するユーザーに成果を与えます。
- 誰もが悪意のある人であれば、ユーザーがポイント値を過大に膨らませることができなくなる可能性はどれくらいありますか?
注:与えるユーザーの品質は、彼が受けたどのように多くの実績に関連するどのような方法ではありません。多くの恩人は、何も受け取っていないボットですが、特定のアクションを実行するとユーザーに自動的に報酬を与えます。
私の現在の計画は、このようなものです。私は私からの成果を得ている10ポイント/人の割り当てを持っています。合計55人に10の業績を出すと、私の配分は550になります。そして、これはそれを持っている人の数に基づいて各業績に与えられます。分布が[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
人で、各達成度を得た場合、ポイント値は[50, 25, 16.6, 12.5, 10, 8.3, 7.1, 6.25, 5.5, 5]
になります。
私のアプローチや代替案に関する問題は、歓迎され、感謝しています。また、私が逃したと考えることができる他の事例を投稿し、それらをリストに追加します。ありがとう!
ありがとうございます。私はページランクのアプローチをしたがっているだろうが、多くのユーザーは実際には成果を上げていない単なる「ボット」である。人々はこれらのボットを作りますが、「10ポイント」が容易さを意味するものに常に同意するわけではありません。私はむしろ、達成度に関する明示的な入札を避け、暗黙の特性を値にするようにしたいと思います。これに照らして、私のアルゴリズムは「最良の」方法ですか? –
あなたの説明で私は混乱しています。すなわち、「私には10点/人の割り当てがあり、私から達成しました」と言うとき。あなた、ウェブサイトの所有者を指す「私」、またはウェブサイト上のアカウントを持つ人を指していますか? –
申し訳ありませんが、*私*は達成を与える人でした。ウェブサイトの誰でもそれらを与えることができます。ポストの言い換え。 –