はじめに
数年前、自分は社内の売上予測モデルの面倒を見る役を引き継いだ。前任者が残したノートブックは、pandas のメソッドチェーンが延々と並び、最後に RandomForestRegressor を呼ぶだけの構成だった。動いてはいる。ただ、予測が外れ始めた月に「なぜ外れたのか」と聞かれて、自分は何も答えられなかった。
理由はあとで分かった。自分が覚えていたのはライブラリの API だけで、前処理が何を捨てているのか、モデルがどんな仮定の上に立っているのかを理解していなかった。検索で出てきた記事を断片的につまみ食いして現場をしのいできたツケが、ここで一気に回ってきた感じだった。
そこから、手を動かすデータ加工の力、統計的な理屈、ライブラリ全体の設計という三層を、別々の本で埋め直した。順番にはコツがある。最初に理論書から入ると数式で止まるので、コードで慣れてから理屈に戻り、最後に総合演習に進む流れがいちばん続いた。
今回紹介するのは、その順に読んで実際に効いた3冊である。データサイエンス本にはキャリア論や資料作成の指南書も多いが、ここではコードと数式が載っている技術書だけに絞った。
① Pythonによるデータ分析入門 第3版 ―pandas、NumPy、Jupyterを使ったデータ処理 — Wes McKinney
著者の Wes McKinney は pandas の作者で、Apache Arrow の開発も主導している人物。ライブラリを設計した本人が書いた解説なので、API の背後にある設計思想がそのまま読める。
扱う範囲は、NumPy の配列演算から pandas の DataFrame 操作、欠損値の処理、groupby による集約、時系列データのリサンプリングまで。Jupyter 上で試す前提でコードが並んでいて、写経しながら進められる。
特に価値があるのは、groupby と pivot 周りの章と、時系列のインデックス操作の章だ。自分が引き継いだコードで一番あやしかったのが、まさに日付のズレと集約単位の取り違えだった。この辺を体系的に読み直すと、自分の書いた変換処理が何を落としているかを説明できるようになる。
第3版は Python 3.10 と新しい pandas に対応済み。逆に言うと、機械学習の話はほぼ出てこない。分析の前段、つまりデータを思った形に持っていく技術に全振りした本だと理解して読むのがいい。
こんな人に: pandas をコピペで使っているが、自分の前処理を説明できる状態にしたい人。
② Rによる 統計的学習入門 — Gareth James, Daniela Witten, Trevor Hastie, Robert Tibshirani
著者陣は Lasso や一般化加法モデルで知られるスタンフォードの統計学者たち。『統計的学習の基礎』の入門版という位置づけで、数式を追える最低限のレベルに抑えつつ、手法の理屈を省かずに書いている。
線形回帰から始まり、分類、リサンプリング法、正則化、決定木とランダムフォレスト、サポートベクターマシン、教師なし学習まで一通り並ぶ。各章末に R の実習があり、結果の読み方まで追える。
自分に一番効いたのは、交差検証とバイアス・バリアンス分解の章だった。「テストデータで精度が落ちた」の正体を言葉にできるようになったのはここを読んでからで、モデルを複雑にする前に疑うべき点が分かるようになった。
注意点として、実習コードは R で書かれている。業務が Python 中心なら、scikit-learn に置き換えながら進めるといい。この移植作業そのものが、各手法のハイパーパラメータが何に対応するかを覚える練習になる。
こんな人に: モデルの選択理由と評価結果を、根拠付きで説明できるようになりたい人。
③ scikit-learn、Keras、TensorFlowによる実践機械学習 第3版 — Aurélien Géron
著者の Aurélien Géron は YouTube の動画分類を担当していた元 Google のエンジニアで、現場で機械学習システムを回してきた経験が内容に出ている。
前半は scikit-learn で回帰、分類、アンサンブル、次元削減を扱い、後半は Keras と TensorFlow に移って CNN、RNN、Transformer、生成モデルまで進む。章ごとに Jupyter ノートブックが公開されていて、手元で動かしながら読める。
自分が繰り返し開いたのは、第2章のエンドツーエンドのプロジェクト演習だ。データの分割からパイプラインの構築、グリッドサーチ、最後の評価までを一本の流れでやる章で、ここで Pipeline と ColumnTransformer の使い方を覚えてから、自分のコードの構成が一気に整理された。
ボリュームは大きく、通読には時間がかかる。前半の scikit-learn 部分だけで実務の多くは回るので、深層学習の章は必要になった時点で戻る読み方で十分だと思う。
こんな人に: 前処理からモデル評価までを再現可能なパイプラインとして組めるようになりたい人。
まとめ
| ステップ | 読む本 | 得られるもの |
|---|---|---|
| 1. 手を動かす | Pythonによるデータ分析入門 | pandas / NumPy でデータを思った形に変換する力 |
| 2. 理屈に戻る | Rによる 統計的学習入門 | 手法の選択理由と評価指標の解釈 |
| 3. 実装でつなぐ | 実践機械学習 第3版 | 前処理からモデル運用までの一貫した組み立て |
今の課題別に、どれか1冊から始めるなら次の通り。
- 前処理のコードがその場しのぎになっている → Pythonによるデータ分析入門
- 精度が落ちた理由をうまく説明できない → Rによる 統計的学習入門
- 手法は知っているが実装の全体像が組めない → 実践機械学習 第3版
- 深層学習まで一気に見通したい → 実践機械学習 第3版の後半から逆引き
3冊とも分厚いので、通読を目標にすると止まる。自分の手元のコードで困っている箇所に対応する章だけ先に読む形でも、十分に効果はあった。