Lean Baseball

No Engineering, No Baseball.

野球AIが選ぶTOKYO 2020侍JAPAN24名 - 機械学習で忖度無く選んでみた.

f:id:shinyorke:20210616211339p:plain

※【注意】あくまでもお遊びです, 冗談半分で読んでください!

「野生の野球データサイエンティスト」です.

本日ついにTOKYO2020侍ジャパン, 24名の内定選手が発表となりました.

www.japan-baseball.jp

24名の選出って難しいですよね...中の方は色々ご苦労とかあったのではないでしょうか.

一番いい色のメダル, 期待しています!

さて, 私は野球好きでもありますが, プロの(野球)データサイエンティストであり, 機械学習エンジニアでもあります.

ワイ「プロ野球選手2021年の成績を予測してそこから24名の侍を選んだらいい感じになるのでは🤔

と 昨年末に思いついたので,

野球AIが選出する, TOKYO 2020侍ジャパン24名

を実際にやって選んでみました.

実際の侍ジャパンと比較して楽しんでいただけると幸いです.

要約すると

  • 打てる人は正義
  • 奪三振能力も正義
  • AIによる忖度なし代表選出, 案外アリかもしれない

スターティングメンバー

選出方法

AIによる選出方法は以下の通りとなります.

  1. 2021年に在籍している全プロ野球選手の通算成績を元に, 「似ている選手(メジャーリーガー)」150人を見つける
  2. 上記で探した選手150人の年度別成績の75パーセンタイルの値を算出, 各成績を計算する
  3. 投手はFIPの昇順, 野手はOPSの降順で各ポジションの上限人数(先発投手5人・中継ぎ抑え6人・捕手2人・内野手6人・外野手5人)を選出

なお, 今回の予測では「Baseball Reference」および, 「Lahman's Baseball Database」のデータを使って行います.

理由としては,

  • 後述する成績予測モデルはメジャーリーグのものを利用
  • データセットの相性及びライセンスを考慮するとNPB関連データもBaseball Referenceからやったほうが筋がいい

と判断したからです*1.

1. 似ている選手150人を選出

2021年5月までの通算成績を元に,

  • 似ているメジャーリーガーを150名選出
  • 投手・打者成績を特徴量に, メジャーリーガーとのユークリッド距離をスコアとして近い順に150人選出

しました.

ちなみに150人の根拠はありません.

詳しいやり方は過去ブログにも記載してますのでこちらを御覧ください(使った特徴量は秘密です*2).

shinyorke.hatenablog.com

スコアリングした結果を見てみました.

f:id:shinyorke:20210616204759p:plain
山田哲人に近い選手(上位20人)

上位は強打の二塁手が並んでいるので正解っぽいです.

井口資仁が含まれてるのも味があります.

投手なども見ましたがそれなりにちゃんとクラスタリングされてたので正解っぽいです.

2. 似ている選手の年度成績のパーセンタイルから予測成績を作る

「1. 似ている選手150人を選出」の手順でクラスタリング・スコアリングができたので,

  • 150人の選手, すべての年度成績を取得
  • 取得した年度成績の平均...だと寂しいので, 75パーセンタイルぐらいの値を算出

し, 予測成績を作りました.

作った予測成績はこちらに公開しています, ご自由に見てニヤニヤしてください.

なお,

  • 全選手なので外国籍選手も含みます
  • データの関係で2021年の新人選手は含んでいません(佐藤輝とか早川とか)

という制約事項があることをご了承ください🙇‍♂️

投手

野手

ちなみに, 本当はもっと丁寧なやり方で予測成績を出す方法もあったのですが時間が足りなくて断念しました.

丁寧なやり方はこちらをご覧いただけると幸いです(大谷翔平でやってみた例です*3).

野球AIが選出する侍ジャパン24名!

ここまで来たら24名を選ぶことができます.

この先はルールを決めて選出します.

選出ルール

選出ルールは以下の3つでやりました.

  • 投手はFIP, 野手はOPSを基準に選出
  • 1軍在籍かつアラフォー未満
  • ポジションごとに調整

あと大事な前提条件として助っ人はもちろん選外です.

投手はFIP, 野手はOPSを基準に選出

予測成績の次点で投手のFIP, 野手のOPSを算出し,

  • 投手はFIPの昇順(小さい順)
  • 野手はOPSの降順(大きい順)

で上位選手をリストアップしました.

FIPは「投手の自己責任は三振四球本塁打だよ」という概念(DIPS)を元に生まれた投手の指標です.

shinyorke.hatenablog.com

オリンピックは国際試合ですし守備の乱れとかもあるかもしれません(例えば北京の外野とか*4).

なので, 「三振が奪えて四球本塁打を出しにくい」可能性がある投手が優先して選ばれるようにFIPを元にしました.

OPSは「出塁率と長打率を足した攻撃指標」としてよく知られています.

shinyorke.hatenablog.com

野球は相手より点を取ることにより勝てるスポーツです.

アウトを取るのはある程度投手の責務にして, 打てる人メインで選出ということでOPS順での選出を優先しました.

1軍在籍かつ, アラフォー未満の選手を選出

本日(6/16)次点で1軍にいなかったり, 予測成績が良くてもアラフォーの選手については落とすことにしました.

予測成績がいい感じかつ, 歳をとっていてもアラサーぐらいの選手に期待したいということで.

ポジションごとに調整

各ポジションは実際の日本代表と同様の人数バランスにしました.

  • 先発 5名
  • 中継ぎ・抑え 6名
  • 捕手 2名
  • 内野手 6名
  • 外野手 5名

本音でいうと外野を一人減らして内野か捕手を1名増やしたいところですが*5, 現実の侍ジャパンからずらすのもアレなので従うことにしました.

なお, ポジションの調整ですが

  • 投手は馬鹿正直に選ぶと左が少なかったので左を1枚だけ増やしました(≒本来選出レベルの右を一人落としました)
  • 内野は二遊間が出来るバックアップがいないのは流石に怖すぎた&一塁・三塁守れるマン多杉内だったので二遊間守れる人を(OPS順で最もイケてる)1人を選出
  • DHは守備につかない誰かがやるだろうということで考慮しない

こちらを実施しました.

投手

さあいよいよ発表です.

「あと一歩で選ばれなかった」選手含めて紹介します!

先発

名前(チーム) 2021年成績(6/15時点) 実際の侍ジャパン選出
山本由伸(オリックス) 6勝5敗 防2.08
森下暢仁(広島) 3勝4敗 防2.35
宮城大弥(オリックス) 6勝1敗 防2.31
則本昂大(楽天) 5勝3敗 防3.28
田中将大(楽天) 2勝4敗 防2.90

次点・菅野智之(巨人, 侍ジャパン)

なんだか順当な結果に見えてきました.

5人中3人が被りです, 実際に選ばれなかった宮城(オリックス)が選ばれたのは筋が良さそうです.

中継ぎ・抑え

名前(チーム) 2021年成績(6/15時点) 実際の侍ジャパン選出
松井裕樹(楽天) 0勝2敗18S 防0.84
平良海馬(西武) 1勝0敗7S 防0.00
津森宥紀(ソフトバンク) 1勝0敗0S 防1.69
森唯斗(ソフトバンク) 1勝0敗8S 防1.38
増田達至(西武) 0勝2敗8S 防6.75
中川皓太(巨人) 2勝2敗1S 防3.64

次点・髙橋純平(ソフトバンク)

中継ぎは全くもって現実の侍ジャパンと異なる顔ぶれに.

平良と中川が被りですが, ホントの順番でいうと高橋純平だったりします.

ブルペンに左が松井だけってのは...と思い, ポジション調整って事でここだけ入れ替えました.

高橋純平, 申し訳ない🙏

野手

捕手と外野手はOPS順でスンナリでしたが, 何気に内野手が苦労しました.

捕手

名前(チーム) 打席 2021年成績(6/15時点) 実際の侍ジャパン選出
森友哉(西武) 打率 .304 8本塁打 22打点
頓宮裕真(オリックス) 打率 .255 5本塁打 13打点

次点・會澤翼(広島, 侍ジャパン)

パ・リーグの攻撃型捕手2名が選ばれました.

OPS順で並べればそうなるよねっていう結果です.

次点が広島の會澤ですがこちらも攻撃型捕手なので納得です.

内野手

名前(チーム) 打席 2021年成績(6/15時点) 実際の侍ジャパン選出
山川穂高(西武) 打率 .256 10本塁打 26打点
村上宗隆(ヤクルト) 打率 .284 20本塁打 45打点
山田哲人(ヤクルト) 打率 .267 17本塁打 45打点
浅村栄斗(楽天) 打率 .304 8本塁打 22打点
坂本勇人(巨人) 打率 .307 7本塁打 16打点
吉川尚輝(巨人) 打率 .312 3本塁打 10打点

次点・岡本和真(巨人), 栗原陵矢(ソフトバンク, 侍ジャパン)

今夏一番苦労したところです.

まず一塁三塁守れるやつが打ちすぎ(打撃重視ポジションなので当然ですが)

順当に選ぶと二遊間がいなくなっちゃうので,

  • 一塁三塁は予測成績がイケてた山川・村上に任せる
  • 二遊間は上から3名と考えた結果, 山田・浅村・坂本
  • 最後の一枠は二遊間プラス外野行けそうな選手で最もイケてた吉川尚

と決めました.

岡本と栗原はOPS順で言うと選ばれるのですが...守備位置が, 守備位置が...w

なお, なんやかんやでホンモノの代表との被り率, ここは高かったです.

外野手

名前(チーム) 打席 2021年成績(6/15時点) 実際の侍ジャパン選出
鈴木誠也(広島) 打率 .294 8本塁打 24打点
柳田悠岐(ソフトバンク) 打率 .285 14本塁打 36打点
吉田正尚(オリックス) 打率 .340 12本塁打 42打点
T-岡田(オリックス) 打率 .262 7本塁打 31打点
近藤健介(日本ハム) 打率 . 275 7本塁打 35打点

次点・梶谷隆幸(巨人)

突然のT-岡田は笑いましたw 何故来たのか自分もよくわかってませんw

外野は順当に誠也・ギータ・正尚の3名で良さそうです.

次点で梶谷が来たのは元々出塁率がいい選手なので予測の成績も良い方向に転んだため, と思われます.

AI侍ジャパンの想定スタメン・ローテ

無事24名選べたのでスタメンとローテを考えました.

スタメン&控え

打順 ポジション 名前 備考
1 2B 山田哲人 足とOPS順で考慮してこちら
2 CF 柳田悠岐 足と予測成績OPS第2位の打撃, 打席の左右を考慮
3 RF 鈴木誠也 予測成績のOPS外野手第1位
4 DH 山川穂高 予測成績のOPS内野手第1位
5 3B 村上宗隆 予測成績のOPS内野手第2位
6 LF 吉田正尚 予測成績のOPS外野手第3位
7 1B 浅村栄斗 予測成績のOPS内野手第3位
8 C 森友哉 予測成績のOPS捕手第1位
9 SS 坂本勇人 守備とOPS順でここに落ち着く

ちなみに控えは

  • T岡田は代打 or 投手の左右に合わせてDH要員
  • 頓宮は控え捕手, リザーブのリザーブに近藤健介*6(代打要員兼ねて)
  • 吉川尚は代走と二遊間のバックアップ&緊急時の外野手

こんな起用方針かなと.

全体的に(吉川尚と近藤を除いて)長打を期待できるマッチョな打線感あります.

個人的には外野守備に穴がありそうでアレですがw

ローテ&起用

ポジション 名前
先発 山本由伸
先発 森下暢仁
先発 宮城大弥
第2先発 則本昂大
第2先発 田中将大
中継ぎ 森唯斗
中継ぎ 増田達至
中継ぎ 中川皓太
セットアッパー 津森宥紀
抑え 松井裕樹
抑え 平良海馬

FIPで優秀な順で決めました.

ざっくりAIで選んだ割には筋が良い投手陣に見えます.

結び

というわけで, 「野球AIが選出した侍ジャパン24名」をやってみました.

データ集めとかやり方は難易度そこそこ高かったですが, 満足行く結果で良かったです.

最後, オチっぽい話として「球団別の人数」「次に試したいこと」を話して終わります.

球団別人数

球団 AIジャパン ホンモノの侍ジャパン
阪神 0名 2名(青柳, 岩崎)
巨人 3名(中川, 坂本, 吉川尚) 3名(菅野, 中川, 坂本)
ヤクルト 2名(村上, 山田) 2名(村上, 山田)
中日 0名 1名(大野)
DeNA 0名 1名(山崎)
広島 2名(森下, 鈴木) 5名(森下, 栗林, 會澤, 菊池, 鈴木)
楽天 4名(則本, 田中, 松井, 浅村) 2名(田中, 浅村)
ソフトバンク 3名(津森, 森, 柳田) 3名(甲斐, 柳田, 栗原)
オリックス 5名(山本, 宮城, 頓宮, 吉田, T岡田) 2名(山本, 吉田)
ロッテ 0名 0名
西武 4名(平良, 増田, 森, 山川) 2名(平良, 源田)
日本ハム 1名(近藤) 1名(近藤)

どっちもロッテから選出なしなのは笑いましたw

あと, AIの方はホントに忖度してなくて,

  • 出来る選手が多いところから容赦なくかき集めている. オリックス, 西武, 楽天の3チームだけで13名(過半数)に!w
  • 気がつけばセ・リーグは3球団のみ(阪神・中日・DeNAは選出なし, 残り3チームから7名)

今年の交流戦はリーグ別の勝利数でセ・リーグが制しましたが, 昨年までのパ・リーグ無双を引き継いでるような結果で微妙な気分になりました苦笑

なんやかんやで交流戦優勝のオリックスから5名も選んでますし.

また, AIと関係ないところで実際の代表選出って(人数バランス見る限り)ホント苦労してそうだなと思いました.*7

次に試したいこと

何かしらの方法で, 「実際の侍ジャパンとAIジャパンで対戦」させたいと思います.

次回作にご期待ください🙏

【おまけ】このエントリーを思いついた&書いた理由

遡ること半年ちょっと前, 「元祖・野球とITのLTイベント」こと, Baseball Play Study(2020シーズンふりかえり大LT大会)にて,

AI(機械学習)で坂本勇人と山田哲人の将来成績を予測してみたやで!

...というお話をさせていただきました.

※中身の詳しい話&考え方は上記スライドもしくはこちらのエントリー(ネタはギータですがやってることは一緒)を御覧ください

この発表の後, いくつかフィードバックを頂いて,

こんな決心をしました.

構想3分34秒, 開発と検証に半年近くかかったけどできてよかったです!

*1:日本のデータだと必要な特徴量が手に入らないから, という理由も含みます.

*2:秘密と言っても, 普通の成績データからやってるだけなので真似はしやすいと思います.

*3:昨年やったこのエントリーで打率.265/本塁打32本/打点85と予想してますが果たしてどうなることやら...健康だったら本塁打と打点は越しそうな予感してます.

*4:お約束といえばお約束ですね苦笑

*5:短期間とはいえ捕手2名って大丈夫なんだろうか🤔 現実の侍ジャパンが近藤健介を選出してるのは緊急時の捕手も期待していそうです.

*6:現実の侍ジャパンもですが今の近藤ホントに捕手できるかはわからない🤔

*7:例えばAIの方はオリックスと楽天から先発2名ずつ, 西武とソフトバンクから中継ぎ2名ずつ引っ張ってますが実際こういう選考はチームが断りそうな気がします. AIは忖度しないいので(震え)