NPB各チームのイロレーティング2017(8月まで)

前回6月終了時点で、プロ野球のイロレーティングを調査しました。
koganie.hatenablog.com

ではでは、8月が終わってみて、どうなっているでしょう。
まずはセリーグからです。
f:id:koganie:20170903011245p:plain

広島が9月2日現在で5.5ゲーム差で首位に立っていますが、
「強さ」(レート)を見ると、
上位4チームが同程度のところでぐちゃぐちゃしています。
グラフの右上がり、右下がり、はチームの状態や調子とも言えそうな感じですが、
広島の落ち込み気味なところ、
巨人の持ち直しているところ、
のようなものが見て取れるような気がいたします。

ではパリーグです。
ぼくは楽天ファンで、前回記事時点ではソフトバンクと拮抗していましたが…
f:id:koganie:20170903011653p:plain

なんということでしょう。
レートだけでみればオリックス以下にまで落ちぶれています。
この凋落ぶりは一体なんなのでしょうか…。

そういやこの間、仙台まで野球観戦に行ってきましてね。
9回まで3対3のいい勝負だったんですが、
延長入ってからもうぐっだぐだな点の取られ方で負けてしまいました。
松井祐樹くんも観れたし、楽しかったちゃ楽しかったですが…
シーズン序盤調子がよかっただけに、この「いつもの楽天感」は身にこたえます。

進捗報告 その4

大貧民の成果はまったく出ていない。

簡単な必勝手探索は実装したものの、まったくもって強くならない。
これはもう抜本的な問題があるのだろうと、
重い腰をあげて調査に乗り出した。

結果からすると、バグのオンパレード。
学習の際の評価値と、
大貧民クライアント側の評価値がずれてしまう。
これをちまちまと直していたのがその1。
これで強くなるだろうと思って愕然としたが、
まったく効果がなかった。悲しい。

続いて、本当にkou2に対して70%程度の一致率があるんだろうかの検証。
研究報告の「提出手比較による大貧民プレイスタイル解析」
と似たような感じで、
クライアントの実際の手と一致するのか試してみた。
場合分けなどはせず(革命や必勝手、プレイヤーが二人だけ等)、
すべてごっちゃに、(二手以上ある場合だけど)
ただ単に提出手役が一致しているのかを確認した。
結果、「67.7%くらいは一致している」…!

もっと調査してから書けというような内容だが、
進展がないのでとりあえず書いておく。

ちゃんと場合分けをすればもうちょっと上がりそうな気もするが、
どうなんだろう。

これはもうちょっとちゃんとした必勝手探索を実装すれば、
強くなるんだろうか…。
なんとも先は長い。

けど、学習はちゃんとうまくいっているようで、その点は安心か。
こういうふうに面倒だけれど足元を固めていかないと、
どこが狂っているのかわからなくなってしまうから大事だ。

あと、提出手役比較の簡易サーバーができたので、
また研究報告を読む企画で
「提出手比較による大貧民プレイスタイル解析」
はちゃんとやりたい。


追記
うーんちゃんと場合分けしても一致率は67%程度みたい。
学習時には70%は若干超えているので、
どっかやっぱおかしいのかも。

NPB各チームのイロレーティング2017(6月まで)

前回大貧民の記事でイロレーティングを勉強したので、
試しにまたプロ野球に使ってみた。
各チームの強さはどんなもんでしょうか。

まずはセリーグです。
f:id:koganie:20170702234824p:plain

50日目くらいから広島の右肩上がりがすごいです。
交流戦に入る少し前くらいからでしょうか。
他チームの引き離し具合がすごいですね。
こうしてみると交流戦でヤクルト・巨人が大きく落ち込んでいます。
そういえば連敗記録とかありましたね。

続いてパリーグ
f:id:koganie:20170702235736p:plain

交流戦入るころから楽天は失速気味だったのですが
そんな様子がグラフからも読み取れます。
一方ソフトバンクは序盤こそ落ち込みましたが
ずっと右肩上がりです。
なにかズルをしているんじゃないでしょうか。
おかしいと思います。

ロッテはぶっちぎりです。


ついでに、前に書いたBradley-Terryモデルのときにためした
投手と打者間のレートも計算してみました。

出塁なら打者の勝ち、抑えれば投手の勝ちで計算したものです。
上位20選手、まずは打者編。

日B近藤 健介 1611.59 420
ソB柳田 悠岐 1608.69 630
日B西川 遥輝 1576.39 640
オBロメロ 1556.38 312
広B丸 佳浩 1551.36 660
DB筒香 嘉智 1542.02 584
巨B坂本 勇人 1536.67 592
広B松山 竜平 1534.35 290
中B松井 佑介 1532.58 14
巨B陽 岱鋼 1521.34 142
中B大島 洋平 1520.18 644
ロB角中 勝也 1514.64 328
日B斎藤 佑樹 1509.7 2
DB宮﨑 敏郎 1508.64 470
ロB石川 歩 1505.08 6
巨B辻 東倫 1504.41 64
中B武山 真吾 1504.16 4
西B佐野 泰雄 1503.55 6
広B會澤 翼 1503.4 326
楽B藤平 尚真 1503.18 2

右から二番目がレート、一番右のは総対戦数です。
打者は投手よりもレートが低くなりがちなので、
対戦数の少ない選手が結構ランクインしています。
初期値が1500なので、そこから変動ができなかった人たちです。

続いて投手編。

巨P菅野 智之 1692.56 772
阪P桑原 謙太朗 1684.61 248
広P中田 廉 1664.28 228
中P岩瀬 仁紀 1657.12 204
ソP石川 柊太 1653.78 398
日P増井 浩俊 1652.83 232
広P薮田 和樹 1650.85 400
広P中﨑 翔太 1648.52 170
ソPサファテ 1647.63 214
阪P岩貞 祐太 1646.32 490
楽P岸 孝之 1645.52 604
日P鍵谷 陽平 1644.82 256
巨Pマシソン 1643.71 256
楽P福山 博之 1642.75 204
ヤP原 樹理 1641.77 468
ソP千賀 滉大 1639.16 454
中P柳 裕也 1639.16 264
DPウィーランド 1637.79 408
阪Pマテオ 1637.44 266
DP田中 健二朗 1636.14 198

続いて塁打を打者の勝ち数にカウントしてみました。
「勝つ確率」の計算がおかしくなるので、参考値ですが。

ソB柳田 悠岐 2007.02 630
広B丸 佳浩 1895.23 660
オBロメロ 1884.17 312
DB筒香 嘉智 1878.12 584
DBロペス 1854.71 618
中Bゲレーロ 1826.25 558
楽Bペゲーロ 1804.73 582
広B松山 竜平 1796.51 290
楽Bウィーラー 1793.61 586
西Bメヒア 1785.01 538
日B西川 遥輝 1779.87 640
DB宮﨑 敏郎 1776.4 470
西B秋山 翔吾 1770.26 634
ソBデスパイネ 1768.82 548
日B中田 翔 1763.19 528
広Bエルドレッド 1752.19 490
オBマレーロ 1749.24 98
巨B坂本 勇人 1738.01 592
日B近藤 健介 1735.89 420
ヤB山田 哲人 1733.94 630

巨P菅野 智之 1873.83 772
阪P岩貞 祐太 1813.46 490
ヤP原 樹理 1811.89 468
楽P岸 孝之 1809.8 604
オP山岡 泰輔 1796.61 556
中Pバルデス 1796.08 820
日P高梨 裕稔 1794.32 616
ソP石川 柊太 1793.86 398
中P柳 裕也 1789.98 264
阪P桑原 謙太朗 1786.37 248
広P野村 祐輔 1783.23 614
楽P美馬 学 1782.94 676
阪P小野 泰己 1780.87 282
日P加藤 貴之 1780.36 572
阪P秋山 拓巳 1778.94 654
ソPバンデンハーク 1776.88 582
広P薮田 和樹 1775.17 400
中P小笠原 慎之介 1773.55 370
西Pウルフ 1768.91 550
楽P則本 昂大 1768.11 736

以上。

コンピュータ大貧民の研究報告を読む②

大貧民における初期手札の不均等性を考慮したレーティングアルゴリズムの提案」では、コンピュータ大貧民のクライアント(プレイヤ)のレーティングを提案している。
http://id.nii.ac.jp/1001/00099271/

レーティングというのは、「プレイヤの強さ(レート)」を計算すること。
過去の対戦結果を使って、
その人の「強さ」を数値化していく作業のことをいう。

この研究では「イロレーティング」(elo rating)という手法を拡張している。
(読み方には「イェロ」とか諸説あるようだが、エロとは読まないらしい)
だた、この手法は、「2プレイヤ用」のアルゴリズムである。
また大貧民では手札の優劣があるので、
試合そのものの有利度に大きく差が出てしまう、
といった問題があるので、アルゴリズムをそのまま利用できない。
というところで、この研究報告がそこに取り組んでいる。

まずはそのイロレーティングを説明すると、
2人のプレイヤーAとBのレートがR_AR_Bだったとすると、
例えばAがBに勝つ確率E_A
E_A=\frac{1}{1+10^{-(R_A-R_B)/400}}
と表される。
ここで試合をやって、AがS_A回勝った場合には、
R'_A=R_A+K(S_A-E_A)
として、レートを更新する。
というのはウィキペディアに書いてある。
イロレーティング - Wikipedia


この研究報告で述べられているのは
1. 手札の優劣により、勝率(上の式のE)を補正する
2. 多人数ゲームへ拡張する

まず1. についてだが、最初の手札の優劣度を、
なんらかの手段をもってp_a(0 < p_a < 1)として決定する。
そして補正された勝率は
E_A=\frac{1}{1+10^{-(R_A-R_B)/400+\log{(p_a/{1-p_a})}}}
論文中ではp_aの決定には、
簡易的なモンテカルロ法によって勝率を計算して使っている。
そのためp_aのことを「初期盤面勝率」と呼んでいる。

2. の多人数への拡張だが、これは単に平均をとっている。
プレイヤー総数をPとおくと、
プレイヤーijに対して勝ったとすると
次の式で更新を行う
R'_A=\frac{1}{|P|}\sum^{{P}}_{j\neq j}(R_{ij}+K(S_{ij}-E_{ij}))
それぞれのプレイヤーに対するレート更新を、
平均を取っただけ更新する。

補正の手法はあくまで一例として紹介されているだけで、
もっと単純に考えれば「手札の平均強さ」とかでも代用できそうである。
ただ大貧民は同じクライアントとも、結構多数回やってしまうので、
ある程度やっていたら補正がなくても
収束していくような感じもするが、どうなんだろう。
こうして考えると、
手札の優劣によって勝率がどの程度影響をうけるのだろね。
あとは何試合くらいやれば決まるかも調べないといけない。

大貧民のクライアントの強さ調査もしたかったりするのだけど、
以前はたくさんクライアントがダウンロードできるようだったのだが
今は優勝クライアントがメインである。
UECda-2016 コンピュータ大貧民大会
手始めにここいらから調査してみたいな。

こういう紹介系の記事をいくつも書いていこうと思っていたのだが、
なかなかどうして、まだ2本目である。

各チームの打力と投手力をBradley-Terryモデルで

このシリーズの投稿は最終回となるかもしれない。

2017年度、交流戦が終わった段階での、
各チームの打力と投手力を推定してみよう。

モデルにおける勝敗は、
これまでの投稿と同じである。

まずは、ヒット・四死球なら打者の勝ち、それ以外は投手の勝ち、
として計算した強さが、こんな図のようになった。
f:id:koganie:20170623233944p:plain
横軸が打力、縦軸が投手力である。

一方で、打者の勝ちの場合に塁打を積算するとして
計算した結果はこんな図になった。
f:id:koganie:20170623235822p:plain

このグラフからも、
パリーグソフトバンク楽天
投打ともにバランスよく好調な様子がうかがえる。
反対にロッテの弱さも際立っている。
パリーグ3チームが、なんだか抜きん出ているように見える。

阪神は出塁だけでいえば打力は高いと出るが、
長打もまぜると落ち込んでしまった。

広島は、打力では抜きんでているが、
投手力に難がある様子が読み取れる。
チーム防御率はそれほど悪くはないが、
計算上は、そう推定される。

ぜひとも楽天に優勝してもらいたいものだ。

野球ネタでこういうなにか調べものしてみたいけど、
なかなかネタが思い浮かばない。
なにか面白そうなことがあったらまたやってみたい。

投手と打者の強さをBradley-Terryモデルで②

前回は出塁の可否を勝ち負けと見立ててモデルを計算しましたが
今回は長打力も検討に加えてみます。

出塁時はいずれも打者の1勝と見立てていたところ、
今回はその代わりに塁打を積算していく。
例えば本塁打なら4勝ぶんしたと見立てる。
投手にとっては抑えれば一勝、は前回と変わりません。

なんとも単純な方法ですが、やってみたらどうなるでしょう。

上位30選手投手編がこちら。

巨Pマシソン 0.00597838
西P牧田 和久 0.00595643
オP吉田 一将 0.0055647
ソP岩嵜 翔 0.00556156
楽P美馬 学 0.00550519
中P田島 慎二 0.00546596
ソPサファテ 0.0053279
DP山﨑 康晃 0.00528116
西P菊池 雄星 0.00519269
ヤP秋吉 亮 0.00513918
ロP内 竜也 0.00505028
阪P髙橋 聡文 0.00500306
楽Pハーマン 0.00497282
広P中田 廉 0.00492338
楽P松井 裕樹 0.00490814
楽P福山 博之 0.00490137
阪P桑原 謙太朗 0.00485029
オP黒木 優太 0.00481626
西Pウルフ 0.00480438
中P岩瀬 仁紀 0.00477409
巨P菅野 智之 0.00477396
日P鍵谷 陽平 0.00467817
ヤP小川 泰弘 0.00465996
ソP千賀 滉大 0.0046561
楽P岸 孝之 0.00456707
ソP森 唯斗 0.0045374
DPウィーランド 0.00446431
中P柳 裕也 0.00443908
広P床田 寛樹 0.00442964
阪P岩崎 優 0.0044192

前回と比べてどうでしょう。
上位に現れる選手層に大きく変化はありません。
微妙に順位が変わっていたりはしますが。
目立つのは前回47位の阪神桑原が今回ランクインしています。

では打者編。

オBロメロ 0.00586507
日B近藤 健介 0.00584543
広B丸 佳浩 0.00486705
西B秋山 翔吾 0.00484886
広B西川 龍馬 0.00476557
ソB内川 聖一 0.0047194
中Bゲレーロ 0.00468942
広Bエルドレッド 0.00463338
ソB柳田 悠岐 0.00446933
オBT-岡田 0.00422492
DBロペス 0.00417165
ソBデスパイネ 0.00414819
西Bメヒア 0.00410004
巨B坂本 勇人 0.00401284
楽B三好 匠 0.00398838
西B渡辺 直人 0.00398186
巨Bマギー 0.00393956
広B鈴木 誠也 0.0038594
日Bレアード 0.0037422
広B新井 貴浩 0.00373229
DB筒香 嘉智 0.00355535
楽B茂木 栄五郎 0.00352282
ヤBバレンティン 0.00351977
楽B聖澤 諒 0.00347741
DB宮﨑 敏郎 0.00344153
楽Bペゲーロ 0.0033329
広B松山 竜平 0.00332757
楽Bウィーラー 0.00331215
ヤB荒木 貴裕 0.00327607
ロB鈴木 大地 0.00327135

前回30位のロメロが、今回は1位です。
対戦結果を見てみると、投手で1位のマシソンから本塁打を打っているのが
大きく効いているような感じがあります。

ちなみに我らが楽天イーグルスからは、
前回は19位に三好匠がいるだけでしたが、
今回は茂木、聖澤、ペゲーロ、ウィーラーといった
今年の楽天を支えている選手がランクインしています。

しかしまあ今回のこの「強さ」が一体何を表すのかは言葉にはできず、
前回のように、次の打席での出塁率の計算などにも使えなそうです。
考えてみれば「ロメロとマシソンが1回戦って本塁打を打った」という事実から
これだけ大きく変わってしまうわけです。

・・・なんか意味があるんでしょうか。

投手と打者の強さをBradley-Terryモデルで①

ある投手とある打者が対戦した時に、ヒットになる可能性はどれくらいだろう、
と考えてみると、
単純に打率を見ただけではわからない。
打率はあくまで、その打者がそれまでに対戦してきた結果でしかないからだ。

といったところで、投手の強さ、打者の強さがわかると
なんとなく計算ができるような気がする。

そこで先の記事で書いたようなデータを収集して、
打者と投手の対戦結果をまとめている。
この結果を使って、Bradley-Terryモデルを使ったら、
投手の強さ、打者の強さが推定できるのでは、とふと思ったのである。

Bradley-Terryモデルについては
[R] Bradley-Terry model を用いてプレイヤー間の勝敗予測を行う | Developers.IO

http://www.ise.chuo-u.ac.jp/ise-labs/taguchi-lab/pdf/bachelor/2006/r2006_tamura.pdf

を参照である。
正直なところ、ほとんど理解はしていない。

今回は前回収集したデータ形式を(交流戦終了時まで)
ヒット、四死球なら打者の勝ち、
凡打なら投手の勝ち、
として計算を行っている。

Bradley-Terryモデルは、
上記の論文の2.32-2.34式を実装している。

今回の対象選手は、
投手に関しては65対戦以上、打者に関しては35対戦以上、
の対戦結果が残っている選手だけとしている。
あまり対戦結果が少なすぎると変な結果になるからだが、
ここで足切りをしている根拠はあるわけではない。適当である。
(試合数が現時点で65試合程度、というのは若干ある)

計算結果の上位30選手投手編はこちら。

巨Pマシソン 0.00925779
西P牧田 和久 0.00886314
DP山﨑 康晃 0.00833788
ソPサファテ 0.00774104
中P田島 慎二 0.00767384
ソP岩嵜 翔 0.00761731
楽P美馬 学 0.00721432
広P中田 廉 0.00704321
楽P福山 博之 0.00691287
中P岩瀬 仁紀 0.00673476
ヤP秋吉 亮 0.00670174
ロP内 竜也 0.00664855
オP吉田 一将 0.00640868
西P菊池 雄星 0.00626094
楽P松井 裕樹 0.00614154
ヤP小川 泰弘 0.00594624
楽Pハーマン 0.0058464
広P床田 寛樹 0.00581362
日P鍵谷 陽平 0.0058098
ソP千賀 滉大 0.00576664
西Pシュリッター 0.00573868
広P岡田 明丈 0.00571478
巨P菅野 智之 0.0056624
DP井納 翔一 0.00564968
楽P岸 孝之 0.00564496
オP黒木 優太 0.00561143
ヤP原 樹理 0.00558502
西Pウルフ 0.00555555
阪P髙橋 聡文 0.00549512
中P又吉 克樹 0.00541012

一方打者編はこちら。

日B近藤 健介 0.00653568
西B秋山 翔吾 0.00365323
広B丸 佳浩 0.00365323
オBT-岡田 0.00323847
DB筒香 嘉智 0.00323112
ソB内川 聖一 0.00308824
阪B糸井 嘉男 0.0030629
DB宮﨑 敏郎 0.0030397
ソB柳田 悠岐 0.00299378
広B新井 貴浩 0.00297482
巨B坂本 勇人 0.00294658
ヤBバレンティン 0.00289664
広B田中 広輔 0.00289138
広Bエルドレッド 0.00288231
中B大島 洋平 0.00286667
阪B鳥谷 敬 0.0028614
巨Bマギー 0.00285822
西B渡辺 直人 0.00277986
楽B三好 匠 0.00274763
阪B上本 博紀 0.00273266
ロB井口 資仁 0.00272242
ヤB坂口 智隆 0.00270844
巨B陽 岱鋼 0.0026825
ロB角中 勝也 0.00266387
ヤB山田 哲人 0.00264073
ヤB雄平 0.00263779
広B鈴木 誠也 0.00263631
日B矢野 謙次 0.00260109
ヤB畠山 和洋 0.00258032
オBロメロ 0.0025205

今回見ているのが、単純に出塁だけなので、
はやりの「長打力」とかは反映されていない。
だからこれを「強さ」と言っていいのかというと、それは違うんではないか。
ちなみに
投手と打者とは、3打席で1回ヒットが出ればいいような力関係なので、
投手のほうが全体的に大きな値にはなっている。

たとえば、楽天の松井祐樹から、巨人のマギーが出塁する確率は

p=\frac{0.00285822}{0.00614154+0.00285822}=0.3176
と計算できる。
なんとなく、そんなもんかあ、という感じはする。

が、データ数が少なすぎるからか、選手数が多すぎるからか、
そんな有意な差が生まれにくいからか、
そもそもプログラムがどっか違っているからか、
原因はわからんが、
強さの数値がどの選手も非常に小さい。
本当にこれであっているんだろうか。

もう少し遊んでみたい。

なにかお気づきの点などございましたらご教示ねがいたい。