はじめに
自分が機械学習の勉強を本格的に始めたきっかけは、業務で「この問い合わせログを自動分類したい」と言われたことだった。とりあえず scikit-learn のチュートリアルを写経して、なんとなく動くものはできた。精度も8割くらい出た。それで一度は満足した。
問題が起きたのはその後だ。運用を始めて数週間、精度が明らかに落ちてきた。原因を聞かれても答えられない。学習データの偏りなのか、前処理の設計が悪いのか、そもそも評価の切り方を間違えていたのか、切り分ける言葉を自分が持っていなかった。チュートリアルは「動かし方」を教えてくれるが、壊れたときの診断方法は教えてくれない。
そこから本を読み直した。ネットの記事は断片的で、同じ用語が微妙に違う意味で使われていて混乱する。腰を据えて体系的に読むなら書籍のほうが早い、と痛感した。
ここで紹介するのは3冊。よく見かける「入門書から順に難しくしていく」並べ方はあえて取っていない。ソフトウェアエンジニア出身の人間にとっては、まずコードに触って感触を得るほうが理解が速いと思っている。手を動かす本から入り、次に概念を整理し、最後に理論の裏側まで潜る順で並べた。
いずれもコード例と図が豊富で、読みながら手元で試せる本を選んでいる。
① Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎 — Andreas C. Müller, Sarah Guido
著者の Müller は scikit-learn のコア開発者を務めていた人物。共著の Guido はデータサイエンス領域の実務者だ。ライブラリを作った側が書いた入門書という点で、この本は立ち位置が独特である。
扱う範囲は教師あり学習と教師なし学習の主要アルゴリズム、そして特徴量エンジニアリングとモデル評価。線形モデルから決定木、ランダムフォレスト、SVM まで、それぞれの得意不得意を実際の挙動と一緒に説明していく。決定境界の図が多く、パラメータをいじると何が変わるのかが視覚的に入ってくる。
自分にとって効いたのは、後半のパイプラインと交差検証の章だ。前処理をどこで学習データだけに閉じ込めるか、テストデータの情報が漏れる典型パターンはどこか。ここを読んで、最初のプロジェクトで自分がやっていた評価が甘かったことに気づいた。
数式は最小限で、代わりに「なぜこのアルゴリズムがこのデータで失敗するのか」を丁寧に見せてくれる。ディープラーニングはほぼ扱わないので、そこは他の本で補う前提になる。
こんな人に: Python が書けて、まず動くものを作りながら機械学習の勘所を掴みたい人。
② 機械学習 100+ページ エッセンス — Andriy Burkov
Burkov は Gartner で機械学習チームを率いた実務家。本書は英語圏で最も名前を挙げられる ML 入門書のひとつで、100ページ強という薄さで話題になった。
薄いが密度は高い。教師あり学習の定義、勾配降下法、正則化、ニューラルネットの基礎、そして本番運用で考えるべきことまでを最短距離でつなぐ。各トピックは深掘りせず、代わりに「この概念はどの位置にあるのか」を示してくれる。地図のような本だ。
自分は①を読んだ後にこれを読んで、頭の中の用語が整列した感覚があった。バイアスとバリアンスの話、正則化がなぜ必要なのか、ハイパーパラメータ探索が何を探しているのか。手を動かして体で覚えたことに、あとから名前と理屈が付いていく順番は悪くない。
注意点として、これ1冊で実装力はつかない。数式も出るので、完全な初学者が最初に開くと薄さの割に手強く感じるはずだ。既にコードを触った経験がある状態で読むと価値が跳ね上がる。
こんな人に: 断片的な知識を短時間で体系に組み直したい人。移動時間で読み返す常備本を探している人。
③ Python Machine Learning: Machine Learning and Deep Learning with Python, scikit-learn, and TensorFlow 2, 3rd Edition — Sebastian Raschka, Vahid Mirjalili
Raschka は機械学習の研究者かつ教育者で、実装と理論の橋渡しがとにかく上手い。共著の Mirjalili はコンピュータビジョンを専門としている。
770ページの分量で、古典的な機械学習からディープラーニングまでを一気に押さえる。前半はパーセプトロンを NumPy で自作するところから始まり、アンサンブル学習や次元削減まで進む。後半は TensorFlow 2 と Keras で CNN、RNN、注意機構、GAN や敵対的生成の話題に入る。
この本の良さは、アルゴリズムを説明したあとに必ず自前実装を挟むところだ。ライブラリの関数を呼ぶだけでは見えない部分が、コードを書くと一気に具体化する。自分は勾配降下法の章を写経して、学習率の意味をようやく体感した。
洋書なので英語を読む負担はある。ただ登場する用語は日本語の記事でもそのまま使われるものが多く、思ったほど壁は高くない。通読よりも、必要な章を辞書的に引く使い方が現実的だと思う。
こんな人に: 中身の仕組みまで理解したい人。深層学習まで一冊で見通しをつけたい人。
まとめ
| ステップ | 読む本 | 得られるもの |
|---|---|---|
| 手を動かす | Pythonではじめる機械学習 | scikit-learn の実践力、評価とパイプラインの作法 |
| 整理する | 機械学習 100+ページ エッセンス | 用語と概念の全体地図、本番運用の観点 |
| 深く潜る | Python Machine Learning 3rd Edition | アルゴリズムの内部実装、深層学習の基礎 |
今の課題別に1冊選ぶなら、こんな判断でいい。
- モデルは動くが精度が伸びない、評価が正しいか不安 → Pythonではじめる機械学習
- 用語が頭に入らない、勉強した内容が結びつかない → 機械学習 100+ページ エッセンス
- ライブラリの中身がブラックボックスで気持ち悪い → Python Machine Learning 3rd Edition
- 画像やテキストの深層学習に踏み込みたい → Python Machine Learning 3rd Edition の後半
3冊すべてを通読する必要はない。①は最初から最後まで読む価値があるが、②は繰り返し読む常備本、③は必要な章だけ引く参照書として使うのが効率的だ。そして何より、コードは必ず自分の手で動かして壊してみることをおすすめする。