はじめに
自分が最初に書いた機械学習らしいコードは、scikit-learn の fit と predict を呼ぶだけの十数行だった。データを読み込んで、モデルに食わせて、精度が出た。そこで満足していた。
問題はレビューで起きた。「この評価指標で妥当なのか」「学習データに予測時点では手に入らない情報が混ざってないか」と聞かれて、何ひとつ答えられなかった。ライブラリの使い方は分かるのに、中で何が起きているか説明できない。あのときの気まずさは今でも覚えている。
そこから半年ほど、ブログ記事やチュートリアルを読み漁った。断片的な知識は増えたが、バラバラのままだった。前処理の話と評価の話と最適化の話が、頭の中でつながらない。結局効いたのは、腰を据えて書籍を通読することだった。本は章の並びそのものが「どの順番で考えるべきか」を教えてくれる。
この記事では、自分が実務で手を動かしながら読んで役に立った5冊を、読む順番つきで紹介する。全体像をつかむ1冊から入り、Python で実装し、データと評価の作法を固め、最後に理論とニューラルネットへ踏み込む流れにした。数学の専門書は入れていない。必要になった時点で戻ればいい。
① 機械学習 100+ページ エッセンス — Andriy Burkov
著者の Andriy Burkov は Gartner で機械学習チームを率いてきた実務家で、博士号も持つ。研究と現場の両方を知っている人の筆致になっている。
この本の割り切りが気持ちいい。網羅をあきらめて、実際に使われている手法だけを拾っている。線形モデル、決定木、SVM、ニューラルネットワーク、主要なクラスタリング。それぞれが短い節で片付いていく。
自分が何度も読み返したのは「基本的な実践」にあたる章だ。特徴量エンジニアリング、正則化、ハイパーパラメータ調整、性能評価。現場で本当に時間を取られる作業が、ここにまとまっている。
ページ数が薄いぶん、説明はかなり圧縮されている。初見で分からない箇所は飛ばして進めたほうがいい。あとの4冊が勝手に補完してくれる。
こんな人に: 機械学習の地図をまず1枚持ちたい人
② [第3版]Python機械学習プログラミング — Sebastian Raschka, Vahid Mirjalili
Raschka は機械学習ライブラリ開発にも関わる研究者で、教える側としての経験が長い。説明の階段のかけ方がうまい。
プログラマ向けの入門書としては、自分が読んだ中で一番バランスがいい。理論、実装、フレームワークの使い方が同じ比重で並んでいて、どれかに偏らない。分類器とニューラルネットワークの扱いは特に丁寧だ。
学習データの前処理を扱う第4章と、モデル評価とチューニングの第6章は、業務コードを書く前に通っておく価値がある。交差検証の切り方や学習曲線の読み方は、ここで身につけた。
訓練したモデルを HTTP 経由で呼び出すところまで踏み込んでいるのもありがたい。推論をどう製品に載せるかという視点が最初から入っている。第3版では TensorFlow 2、GAN、強化学習も追加された。
こんな人に: Python でちゃんと動くものを作りながら理解を深めたい人
③ データサイエンス設計マニュアル — Steven S. Skiena
著者の Skiena は『アルゴリズム設計マニュアル』で知られる大学教員だ。教えることに慣れた人の本らしく、構成が異常に整理されている。
扱う範囲は広い。数学の基礎、データの収集と整形、統計、可視化、回帰、ランキング、クラスタリング、分類。機械学習の手前にある工程が、きちんと一つずつ章になっている。
自分にとって一番の収穫は可視化とデータ検査の章だった。モデルを変える前にデータを見ろ、という話が具体的な手順として書かれている。精度が伸びない原因の多くは、ここをサボったことにある。
章末の演習と、講義動画が公開されている公式サイトもある。独学で詰まったときの逃げ道が用意されているのは大きい。
こんな人に: モデルより手前の工程で毎回つまずいている人
④ Rによる 統計的学習入門 — Gareth James, Trevor Hastie, Robert Tibshirani, Daniela Witten
著者陣は統計的学習の分野を作ってきた面々で、Hastie と Tibshirani は『統計的学習の基礎』の著者でもある。この本はその弟分として、意図的に数式を抑えて書かれている。
読む目的を絞るといい。手法のカタログとしてではなく、モデルをどう選びどう評価するかの教科書として読む。バイアスとバリアンスのトレードオフ、交差検証、正則化。この三つの説明は、自分が読んだ中でいちばん腑に落ちた。
コード例が R なのは、エンジニアには少し遠い。ただ考え方の部分は言語に依存しない。手を動かしたければ、同じ処理を scikit-learn で書き直すと理解が二重に深まる。
数式が出てくる箇所も、意味を日本語で言い直す説明がついている。詰まったら図だけ追っても元は取れる。
こんな人に: モデル選択と評価の根拠を自分の言葉で説明したい人
⑤ ニューラルネットワークとディープラーニング — Charu C. Aggarwal
著者の Aggarwal は IBM の研究者で、データマイニング分野の著書が多い。本書も大学院レベルを想定した本格的な教科書だ。
基礎から始まり、深層学習の外側にも手を伸ばしている。浅いネットワーク、コホネンマップ、ボルツマンマシンといった今は主流でない構成まで並ぶ。ニューラルネットワークがいかに汎用的な道具かが見えてくる。
学習のメカニズムの説明が厚い。逆伝播、勾配の消失、初期化、正則化の扱いが章として独立している。ここを通ると、学習が収束しないときの当たりのつけ方が変わる。
重い本なので、通読より辞書的な使い方を勧める。実装で行き詰まった手法の章だけ開く。その使い方でも十分に元が取れる。
こんな人に: 深層学習の挙動を理屈で説明できるようになりたい人
まとめ
| ステップ | 読む本 | 得られるもの |
|---|---|---|
| 1 全体像 | 機械学習 100+ページ エッセンス | 使われている手法の地図 |
| 2 実装 | [第3版]Python機械学習プログラミング | Python で動かす力と評価の作法 |
| 3 データ | データサイエンス設計マニュアル | 前処理・可視化・分析の工程設計 |
| 4 理論 | Rによる 統計的学習入門 | モデル選択と汎化性能の根拠 |
| 5 深掘り | ニューラルネットワークとディープラーニング | 学習メカニズムの理解 |
今の課題別に、1冊だけ選ぶならこうなる。
- 用語についていけない: 機械学習 100+ページ エッセンス
- コードは書けるが設計に自信がない: [第3版]Python機械学習プログラミング
- 精度が伸びず原因が分からない: データサイエンス設計マニュアル
- 評価指標の選び方を説明できない: Rによる 統計的学習入門
- 深層学習が学習しない理由を知りたい: ニューラルネットワークとディープラーニング
5冊すべてを一気に読む必要はない。1冊目で地図を持って、詰まった方向の本へ寄っていく。自分はその進め方でようやく、冒頭のレビューで答えられなかった質問に答えられるようになった。