TODAY'S HOT
  • 1977年7月13日 王貞治(巨人)が通算5000塁打を達成。 (vs.中日)
  • 1994年7月13日 近鉄が1試合最多塁打(=52)を達成。 (vs.ロッテ)
  • 1955年7月13日 国鉄が1試合最多得点(=22)、最多安打(=25)、最多打点(=21)を達成。 (vs.広島)
  • 1992年7月13日 Happy Birthday!! 森脇亮介(西武) 28歳
  • 1992年7月13日 Happy Birthday!! 高梨雄平(楽天) 28歳
  • 1999年7月13日 Happy Birthday!! 田中瑛斗(日本ハム) 21歳
  • 1985年7月13日 Happy Birthday!! 内竜也(ロッテ) 35歳
コラム COLUMN

機械学習を用いてセンバツ出場校を予想する

大川 恭平

 高校球児の夢舞台「甲子園」。春の選抜高校野球大会(第88回選抜高校野球大会)は3月20日に開幕します。春の選抜大会は新チーム結成後の秋季大会の結果をもとに出場校が決まりますが、必ずしも秋季大会上位の学校から順に選出されるわけではなく、詳細なチーム成績や、出場校の地域に偏りがないか、校風・品位・技能共にふさわしい学校かなど様々な要素を考慮し、1月29日に行われる選考委員会によって出場校が選ばれます。春の甲子園に出場する学校はこの選考会の日まで分かりませんが、過去の甲子園出場校と秋季大会のデータを照らし合わせることである程度出場校を予想することができます。

 今回のコラムでは毎年出場校の予想が難しい近畿地区の2006年から2015年までの10年分の選考結果と前年秋季大会データを用いて機械学習をおこない、その結果を用いて第88回選抜高校野球大会の出場校を予想させてみました。

予想の手順

 今回の目的は2015年秋季地区大会に出場した各校のデータをもとに、それぞれの学校が今年の選抜大会に選出されるか否かを判別することです。今回は、次のような手順で選抜出場校を予想します。

①秋季大会の結果データをもとにその学校が選抜大会に選出されるか否かを判別する判別器を作成する。

②2006年から2015年までの選抜大会の選考結果と各年の前年(2005年から2014年まで)の秋季大会結果のデータを用いて、判別器が秋季大会のデータから、過去10年分の秋季大会出場校を選抜大会に選出されるか否か、ある程度正しく判定できるようになるまで繰り返し学習をおこなわせる。

③学習を終え選抜に選出されるか否かをある程度正しく判別できるようになった判別器に2015年秋季大会の各校の結果を入力し、その学校が選抜に選出されるか否かを予想させる。

2016年近畿地区選抜出場校予想

 判別に使用するデータや学習過程などの詳細は後々説明することとし、先に学習を終えた判別器を使用して予想をおこなった結果を右表に示しておきます。予想には学習を終え2005年から2014年までの秋季近畿地区大会出場校を、秋季大会の結果をもとに翌年の選抜に出場するか否か93%の確率で正しく判定することができるようになった判別器を用いています。

 近畿地区に与えられている出場枠は6枠。2015年秋季大会に出場した16校のうち判別器が「選出」と予想を出した学校は大阪桐蔭(近畿大会優勝・大阪2位)、滋賀学園(同準優勝・滋賀3位)、龍谷大平安(同ベスト4・京都1位)、明石商(同ベスト4・兵庫1位)、智弁学園(同ベスト8・奈良1位)、市和歌山(同ベスト8・和歌山1位)の計6校でした。

 この判別器は判別をおこなう学校の秋季大会の結果データのみを見て選出・落選を判定します。秋季大会に出場した16校の判定を行う過程で他校の判定結果は考慮しないため、6つの出場枠に対して7、8校に選出の判定を出すことや、逆に選出枠よりも少ない数しか選出の判定を出さない可能性もありましたが今回は出場枠数と同じ6校に対して選出の判定が出ました。

判別器の学習手順

ここからは判別器の概要と、今回おこなわせた学習について簡単に説明したいとおもいます。


〇判別器の概要

 先程の予想に使用した判別器は入力として秋季大会の結果データを受け取り、それをもとに選出または落選という判別結果を出力します。判別器の選出・落選は各入力信号X1,X2,…Xiとそれぞれの入力値に対して設定した重みω1,ω2,…ωiを掛けあわせた和をもとに決定します。例えばX1ω1+ X2ω2+…+Xiωiの値が20以上なら選出、19以下なら落選といった具合に、あらかじめ判定基準を決めておきます。この選出・落選の基準値と各入力値に掛けあわされるω1,ω2,…ωiの値を適当に設定してから学習を開始します。


〇学習の流れ

①実際の過去の秋季大会データでX1ω1+ X2ω2+…+Xiωiを計算しその学校が選出か落選か判定を行わせる。

②判定を行った学校が実際に選出されたか否かを確認し、選出・落選を正しく判定できていた場合、そのまま次の学校の判定をおこなう。正しく判定できていない場合、ω1,ω2,…ωiの重みを現在の判定が出にくくなるように調整(更新)したのち次の学校の判定をおこなう。

③ ②を全てのデータに対して反復しておこない(近畿地区であれば過去10年間述べ160校のデータに対して複数回②をおこなわせる)、全く誤判定がなくなるか各ωの値がある程度収束してきたところで学習を終了させる。

 このようにして各ωの値を更新していくことで、判別器はより多くの入力データに対して正しい判定を下せるようになって行きます。

 実はこの「ωの値を更新していく」という行為が今回の判別器の学習にあたります。この説明だけでは少しイメージが湧きにくいかと思いますので次の章でグラフを用いて考えてみましょう。

学習していくとは

 先程「ωの値を更新していく」という行為が判別器の学習にあたると書きましたが、ωの値を更新していくことで何が起こっているのでしょうか。判別器に入力する変数を2つにして考えてみましょう。今回は例として「秋季大会の成績」と「秋季大会最終戦の得点」を入力する2つの変数として使用することにします。

 過去の秋季大会出場校の成績(X1)と各チームの最終戦の得点(X2)をプロットし、それぞれのチームが選出されたか否か調べた所、グラフのような結果が得られたとします。このグラフに適当に一本の直線を引いてみましょう。




 今、この直線の上側には選出校を示す赤い点が6つと落選校を示す青い点が2つ、下側には落選校を示す青い点が8つあることが分かります。この直線を少し移動させてみましょう。









このように直線の傾きと位置を修正することで、赤い点と青い点を直線の上側と下側の領域で分けることが出来ます。

  直線の式はX1,X2と定数ω0,ω1,ω2を用いてX1ω1+X2ω2+ω0=0という形で表されます。つまり直線がどのように引かれるかは定数ω0,ω1,ω2の値によって決まります。そして、各点が直線の上側にあるか下側にあるかはX1ω1+X2ω2+ω0の値を計算することで判別することができます。
 直線を隔てた片方の領域になるべく選出校の点を多く、落選校の点が少なくなるようにω0,ω1,ω2を調整していくという作業が今回の「学習」にあたります。

学習を終えた判別器の精度

 学習を終えた判別器に過去10年の秋季近畿地区大会出場校160校分の秋季大会データを入力した場合、どの程度選出校と落選校を正しく判別できるか詳細を見てみましょう。
 学習前の判別器はすべての秋季大会出場校に対して、「落選」の判定をしており(これは学習を始める前に適当に設定したωの初期値によるものです)、過去10年間に秋季近畿地区大会に出場した160校のうち63%(落選した100校)の学校に対してのみ、選出・落選を正しく判定しています。しかし学習を進めていくにつれ(5週目では一旦正答率は落ちるものの)徐々に「選出」の判定も増え正答率も向上していることが分かるかと思います。

 学習をすすめていく過程で精度がどのように変化していくか、詳細をぜひ表で確認してみてください。

今回の機械学習について

 今回は地区大会の結果(優勝、準優勝、ベスト4、…)、府県大会の順位(1位、2位、…)、地区大会最終戦の得点差、同府県の自チームより上位に勝ち上がった学校数の4つのデータを使用して選出、落選を判定する非常にシンプルな判別器を用いて予想をおこないました。仕組みが単純で用いるデータ数も少ないですが、この判別器の予想は人間の予想と近いものになっているように思います。(実際には優勝、準優勝といった結果を数値に変換したり、各入力信号に下処理を施していますがこの辺の細かな説明は割愛します。「ニューラルネットワーク」や「パーセプトロン」といったキーワードを調べて頂ければより詳しく学習の手順や手法を理解できるかと思います。)


 この判別器は過去10年の秋季大会出場校を秋季大会の結果をもとに翌年の選抜に出場するか否か93%の確率でしか正しく判定することができませんでしたが、新たな要因データ(例:そのチームに好投手がいるか、敗れた相手がどこまで勝ち上がったか など)を入力として受け取れるように拡張をおこなったり、判別器を複数組み合わせ新しい判別器を作成することでさらなる精度向上を図ることが出来ます。