難易度:★★★★☆
昨今、スポーツ業界でもデータ分析や人工知能を用いる例が増えてきています。 テニス、バレーボール、サッカーといった対戦型スポーツではデータをリアルタイムに収集し、 監督やコーチが収集データから試合状況を分析して、より効果的な戦術を見つけ出して試合中の選手に伝えるという取り組みがあります。 選手のコンディション管理や調子の推定に人工知能を用いる事例などもあります。 そこで、本Questでは過去SIGNATEで開催されたコンペ「ひろしまQuest2020」(https://signate.jp/competitions/274)の上位入賞者の解法を元に球種予測を行う分類モデルの作成方法についてを学んでいきます。
過去SIGNATE上で「ひろしまQuest2020#stayhome:プロ野球データを用いた配球予測」というひろしまサンドボックス推進協議会事務局に主催していただいたコンペが開催されました。
そのコンペでは過去3年分のプロ野球データを用いて球種を予測するというアルゴリズムを競うというものでした。
では、球種をうまく予測するためにはどんな特徴量が必要となるでしょうか?
投手の利き手や試合中の得点差など様々な要素が関係しそうですね。
上位者がどのようにコンペに挑んでいたのかも含めて、野球に詳しい方も詳しくない方も特徴量作成の仕方や複数のモデリングの仕方などの中級者向けの精度向上のテクニックを学んでいきましょう。
Mission 1
コンペティションに参加する場合やデータ分析を行う場合で1番大切なことはデータを入念に確認することです。
今回のコンペでの提供データでは投球単位のデータと選手単位のデータの2つのデータが存在しました。
その中で個別にどんな情報を持ったデータなのか、2つのデータはどのように関係付けることができるのかなど確認するべきことが様々あります。
データを読み込んで今回の題材となるデータの概要を確認しましょう。
予測アルゴリズムなどを作成する場合でも一番大切なことはデータを入念に調べることです。
実際にデータを読み込んで今回の題材となるデータの概要を確認しましょう。
データ全体を確認し、どんなデータを使っているか確認できました。
次は様々な条件によってデータに対して絞り込みを行い、詳細を確認してみましょう。
データの絞り込みを行い、データの大枠については理解できたと思います。
次は球種予測モデルを作成する際に必要不可欠である球種のデータについての確認を行いましょう。
Mission 2
コンペを闘って行く上で大切な工程が2つあり、その2つを探索的分析と特徴量作成と言います。
探索的分析とは欠損値や重複データの確認、データの分布、データ間の関係性やそのばらつきを見ることを言います。
特徴量作成とはモデルの精度向上のために与えられたデータから新たな特徴を作成することを言います。
今回はひろしまコンペにて上位になった人たちの探索的分析や特徴量作成も踏まえて、様々な観点から手法や観点を学んでいきましょう。
今回はデータを様々な観点から見ながら、ユニークな値の確認や欠損値の確認を行なっていきましょう。
今回は与えられたデータを横に組み合わせて、新たな特徴量を作成してみましょう。
今回は与えられたデータを縦に組み合わせて、新たな特徴量を作成してみましょう。
ドメイン知識ははっきり限定された、ある専門分野に特化した分野の知識であり、コンペ題材データのドメイン知識を使って特徴量を作成することも重要なタスクとなります。
今回であれば野球関しての知識がドメイン知識となります。
コンペによっては提供データ以外に、外部データの使用を許可している場合もあります。
その場合では様々なwebサイトからデータをスクレイピングしてくることでデータ利用が可能となります。
Mission 3
通常コンペでは予測ファイルをコンペサイトでサブミットしないとスコアを確認することができません。
しかし精度向上のために施策を打って、その結果をサブミットしないと確認できないとなると少し不便ではありませんか?
そのような場合に備えて、モデルの妥当性を検証する方法の1つとしてクロスバリデーション(CV)と呼ばれる検証方法が存在します。
CVは実務でもAIの精度をちゃんと評価するために重要な設計の1つになります。
今回はこのCVと呼ばれる検証方法を使いながら、複数のアルゴリズムのモデルを作成していきます。
いつものクエストに比べると複雑ではありますが、この工程を学ぶことができれば様々なテーブルデータコンペで対応することができる重要なミッションとなります。
ぜひ少しずつでも良いので噛み砕いていきながら学んでいきましょう。
コンペの形式に寄せたデータを使った、ここから実際に球種予測を行うモデルを作成していきます。
コンペは通常2-3ヶ月開催など比較的長いものが主流となっています。その長い期間を過ごしていく上でクロスバリデーションを設定することは大変重要なタスクとなります。
コンペ上位者のほぼ全員が使っていたLightGBMというモデルを使って、球種予測モデルを作成していきましょう。
scikit-learnに実装されているkNNというモデルを使って、球種予測モデルを作成していきましょう。
深層学習用のフレームワークであるKerasを使って、NNを使った球種予測モデルを作成していきましょう。
Mission 4
精度向上のためには様々な方法があります。
今回は複数のモデルの推論結果を使ってアンサンブルと呼ばれる手法と複数のモデルの積み上げを行う手法のスタッキングを学習していきます。
ひろしまコンペの上位者も必ずといっていいほど、アンサンブルもしくはスタッキングを使用してスコアブーストをしていましので上位に入り込むための大切な手法となりますので丁寧に学んでいきましょう。
アンサンブルと呼ばれる複数モデルを融合させて1つの予測を作成する方法を学んでいきましょう。
スタッキングと呼ばれる複数モデルの予測結果を利用して、再度新しいモデルを作成する方法を学んでいきましょう。
今回のコンテンツでは、過去のコンペの上位解法のエッセンスを元に学習していくことでクロスバリデーションを使って複数モデルを作成し、精度向上のための方法を学ぶことが目標でした。
まずデータの読み込みを行い、データを確認しながらどんなことができるかを確認していきました。
その次に実際に提供されたデータを横や縦に組み合わせたり、ドメイン知識を使って新たな特徴量を作成してきました。
その後、コンペの概要や評価関数について理解し、球種予測モデル作成ならびに精度向上のためのアンサンブルやスタッキングなどの手法を学んできました。
コンペで実際に上位になるためには試行錯誤することがたくさんあり大変ではありますが、しっかりコンペと向き合うことで実力が格段と上がっていきます。
ぜひ、このコンテンツを学習した後にSIGNATEで開催しているコンペティションに参加していただき、今回の内容を元に精度向上を狙っていきましょう。