履歴評価

問題の声明



コンテキスト:さまざまなレベルのプレイヤーが十分にいるチェストーナメントがあります。

決定が下されました。プレーヤーを明確に定義されたグループに分割せず(お互いを知りません、誰をどこに置くかは不明です)、トーナメントを「離陸」させません(多くの新人がいます。最初のゲームの後に飛び立つのはjust辱です)。 多かれ少なかれ(手動で)ほぼ同じレベルのパートナーの選択に対応します。



目的:トーナメントの結果に応じて評価システムを作成します。 「オンザフライ」でプレイしていないため、エンディングはありません。 雑多なプレーヤーのために、ポイントの数は重要ではありません。 つまり、レーティングシステムは、最も弱いプレーヤーの勝利または最も強いプレーヤーの敗北が実質的にレーティングに影響しないようにする必要があります。



理論



最尤アルゴリズムを選択しました。ゲームの可能な結果のそれぞれの確率を2人のプレーヤーの評価の関数として決定する場合、発生した各結果の確率を計算できます。 そして、これらの確率を掛け合わせて、トーナメント全体の確率を取得します。 次に、すべてのプレイヤーの最も可能性の高い評価を得るために、いくつかの変数のこの関数を「ちょうど」最大化する必要があります。



プログラミング部分のみに関心がある場合は、次の2つの段落をスキップできます。 それらの本質は、確率関数の選択と較正に要約されます-プログラマーは、これらの関数をデータとして想定できます。 数学のオタクにとって、関数自体を掘り下げることは確かに興味深いでしょう。



機能選択


基礎研究を行うつもりはないため、確率関数は、実装の単純さと最小尤度( 正規分布)の理由から選択されました。



プレイヤーBからプレイヤーAに勝つ確率は、2つの格付けの違いの点で標準正規分布(トートロジーについてはごめんなさい)の分布関数に比例します。 つまり、2ポイントの評価差(2標準偏差)で、より強いプレーヤーに勝つ確率は95%以上です。



キャリブレーションによる:平均値の選択は唯一の正しいものです。標準偏差の選択は重要ではありません。 尺度のみを決定し、すべての評価に任意の係数を掛けることができます。これは別の標準偏差の選択に対応します。 そして、正規分布にはパラメーターがありません。



描画とキャリブレーション


次に、引き分けの可能性を考慮し、2つの評価の関数として確率を決定し、この値で前の関数をトリミングする必要があります。



ドローの複雑なモデリングを行わないことにしました-レベルを考えると、トーナメントにドローが1つしかないことに驚きました。 したがって、彼らは同じ正規分布を取り、2つの格付けの差の点での正規分布の分布密度に比例する引き分けの確率を置きました。 つまり、引き分けの確率はプレイヤーのレベルに依存せず、レベルの違いにのみ依存します。



ここでは、キャリブレーションがより複雑になります。まず、標準偏差の選択(以前の法則の標準偏差に対する)。 平等に置く。 第二に、比例係数は、平等にプレーしているプレイヤーの引き分けの確率を決定します。 この確率を20%と推定して、比例係数-50を計算しました。



実用的な実装



エクセル


Excelは、最大関数- ソルバーを見つけるのに非常に役立ちます。 問題は、関数の値(トーナメントの確率)が非常に小さくなり(同じ評価で、1E-120の確率で開始する)、そのような値では、検索を停止するためのExcelアルゴリズムがバグだということです。 定義上、彼は最大値ではなく「近く」に止まり、この近接基準はデータに対してひどく働きました-初期の評価に応じて、そしてテーブル内のプレイヤーの順序によってさえ、結果は異なっていました。



カウントのルールに影響を与える能力がもう少しあるシステムに移行することにしました。



Matlab


MatLabには、最大関数を見つける機能もあります。 メソッドの安定性を高め、何が起こるかをよりよく理解するために、変数ごとに繰り返し最大化することにしました。 つまり、1つを除くすべての評価が固定され、確率関数は1つの変数の関数になり、最大値を見つけ、この評価を修正し、次の変数をリリースします。 いくつかのパスで、関数はすべての変数に対して最大化されます。



実際には、10パスで十分でした。



安定性チェック


いくつかの安定性テストを行いました-他の初期値を入れた場合、プレーヤーの順序を混ぜた場合など この方法は非常に安定しています。 その結果、2つの計算が残りました。アルファベット順のプレーヤーとアルファベットに対するプレーヤーです。 10回の反復後、結果が比較されます。2つの方法がテーブルに並んでいる2人のプレーヤーに異なる順序を与える場合、テーブルの1つの場所を共有したと仮定します。



すくい


ジョークとして、出会った1つのレーキについて説明します。 MatLabでは、極値検索機能は最大値ではなく最小値を検索します。 最初の反応は、世界の実現の最大確率の代わりに、非実装の最小確率を探すことです。



問題は、通常の変数の1E-120は問題なく保持されますが、1-1E-120は自信を持って1に丸められ(仮数の120文字がすべての変数に対応するわけではない)、すべての計算が無駄になることです。



明らかな解決策は、負の値に移動し、その最小値を探すことです。



モデルの欠如



このモデルの最大の欠点は、プレイヤーに説明するのが難しいことです。 より正確には、モデル自体でなく、あなたが参加しなかった関係者の結果としてあなたの評価が変わるかもしれないという事実。

例を挙げましょう。あなたはプレイヤーXを1のレーティングで破りました。この事実に基づいて、システムは1よりわずかに高いレーティングを割り当てます。1.1を置きます。 あなたがトーナメントでプレーしなくなり、Xが多くのゲームを失い、彼の評価が-1になったとします。 これはあなたの唯一のバインディングであるため、あなたの評価はXの評価とともに低下します。



この例は非常に単純です;実際には、評価は予測が難しい方法で踊ります。

評価のこのような動作(より正確には、通常の動作との違い)の理論的な正当化は次のとおりです。

1.レーティングをプレイヤーの強さの絶対的な正確な表現とみなし、レーティングの変更が強さの変化を反映している場合、はい、レーティングはゲームの結果としてのみ変更でき、計算式は対戦相手の対戦時の対戦相手のレーティングを考慮する必要があります

2.レーティングをある理想値への不完全な近似と見なし、レーティングの変更を評価の改善と見なし、新しいデータを考慮した場合、すべてのプレイヤーのレーティングは、世界に関する新しいデータが判明するとすぐに変更できます。

モデルの強い制限は直接続きます。プレーヤーの進化は考慮されません。絶対的な「真の」評価はトーナメント全体で一定であると想定されます。



All Articles