0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python機械学習の実践書4選

0
Posted at

はじめに

数年前、社内の在庫需要を予測するモデルを scikit-learn で組んだ。やったことは単純で、集めたテーブルを RandomForestRegressor に流し込み、交差検証のスコアが 0.9 を超えたので満足して本番に出した。結果、稼働初週で予測が実需から大きくずれた。

原因は検証の切り方だった。時系列のデータをランダムにシャッフルして分割していたので、未来の情報が学習側に混ざっていた。スコアは最初から嘘をついていたわけだ。当時の自分はブログ記事とサンプルコードだけで組み立てていて、評価設計の基本が頭に入っていなかった。

断片的な記事は、目の前のエラーを消すのには強い。ただ「自分が今何を間違えているか」に気づく力は、あまりつかない。気づけない間違いはテストにも引っかからず、そのまま本番に出ていく。あの一件のあと、腰を据えて書籍で埋め直した。

ここで紹介するのは4冊。基礎の土台、理論の圧縮、深層学習の実装、本番運用の順に並べた。自分が実際に詰まった順番そのままである。日本語版が手に入るものを中心に選んでいる。

① Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎 — Andreas C. Müller, Sarah Guido

Amazonで見る

Müller は scikit-learn のコア開発者で、コロンビア大学で講師も務めた人物。共著の Guido は現場のデータサイエンティストだ。ライブラリを作っている側が書いた入門書という点で、説明の重心が独特である。

前半は教師あり学習のアルゴリズムを一つずつ回していく。線形モデル、決定木、ランダムフォレスト、カーネルSVM、それぞれが何に強くて何で崩れるかを、同じデータセットで比較しながら進む。スケーリングが効くモデルと効かないモデルの違いが、図で一目で分かる。

後半が自分には効いた。前処理とパイプライン、交差検証とグリッドサーチ、そして特徴量エンジニアリングの章だ。Pipeline に前処理を閉じ込めて GridSearchCV に渡す、という形がなぜ必要なのか。あの在庫予測で自分がやったリークは、まさにこの章が警告している典型例だった。

注意点として、深層学習はほとんど扱わない。原書が2016年なので、一部のAPIは現在の scikit-learn と差がある。概念の説明が主役なので読む価値は落ちないが、コードは最新ドキュメントと照らし合わせたほうがいい。

こんな人に: scikit-learn は書けるが、モデル選択と検証の根拠を人に説明できない人。

② 機械学習 100+ページ エッセンス — Andriy Burkov

Amazonで見る

Burkov は長年の実務家で、Gartner で機械学習チームを率いていた。研究と現場の両方を知っている人の筆致で、無駄がほとんどない。

Python の本ではなく、機械学習そのものの本だ。線形回帰からロジスティック回帰、SVM、決定木、勾配ブースティング、ニューラルネット、教師なし学習まで、薄さの割に射程が広い。数式は出てくるが、理解に必要な分だけに絞られている。

良さは密度と読み返しやすさにある。たとえばカーネルトリックや正則化の説明は要点だけが数ページに収まっていて、分かったつもりになっている箇所の穴をすぐ特定できる。自分は通勤で2周して、その後は辞書として開いている。

逆にコード例はほぼない。手を動かしながら覚えたい人の一冊目には向かない。①と並べて、概念の整理役として使うのが現実的だと思う。

こんな人に: 用語は使えるが、裏にある数式を一度まとめて棚卸ししたい人。

③ PythonとKerasによるディープラーニング — François Chollet

Amazonで見る

著者は Keras の作者で、Google のエンジニア。フレームワークの設計者が書いた解説なので、APIの背景にある思想まで透けて見える。

画像分類から始まり、テキスト、時系列と進む。CNN が何を見ているのか、RNN が系列をどう畳み込むのかを、数式よりも図とコードで押していく構成だ。活性化マップを可視化する章は、モデルの中身がブラックボックスに見えなくなる体験だった。

自分に刺さったのは、データが少ない状況をどう戦うかの議論。データ拡張、ドロップアウト、学習済みモデルの特徴抽出と微調整。業務で用意できる教師データは大抵足りないので、この順番で手を打つという判断基準が実務で何度も役に立った。

第1版なので Keras の書き方は現在と差がある。tf.keras 前提で読み替える手間はかかる。それでも設計の考え方は古びていない。

こんな人に: 深層学習のコードを自分の手で動かし、層の選び方の意図まで掴みたい人。

④ 機械学習エンジニアリング — Andriy Burkov

Amazonで見る

②と同じ Burkov の著作で、こちらはモデルの外側を扱う。プロジェクトの優先度付け、データ収集とラベル付け、特徴量の管理、デプロイ、監視、再学習までが一通り並ぶ。

精度を上げる話は最小限で、代わりに「なぜ本番で壊れるか」に紙面が割かれている。学習時と推論時で特徴量の計算が食い違う、分布が静かにずれていく、オフライン評価がビジネス指標と連動していない。自分が踏んだ地雷の大半がここに載っていた。

サービング形態の整理も実用的だ。バッチ、オンデマンド、デバイス上という選択肢を、レイテンシと運用コストの観点で比較してくれる。この判断を最初にやらないまま作り始めると、あとで作り直しになる。

アルゴリズムの解説はないので、①〜③を終えたあとに読むのが順序として正しい。MLOps の入り口を言葉で整理したい人には、現状これが一番まとまっている。

こんな人に: PoC は作れるのに、本番運用と監視でつまずいている人。

まとめ

ステップ 読む本 得られるもの
1. 土台を作る Pythonではじめる機械学習 前処理、検証設計、モデル比較の基準
2. 理論を締める 機械学習 100+ページ エッセンス 各手法の数式と仮定の整理
3. 深層学習を書く PythonとKerasによるディープラーニング CNN・RNN の実装と少量データ対策
4. 運用に乗せる 機械学習エンジニアリング デプロイ、監視、再学習の設計

今の課題から1冊を選ぶなら、こう考えればいい。

  • サンプルコードは動くが数字の意味が説明できない → ①
  • 手法名は知っているのに中身を聞かれると詰まる → ②
  • 画像やテキストを扱う案件が降ってきた → ③
  • 検証では良かったモデルが本番で劣化している → ④
  • 独学で全体像から固めたい → ① から順に通す

4冊を並べて読んで分かったのは、精度を詰める知識と、壊れないものを作る知識が別物だということ。前者ばかり追っていた頃の自分に、④を先に渡してやりたい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?