『Pythonではじめる機械学習』は機械学習を始めたい人に最適な良書
『Pythonではじめる機械学習』はタイトルの通り「機械学習を始めたい」という人におすすめの良書。
「機械学習」あるいは「AI(人工知能)」という言葉に対する過度な期待は収まりつつあるが、機械学習自体は様々な分野で当たり前のように使われる技術になっている。とりあえずツールとして機械学習を使ってみたいという人、機械学習の入門書を探しているという人にぜひ読んでみてほしい。
オライリージャパン
注意点と良い点を紹介する。
- 目次・内容
- GitHubのサンプルコード
- 注意点 / こんな人にはオススメできない
- まったくのPython初心者には難しい
- ディープラーニングについての説明はごくわずか
- 良い点 / こんな人にオススメしたい
- 機械学習アルゴリズムの説明が実践的
- 特徴量エンジニアリングの説明が実践的
- scikit-learnの入門書としても最適
- まとめ
目次・内容
正式な書名は『Pythonではじめる機械学習 ――scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎』。Pythonのライブラリscikit-learnを使って機械学習を行う方法が詳細に解説されている。
目次は以下の通り。全392ページ。
- 1章 はじめに
- 2章 教師あり学習
- 3章 教師なし学習と前処理
- 4章 データの表現と特徴量エンジニアリング
- 5章 モデルの評価と改良
- 6章 アルゴリズムチェーンとパイプライン
- 7章 テキストデータの処理
- 8章 おわりに
より詳しい目次はオライリーの公式サイト参照。
GitHubのサンプルコード
最近の多くの書籍と同様に、本書でもGitHubにサンプルコードが公開されている。原著のものなのでコメントは英語のまま。
各章がひとつのJupyter Notebookファイル(ipynb
)になっており、GitHub上でそのまま開くとキレイに表示される。もちろんcloneあるいはダウンロードしてローカルで実際に動かすことも可能。
書籍では残念ながら図表が白黒だがJupyter Notebookではカラーで表示されるので、適宜参照しながら読むといいと思う。コードもシンタックスハイライトが効いているほうが見やすい。
注意点 / こんな人にはオススメできない
まったくのPython初心者には難しい
Python自体はじめて、という人にはおそらく難しい内容。
他のプログラミング言語には精通している、というような場合だとなんとかなるかもしれないが、上記のGitHubのサンプルコードを確認して手も足も出なさそうであれば、まずはPythonの入門書から始めたほうがいいだろう。
Pythonの入門書としては以下のものがおすすめ。
また、Pythonはある程度分かっているという人も、NumPyおよびpandasの知識がないとサンプルコードの理解が難しい部分があるかもしれない。とりあえず本書のサンプルコードを写経して動かしてみるだけなら問題ないだろうが、実際に自分のデータで試してみる際にはNumPy, pandasによる前処理は必須。
NumPy, pandasは『Pythonデータサイエンスハンドブック』で詳しく解説されている。
ディープラーニングについての説明はごくわずか
ニューラルネットワークおよびディープラーニングについても触れられているが、分量は10ページ程度。ディープラーニングをやってみたい、ディープラーニングを学びたい、という人にはおすすめできない。
ただ、「ディープラーニングってなんかすごそう」というようなイメージだけでディープラーニングにこだわっているのであれば、むしろ本書を読んでみるといいと思う。ディープラーニングは確かに強力だが、他の機械学習アルゴリズムのほうが適している場合もある。
良い点 / こんな人にオススメしたい
機械学習アルゴリズムの説明が実践的
2章では教師あり学習、3章では教師なし学習のアルゴリズムについて代表的なものが説明されている。
数式で厳密に理論を説明する、といったものではなく、サンプルデータを使ったグラフで各アルゴリズムの特徴が視覚的に説明されている。上記のGitHubのサンプルコード(.ipynb
)を見るとどんな感じか雰囲気が分かると思う。
素晴らしいのが各アルゴリズムについて「長所、短所、パラメータ」がまとめられている点。
「このアルゴリズムはどういう場面に適している / 適していない」というのが簡潔にまとめられている。また、重要なパラメータとそのチューニングの指針(大きくする / 小さくするとどうなるか)も説明されているので、実際に機械学習を試してみる際には非常に役立つだろう。
特徴量エンジニアリングの説明が実践的
アルゴリズムの説明だけでなく、特徴量エンジニアリングの説明も実践的。
機械学習を行う上では、元の特徴量をビニングしたり複数の特徴量の積を新たな特徴量とするなどの「特徴量エンジニアリング」が必要となる。
本書では、なぜそのような処理が機械学習の性能を向上させるのかという理屈がシンプルに説明されている。
さらに、例えば決定木ベースのモデルを使うのであればビニングしても多くの場合は意味がない、というような、モデルにとってどのような特徴量エンジニアリングが必要となるかについても述べられている。
scikit-learnの入門書としても最適
紹介されているすべてのアルゴリズムについてscikit-learnでどのように実装するかがサンプルコードとともに示されている。著者のAndreas Mueller氏はscikit-learnのメンテナでもあるのでその正確さは間違いないはず。
LightGBMなどの新しいライブラリもscikit-learnに準拠したインターフェイスを備えているものが多い。機械学習におけるデファクトスタンダードともいえるscikit-learnのインターフェイスに慣れておくことはこの先も役に立つだろう。
まとめ
一昔前の「データサイエンティスト」のように「機械学習エンジニア」や「AIエンジニア」を目指す人は増えているようだが、機械学習は特にそれを専門とする人以外も日常的に使うツールになっていくと思われる。
「機械学習エンジニア」を目指している人にとってもそうでない人にとっても、とりあえず機械学習を使い始めるための準備として本書『Pythonではじめる機械学習』は最適の一冊だと思う。
オライリージャパン