読売巨人軍, 福岡ソフトバンクホークスがリーグ優勝, ロサンゼルスドジャースが世界一となった今シーズンの野球ももうそろそろ終わりが見えてきました.
CSで盛り上がったり日本シリーズに思いを馳せたり*1, 気持ちは2021年に向いていたり(?)それぞれ楽しみ方はありますよね.*2
そんな流れの野球界隈, つい先日(一部の野球ファンからは以前より存在が知られていた)セイバーメトリクスの書籍が発売となりました.
- 作者:Max Marchi,Jim Albert,Benjamin S. Baumer
- 発売日: 2020/11/13
- メディア: 単行本(ソフトカバー)
個人的には「待ち望んでいた本の訳書がやっとでた!」という感じで嬉しいです&ご縁があってレビューに参加させていただきました.
このエントリーでは,
- Rによるセイバーメトリクス入門の読みどころ&プログラミング視点での紹介
- 応用編として, Pythonでやるときの話
というテーマで「Rによるセイバーメトリクス入門」を紹介したいと思います.
TL;DR
- 統計にせよ, 機械学習にせよ, 「探索的にデータ分析・データサイエンス」をやるなら野球で学ぼう!(野球好きな人は)
- セイバーメトリクスと野球データ分析・予測のイロハが色々載っていて読むだけでだいぶ勉強になる
- Python等多言語でやりたい人はぜひRのコードを動かして写経してやると良いのではないでしょうか
スタメン
どんな本なのか
この書籍はアメリカで発売されている「Analyzing Baseball Data with R, Second Edition」の日本語翻訳版です.
この本はホント名著(後ほど紹介しますが私は以前から野球データ分析の参考にしています)で, 日本語版の準備が進んでいると聞いた時は思わず小躍りしました.
どんな本かというと...これは技術評論社さんのページの説明がそのまま当てはまると思います.
セイバーメトリクスとは,ベースボールのデータを利用して戦術を分析することです。本書は,データアナリスト,野球愛好家にRを利用したセイバーメトリクスを紹介します。Rは,データの読み込み,適切なフォーマットへの変換,グラフによるデータの視覚化,統計分析の実行まで,すべての分析ステップを完結できる便利なソフトウェアです(使用されているすべてのデータセットとRコードはオンラインから利用できます)。
第2版では,Rのモダンなデータ分析を可能にするtidyverseを採用し,選手やボールの動きを高速・高精度に分析するために必須となったStatcastによるプレーヤ追跡データを加筆しました。初版のすべてのコードをtidyverseに準拠して修正しました。さまざまなベースボールのプレーとそのデータを通して,モダンなRの利用方法とセイバーメトリクスについて学習できます。
※技術評論社さんのページの説明より引用.
要約すると,
- Rを使ったセイバーメトリクス(野球データ分析・統計学)をオープンデータとサンプルコードを元に紹介
- 上記に必要なRでのプログラミング(データ読み込み・加工・分析・可視化)のテクニックを紹介
- スコアデータを使った古典的なセイバーメトリクスから, 昨今流行りのStatcast(主にボールの動きのデータ)を用いた分析まで網羅
という内容になっています.
なお, 原著の「Analyzing Baseball Data with R, Second Edition」より(かなり)お手頃な価格で入手できるのも大きなポイントかと思います.*3
対象読者&要求されるスキルなど
表紙の情報をそのまま引用すると,
- セイバーメトリシャン. 要約すると「セイバーメトリクス愛好家・ファン」だったり「野球データが好き」な方.
- 熱烈な野球ファン. 読んで字の如し.
- 野球データの探求に興味のある学生.
ということになっています&原著も含めて読んだ私もこれは全くもって違和感ないです.
もうちょっと補足すると,
- Rおよび一部の章で使っているSQLについて, 初心者向けの解説は一切ないので「自分で調べて自学自習しながらすすめる」レベルの人もしくは別途RなりSQLを入門するような書籍・コンテンツも同時に進めると良さそう. これは後の章で補足します.
- 野球データセットの解説は載っているものの, 実際の所触りながら理解することも多いので「データをいい感じにいじって触りながら探索的に理解する」タスクや業務に慣れている人が向いている*4. 逆説的には「野球好きだけどデータを見るの面倒 or こわい」って人は合わない.
- データも事例もメジャーリーグなので「ワイは日本のプロ野球でやりたいんや, プロ野球のデータをクレメンス」希望だったりメジャーリーグに興味ない人にも辛い*5.
というのはあるかもしれないです.
ちなみに数学とか統計の知識・経験は読みながらやるで全然大丈夫な感じでした...が, 若干ではありますが「セイバーメトリクスの初歩的な内容」や「野球データの特徴量」の解説を端折っているので, そのへんが気になる方はセイバーメトリクス入門や, (手前味噌ですが)こちらのエントリーを補足的に読むと良いかと思います.
見どころ
実際に書籍を手にとって読んでいただきたいところは全部!...なのですが, 「野球データの探求」「データ分析をはじめたて」な方にはこの二点を特にオススメしたいです.
- データの紹介が充実している
- 数式とコードスニペットが良いお手本になる
目的別のデータ紹介
書籍の第1章の話なのですが, ここでは
- 選手およびチームのシーズンごとのデータ. Lahman Databaseの紹介.
- 試合ごと(Game by Game), 打席ごと(Play by Play)のデータ. Retrosheetデータセットの紹介.
- 投球や打球, プレーヤーの動きのデータ. Baseball Savantなどの紹介.
といったデータが例題・クイズといった演習と共に紹介されています.
書籍を読み進める意味でも非常に重要(なので第1章なのでしょう)であると同時に,
- データの独特なルール・記号の読み方
- かんたんなスキーマ定義
- 利用例
が載っているのでちょっとデータ分析・サイエンスができる方ならここを読むだけでもだいぶ自分で色々やれるんじゃないかなと思います.
数式とコードスニペット
これは日本語版になってすごく良くなったところだなと思っています.
是非電子書籍や本屋さんで手にとって読んでいただきたいのですが, 装丁がいい感じに数式とコードスニペットが読みやすいデザインになっててすごく良いです.*6
初心者へのアドバイス
これは自分が原著を元に自分が野球データサイエンスをしたときにやったことです&特に初心者にオススメしたいことでもあります.
Rについては第2章(R入門)および第3章(グラフィックス)で詳しい説明があるのですが, 合わせてR関係の入門書と合わせて読むことによって理解が深まりました.
- 作者:Jared P. Lander
- 発売日: 2018/12/28
- メディア: 単行本(ソフトカバー)
また, 後半に登場するSQLiteやMySQLについて, インストールや設定については触れていますがSQLの読み書きの入門は無い*7ので不安な方はSQLの入門書も合わせてあるといいかもです.
- 作者:池内 孝啓
- 発売日: 2018/05/02
- メディア: Kindle版
SQL入門の本は色々ありますが, これからはじめるSQL入門がしっくり来る感じなのでよく教本として使ってます.*8
応用編 - Pythonでやることもできます
これは書籍の話ではなく, このブログの話です.
原著の「Analyzing Baseball Data with R, Second Edition」をよく読み参考にしていたので,
Rによるセイバーメトリクス入門のネタのいくつかは既にこのブログにPython版としてあったりします.
統計的なデータ分析およびセイバーメトリクス系はRとPythonどっちでもやれるので好きな方でやるといいかもしれません.
第5章「得点期待値」
得点期待値については以前pandasのパフォーマンスに関するブログを書いた時に写経をしました.
計算そのものはデータの特徴がわかっていればpandasで十分出来ちゃいます.*9
なお, Python版コードは今の所非公開ですがアドベントカレンダーもありますしいずれ出すと思います.
第8章「選手の成績推移」
こちらも実は昨年やってます.
RとPythonを比較するにあたり, 第8章のミッキー・マントルの成績推移がちょうどよいネタだったので引用してやりました.
これは断片的なスニペットと共にPython版・R版を並べて書いてるので参考になるかも.*10
Pythonでやりたい方は
もし真似してPythonでやりたい方がいましたらぜひ,
Jupyter環境でPythonとR両方動かしながら写経することをオススメします!
RとPythonを比較するエントリーでも触れましたが,
- Jupyter Lab(Jupyter notebook)の環境を作る. Anacondaでも何でもいい.
- 上記環境にRkernelを入れる
と, 一つの環境でPythonもRも両方使えるようになります&RStudioよりやや劣るかもですがRも十分使えるので便利です.*11
Google Colabを使ってもいいかも.*12
結び - ⚾で探索的データサイエンスをはじめよう
というわけで, 待望していた野球データサイエンス本である, Rによるセイバーメトリクス入門の紹介でした.
- 作者:Max Marchi,Jim Albert,Benjamin S. Baumer
- 発売日: 2020/11/13
- メディア: 単行本(ソフトカバー)
大切なので2度言いますが, 原著より安いかつホント充実した内容なので野球ファンかつデータサイエンスをする方はマストハブですよ!
日本シリーズが終わった後, 年末の自学自習や来年の野球に思いを馳せつつ野球データサイエンスをする方が増えると嬉しいなと思います.
というのと, プログラミングするにせよSQLを読み書きするにせよ探索的データサイエンスはどんな職種でも最低限やるようなタスクになると思います.
そこを野球で先取りする感じでやるといいんじゃないっていうのも強く言いたいですしその参考にもなるんじゃないかなと思います.
わたしの関心事は、野球だけ。いったいなぜだろう?
それは、ほかの分野の数字と違って、野球のデータには 言葉と同じ力があるからだ。
上記はセイバーメトリクスの生みの親であるビル・ジェームズ氏の言葉なのですがホントそのとおり*13で, このブログがそんな野球データ分析を楽しむ方の助けになると幸いです.
最後になりますが, 翻訳者のTsuyuzakiさん, Nishiwakiさん, 技術評論社Takayaさん, 同じくレビュー参加したなういずさんホントおつかれさまでした!
*1:なお本日CS第二戦ですがこのブログはその結果を知らないまま書いてます(言い訳)
*2:個人的には日ハムの若手がフェニックスリーグで成長する姿を楽しむぐらいかな笑. CSと日本シリーズはほどほどに楽しみます.
*3:電子も紙も半額近くいや紙については半額以下です.
*4:データ取得・加工が苦じゃない, クレンジング前処理大歓迎みたいな野球好きには天国だと思います.
*5:モデル自体はプロ野球でもそのまま使えるものが多いです. がデータは自前でどうにかする必要があります. というのと, 野球データ分析を趣味でも仕事でもガチでやる人はメジャーリーグのデータでやりきったほうが絶対にいいです, これは断言します.(余談ですが私はメジャーリーグおたくです)
*6:同じく技術評論社さんから出ている, Pythonによる医療データ分析入門も良い装丁でそんなコメントをブログで書いてました. デザインの力ってすごい.
*7:ちなみに私は日常的にSQLを書いてるので困ってはいません
*8:現職や以前野球の仕事をしていたときも初期教育でめっちゃ活用しています.
*9:もっというとpandasでできるということはスプレッドシートでも出来ちゃうはず, 試してませんが.
*10:余談として, ここでやったネタがPyCon JP 2020の発表に繋がりました. 成績予測モデルの一部にAnalyzing Baseball Data with Rを参考にやったタスクもあります.
*11:個人的にはPythonの方が手に馴染んでいるのでJupyterでやってます.
*12:余談ですが書籍レビューの一分作業をColab上のRでやったのでおそらく動くと思います.
*13:今となっては他の分野の数字も言葉と同じ意味をもつようなモノもありそうですけどね.