Ruby言語を用いた将棋レーティングプログラムを作ったので紹介します。 ●Bradley-Terry モデル 本プログラムは Bradley-Terry モデルに基づいており、レーティング関数が折れ線 ではなく滑らかな曲線(双曲線関数 tanh)になっている点が、世の中で行われている レーティングと若干異なります。Rate Xの棋士の Rate Yの棋士に対する予測勝率は、 3 の ( X / 200)乗 ------------------------------------ 3 の ( X / 200)乗 + 3 の ( Y / 200 )乗 であるとしています。 ●実行結果の例 (# の行はここでの解説のため手動で付けたコメントです) 【計算結果】 注:「対 n 勝数」は勝数の"予測数(実績数)" No 名前 [ Rate]: 対 1 勝数 対 2 勝数 対 3 勝数 対 4 勝数 対 5 勝数 対 6 勝数 1 名人A級 [ 2730]: 0.0( 0) 61.1( 59) 54.9( 52) 39.4( 39) 23.8( 29) 11.9( 12) 2 B級1組 [ 2643]: 37.9( 40) 0.0( 0) 38.2( 37) 26.0( 29) 28.4( 27) 12.5( 10) 3 B級2組 [ 2621]: 30.1( 33) 33.8( 35) 0.0( 0) 51.6( 50) 97.6( 92) 37.9( 41) 4 C級1組 [ 2613]: 20.6( 21) 22.0( 19) 49.4( 51) 0.0( 0)133.6(140) 85.4( 80) 5 C級2組 [ 2576]: 10.2( 5) 19.6( 21) 76.4( 82)109.4(103) 0.0( 0)119.3(124) 6 フリーC [ 2413]: 2.1( 2) 3.5( 6) 12.1( 9) 28.6( 34) 48.7( 44) 0.0( 0) # 週刊将棋2001年9月12日号にクラス間の勝敗データが掲載されていますが、これを再現 # できるか計算してみたものです。概ね妥当な結果になっているようです。Rate の絶対 # 値は任意ですが、全体の平均が2600点になるように調整しました。これは世の中で流通 # しているアマチュアのレートから推定したプロの値とくらべると少し高めだそうです。 2005-03-31付けの計算結果 # 2004年度の成績に基づくレーティングです。 2005-12-31付けの計算結果 # 最近1年(205年1月初〜2005年12月末)の対局記録をもとにした個人別レーティングを # 計算したものです。勝敗が未発表のテレビ棋戦の結果は除外、プロ棋士と対戦した # アマチュア棋士はまとめてひとりの棋士とみなしています。なおこのデータはレート # の収束速度の制限のため、上記対局で勝数・負数の何れかが4未満の棋士は計算対象外 # となっています。 ●参考文献 [1] 竹内啓・藤野和建『スポーツの数理科学』(共立出版 1988) [2] 湯川博士「将棋大好き大集合! 第4回 レーティング普及家・松田竹二郎」 (週刊将棋1991年1月30日号) [3] 鈴木宏彦「25万手スペシャル 2001年度バージョン 第4回」 (週刊将棋2001年9月12日号)