2011-07-08 17 views
2

私のウェブサイトで扱うスポーツのためのEloベースのランキングシステムを実装しようとしています。大規模なグループ競技のEloシステムの詳細

競合相手は数千人で、各競技会では、50〜500人が競技に出かけることがあります。最速の男が勝つ。

私の最初の考えは、50人のレースが50 * 49/2 = 1225対1対1のマッチとして扱われるということでした。

これらの比較はすべて一度に行い、最後に各競合他社の評価を調整します。私。もし誰かの評価が1600であれば、私が行う49回の比較のすべてが続き、最後のすべての変更の合計によって調整されます。これは正しいとは思わない...これは私がやるべきことなのだろうか?

私の問題は、(通常は強い)競技者がひどい一日(例えば負傷)した場合、彼は突然通常打ち負かす40人以上の人に殴られる可能性があるということです。彼らはすべて彼よりも格付けが低く、彼の格付けはPUMMELEDになります。推奨されるK因子32の場合、1つのイベントで数千ポイントの変動が見られます... K因子を大幅に減らすと(例えば1にすると)良いものになりますが、これには欠陥があると感じられます。

調整のすべてを合計するのではなく、何らかの方法で平均化する必要がありますか?または、極端な値をとっていますか?ここで私の頭を少し歪めてしまった!

ありがとうございました。ありがとうございます。

+0

ここでELOを使うのは悪い考えです。 – Svante

+0

@svante - 私はそれで大丈夫です!私が使用しているべきことに関するフィードバックを与えるためのケア? – Codemonkey

答えて

0

50のレースを1対1のマッチとして扱うのではなく、プレイヤー対マックス(他のすべてのプレーヤー)の50対1マッチとして扱うことでより良い結果が得られると思います。 10人の対戦相手に対抗する理由がない限り、10人の対戦相手の中で最高のものを勝ち取るのは、勝者を取るというシナリオではそれ以上難しくありませんか?

+0

しかし、Eloでは勝者をランクアップし、敗者はランクダウンします。全員を勝者と照合すると、勝者のランクが50倍に上がることになりますが、敗者のそれぞれは一度ランクが下がるだけです。勝利した人はランキングを上回り、下の2位はわずかな変化しか見ませんか? – Codemonkey

+0

そうですね、50人のプレイヤーのそれぞれのスコアは、スコアと最大(他のプレイヤー)の両方に基づいて上または下にランク付けされます。勝者と各敗者は、各レース後に一度だけぶつかります。 – gordy

+0

ああ、申し訳ありませんが、あなたは2位に対して勝者を獲得することはできませんでした。私はそれを行って、それがどうやってパンが出るか見る。とにかく私はTrueSkillを使用して終わるつもりだと思いますが、最初に気分を味わうためにはeloを使うのが良いでしょうし、私はTrueSkillで非常に似た問題があったと思います。私は最悪の結果を「除外」する必要はないと願っています。誰かが競技会の90%を勝ち、他の10%で終わっていることは珍しいことではありません。うまくいけば、アルゴーはそれらの負のブリップにあまり重視しませんでしょうか? – Codemonkey

0

Eloの背後にある数学を見てみるとよいでしょう。 Eloの背後にあるアイデアは、すべてのプレイヤーが正規分布(または私はそれが現在使用されているように、論理的に分布していると信じている)ランダム変数で表される所与の「プレイ強度」を持ち、その変数を推定しようとします。 Eloは、他のプレイヤーよりも200ポイント高いEloのプレイヤーがゲームで期待される結果(.1は「勝ち」、0.5は「ドロー」、0は「ロス」)を持つように設定されています。 Elo計算は、プレーヤーが他のプレーヤーに対してどのように実行したかについての観察可能な振る舞いに基づいて隠れ変数を調整するように設計されています。

あなたがマルチウェイトーナメントを行っているとすれば、パラメータ推定モデルは異なると思われます。私は数学者や統計家ではありませんが、1対1トーナメントで行われるように、マルチウェイトーナメントからパラメータ推定を行うには何らかの方法が必要なようです。このアプローチは理論的には理想的ですが、残念ながら私はこれらの線に沿って具体的に示唆するものはありません。

関連する問題