software | rating | error | games |
---|---|---|---|
Gikou2D5 | 2181 | +544/-117 | 10 |
Gikou2D3 | 2036 | +150/-96 | 10 |
Gikou2D2 | 1800 | +0/-0 | 56 |
Try | 1776 | +23/-29 | 70 |
Q22 | 1695 | +104/-136 | 6 |
入力データ;sample2.csv
engine1,option1,engine2,option2,win1,win2,draw(-1=undef),drawadd,date(-1=undef),writer
Gikou2D2,+,Try,+,27.5,22.5,1,1,-1,undefined
Gikou2D3,+,Try,+,8,2,0,0,-1,undefined
Gikou2D2,+,Q22,+,4,2,0,0,-1,undefined
Gikou2D5,+,Try,+,9,1,0,0,-1,undefined
各データの意味は、レート計算スクリプトの使い方@コンピュータ将棋データベースにある。
※入力の仕方は上記のCSVファイルのとおりである
レーティングを正しく計算するために重要なことは、最初のSoftwareのレートを基準に計算しているので、そのレートが正しい必要がある。そのSoftwareを基準としたレート算出である。
※基本はイロレーティングで示したとおりである。
###(2)理論(ソースコード)を見る
基本的な方程式は、以下のとおりである。
$ΔR=R-R_B$、$R_B$は基準となるソフトのレーティング、$R$は求めたいソフトのレートとすると、
E_{ΔR}=\frac{1}{1+10^{−ΔR/400}}
式変形すると以下の通り
R=R_B-400\log (\frac{1-E_{ΔR}}{E_{ΔR}})
※そもそも$1-E_{ΔR}$は相手の勝率だから、イロレーティングは勝率比の$\log$の400倍がレート差という定義なのがわかる
ここまで式変形して、ソースコードを眺めてみると、
以下の関数でbias値(基準値)にレート差をプラスしてレートを計算している。
def get_beta_with_bias(self,i,bias):
beta = 400*np.log10(self.p)
beta += (bias-beta[i])
return beta
また、bias値(基準値)は以下で計算前に設定する必要がある。
for k in np.arange(n_trial):
bt = bt_model(samples[k,:,:],p_init)
bt.estimate()
betas[k,:] = bt.get_beta_with_bias(0,1800) #rate of 1st
p_init = bt.p
のbt.get_beta_with_bias(0,1800)
の1800を変更する。
そして、結果出力は、以下のように実施している。
result = np.c_[range(K),q_50,q_75-q_50,q_50-q_25,n_games]
ということで、上記の算出されたレートには+-がついているが、これはコードによれば再度サンプリング(思考実験して)、その中央値と25パーセンタイル、75パーセンタイルをとっているようである。
全コートはここからダウンロードして見られる。
###まとめ
・第三者的なレーティングを求めた
・どうやら、イロレーティングから求めているようだ
・今回は、対戦条件が通常とことなるが、何を見るのかを定めてレーティング・ランキングを掲載するというのもありうる