私はここで見つけることができる標準のELO実装を開発しましたが、私が遭遇している問題は、私のプレイヤーが「シーズン」で10〜40ゲームしか持てないことです。私の最初のシーズンは既に完了しているので(ゲームのOWNレーティングシステムを開始したばかりです)、ELOレーティングのランクは、または少なくともそれに非常に近いはずです。私の問題は、その基本アルゴリズムを実装した後、かなり離れたいくつかの外れ値があることです。
私は10〜40ゲームしかないので、この状況を改善するために最初に考えたのは、このプロセスの周りにループを実装し、1つのサイクルから最終結果のELOレーティングを取得し、それを次のサイクルの開始点として使用することでした(各個人について)プレーヤー)。次に、前のサイクルから現在のサイクルまでのELO定格の平均または最大偏差がX以下になるまで、これらのサイクルを繰り返します。これは、いくつかの大きな外れ値を解決するのに役立ちました。まだ気に入らない小さな外れ値がまだいくつかあります...
例として、私は7つのディビジョンを持っています。ディビジョン1の場合、ELOに基づいて#1にランク付けされる男は5位にランクされ、ディビジョン2の場合、1位にランクされる男は3位になります。これらの種類の外れ値を除いて、各部門のトップ10程度は実際にはかなり近いです。
アルゴリズムを変更するにはどうすればよいですか?または外れ値を試し、減らすためにどのようなアプローチを取ることができますか?
サイドノート#1。ディビジョン1の場合、#1であるはずの男が最終的に#5になりますが、実際には、他のレーティングシステムによってシーズン全体で#1にランクされています。その計算方法がわからないだけです(計算されない可能性があり、それに基づいている可能性があります。xプレーヤーがこれでいいので、彼は1位にランクされています)。
サイドノート#2。アルゴリズムを変更しました。私は、勝利/損失がどれほど支配的であるかによって、勝利/損失を「重み付け」したいと考えています。プレーヤーAがプレーヤーBに20対0で勝った場合、特にそれらのレーティングが非常に近い場合に、加重を大きくしますが、レーティングがさらに離れている場合(aがすでにBよりも大きい場合)、ELOの変更はそもそも彼らが最初に勝つと予想されていたからです。したがって、私がしたことは、元の式が使用するようにk係数/値400を使用する代わりに、に変更しました100 + ((score difference) * 2)
。したがって、最大k係数は140になります(20-0が最大の勝利で、2を掛けて100に加算されます)。
ウェイト結果を含め、それらの外れ値の一部を修正するために、他にどのような戦略を実装できますか?
目の前にデータがない場合(すべてが家にある)、シナリオをまとめてみます...
ディビジョンI
#1 Elo Rating of 2250
#2 Elo Rating of 2200
#3 Elo rating of 2190
#4 Elo rating of 2175
#5 Elo rating of 2170
トーナメントで勝つために#5の男が#1を打ち負かしただけで、彼の "作品群"は#1の男よりも完全であるように見えます(別名彼は対戦し、#1の男よりも強い対戦相手を打ちました)。多分それは、「加重」kファクターがこれを捨てているためです。#5の勝ちが2〜5ポイントしかなかったためです。一方、#1勝はより高いマージン、たとえば5〜10ポイントでした。
たぶん、計算された結果を実際の結果に近づけることができるかどうかを確認するために、「重み付けされた」k係数をいじる必要があるだけかもしれません...