はじめに
数年前、自分は社内の需要予測プロジェクトに途中から放り込まれた。渡されたのは数十本のJupyterノートブック。前任者が去ったあとで、どのセルがどの前処理に対応しているのか誰も説明できない状態だった。
とりあえず動かしてみると、精度評価のコードでテストデータの平均を使って標準化していた。いわゆるリークだ。モデルの検証スコアは良く、本番の予測は外れる。原因を突き止めるまでに三日かかった。
このとき痛感したのは、ライブラリの使い方だけを追っていると落とし穴に気づけないということ。pandasのメソッドは検索すれば出てくる。だが「なぜこの検証方法が正しいのか」は、断片的な記事では身につきにくい。体系的に書かれた本を順番に読むしかなかった。
そこで自分が実際に手を動かしながら読み、仕事のアウトプットが変わった5冊を紹介したい。並べ方は難易度順ではなく、全体像をつかむ → データを扱えるようになる → 統計で足場を固める → モデルを正しく評価する → 中身を理解するという実務の順序にした。全部読まなくてもいい。今つまずいている場所に対応する1冊から入るのがいいと思う。
① 機械学習 100+ページ エッセンス — Andriy Burkov
著者のBurkovは機械学習の博士号を持ち、Gartnerで機械学習チームを率いていた人物。研究と実務の両方を見てきた経験が、取捨選択の潔さに出ている。
内容は教師あり学習から教師なし学習、半教師あり、強化学習まで。ページ数のとおり薄いので、各アルゴリズムの導出を丁寧に追う本ではない。代わりに「何が問題として定義されているのか」「どの前提が崩れると使えなくなるのか」が短い文で押さえられている。
自分はこれを、新しい手法の名前を聞いたときの地図として使っている。勾配ブースティングとランダムフォレストの立ち位置の違い、正則化が何を抑えているのか。そうした座標がわかっていると、個別の記事を読む速度が上がる。
数式は出てくるが、必要最小限。線形代数と確率の基礎があれば読み進められる。
注意点として、これ一冊で実装力はつかない。あくまで索引であり、手を動かす本は別に必要になる。
こんな人に: 機械学習の用語が飛び交う会議で、話の全体像をまず押さえたい人
② Pythonによるデータ分析入門 第3版 — Wes McKinney
著者はpandasの作者本人。ライブラリがなぜその設計になっているのかを、作った側の言葉で読める本はそう多くない。
扱うのはNumPyの配列操作、pandasのデータ構造、欠損値処理、groupbyによる集約、時系列データ、可視化まで。第3版はPython 3.10とpandas 1.4以降に対応していて、現場で書くコードとのズレが小さい。
自分にとって効いたのはインデックスの章だ。MultiIndexを雰囲気で使って意図しない行が消える、というミスを繰り返していたが、インデックスの整列規則を腰を据えて読んでから再現しなくなった。groupbyとapplyの挙動も同じで、仕組みを知ってから書くコードは短くなる。
リシェイプやピボットの章は辞書的に引ける。手元に置いて、詰まったときに該当ページを開く使い方が合っている。
機械学習の話はほぼ出てこない。データを整える工程に全振りした本だと割り切って読むのがいい。
こんな人に: pandasを検索しながら書いていて、毎回同じところで止まっている人
③ データサイエンスのための統計学入門 第2版 — Peter Bruce, Andrew Bruce, Peter Gedeck
著者陣はオンライン統計教育の運営やデータサイエンス実務の経験を持つ。統計の教科書というより、分析者が現場で必要になる項目を選んで並べた本に近い。
探索的データ分析から始まり、標本分布、ブートストラップ、A/Bテストと有意性検定、回帰、分類、そして統計的機械学習へ進む。コード例はRとPythonの両方が載っているので、どちらの環境でも手を動かせる。
ありがたいのは、よく誤用される論点に紙幅を割いているところ。p値が何を意味しないのか、多重比較で何が起きるのか、不均衡データで正解率を見ると何を見落とすのか。この辺りは一度きちんと読まないと、レビューで指摘されるまで気づけない。
自分は冒頭のリーク事故のあと、交差検証と再標本化の章を読み直した。検証の設計はモデル選択より先に決まる話で、順序を取り違えていたのだと納得した。
証明を追う本ではない。理屈の深掘りが欲しければ、ここから専門書に進むのがいい。
こんな人に: A/Bテストの結果や評価指標の解釈を、根拠を持って説明したい人
④ Pythonではじめる機械学習 — Andreas C. Müller, Sarah Guido
Müllerはscikit-learnのコア開発者の一人。APIの設計意図を知る人が書いた解説なので、ドキュメントを読むだけでは拾いにくい使い分けの基準が手に入る。
前半は教師あり学習と教師なし学習の主要アルゴリズムを、scikit-learnのコードと決定境界の図で見せていく。後半が本題で、特徴量エンジニアリング、パイプライン、交差検証、グリッドサーチ、評価指標の選び方に進む。
パイプラインの章は実務への影響が大きかった。前処理をfit_transformで素朴に書くとリークが入りうる。Pipelineに前処理とモデルをまとめて交差検証に渡せば構造的に防げる。この一点だけでも読む価値があった。
テキストデータの章も実用的だ。BoWからTF-IDF、n-gramまでを短い流れで触れるので、最初の分類器を作るには十分足りる。
深層学習の扱いは軽い。ニューラルネット中心にやりたい人は次の一冊へ。
こんな人に: モデルは作れるが、評価とチューニングの手順に自信がない人
⑤ [第3版]Python機械学習プログラミング — Sebastian Raschka, Vahid Mirjalili
Raschkaは機械学習の研究者で、オープンソースへの貢献も長い。理論の説明と動くコードを同じ密度で並べるスタイルが一貫している。
序盤でパーセプトロンと勾配降下法をNumPyだけで実装する。ライブラリを呼ぶ前に、重みが更新される過程を自分の手で書く構成だ。ここを通ると、scikit-learnのパラメータ名が何を指しているのかが腹に落ちる。
中盤は正則化、次元削減、アンサンブル、ハイパーパラメータ最適化。後半はTensorFlow 2とKerasに移り、CNN、RNN、GAN、強化学習まで広がる。一冊としてはかなり厚いので、必要な章だけ抜き出して読むのが現実的だと思う。
自分はアンサンブルの章を参考に、スタッキングの検証手順を組み直した。各手法の長所と短所が数式とコードの両方で示されるので、チームに説明する材料としても使いやすい。
数式が続く箇所はある。①〜④のどれかを済ませてから入ると挫折しにくい。
こんな人に: ライブラリの中で何が起きているかを、実装レベルで理解したい人
まとめ
| ステップ | 読む本 | 得られるもの |
|---|---|---|
| 地図を持つ | 機械学習 100+ページ エッセンス | 手法の位置関係と前提条件 |
| データを扱う | Pythonによるデータ分析入門 第3版 | pandasの設計理解と前処理の型 |
| 足場を固める | データサイエンスのための統計学入門 第2版 | 検定と評価指標の正しい解釈 |
| 正しく回す | Pythonではじめる機械学習 | パイプライン、交差検証、調整の手順 |
| 中身を開ける | [第3版]Python機械学習プログラミング | アルゴリズムの実装と深層学習 |
今の課題から1冊を選ぶなら、こう考えるといい。
- 用語が追えず議論に入れない → 機械学習 100+ページ エッセンス
- 前処理のコードが毎回長引く → Pythonによるデータ分析入門 第3版
- 検証スコアと本番の結果がずれる → データサイエンスのための統計学入門 第2版
- モデルの選定理由を説明できない → Pythonではじめる機械学習
- ブラックボックスのまま使うのが気持ち悪い → [第3版]Python機械学習プログラミング
5冊を並行で読む必要はない。1冊につき手を動かす時間を取るほうが、残るものは多かった。