不確定な世界

科学の話題を中心に、勉強したことや考えたことを残していきたいと思います

「Pythonによる機械学習入門」;株式会社システム計画研究所編 読書感想 

本日紹介するのは、、株式会社システム計画研究所編、「Pythonによる機械学習入門」。
私は深層学習から入ってきたクチなので、ニューラルネットワーク以外の機械学習手法にはほとんどなじみがない。とりあえずscikit-learnの使い方でも覚えるかと手に取ったのが本書だ。本書は理論やアルゴリズムの実装は置いといてとにかくscikit-learnを使って機械学習を体験したい、という人をメインターゲットとしている。とはいえ、付録として理論的な部分の解説もあり、結構本質的なことが書いてある印象を受けた。

本書の前半の基礎編では、scikit-learnを使って決定木・ランダムフォレスト・サポートベクターマシン・線形回帰・k-means法などをどんどん試していく。名前だけはどこかで聞いて知っていたが、実際やってみるとやはり面白い。しかしながら良くも悪くもfitメソッドを呼ぶだけなので、正直身についている感はそれほどない。これだけの内容ならば、わざわざ書籍を購入しなくてもネット上でサンプルコードを探すだけで十分だろう。

本書の中で特徴的だと思ったのは後半の実践編、特に第6章の「画像による手形状分類」だ。この章では、著者であるシステム計画研究所が独自に用意したハンドジェスチャー画像を分類するモデルを学習する。オリジナルなデータセットを使い、データを増やしたりクレンジングしたりしながら、徐々に精度を上げていくことで、機械学習プロジェクトを追体験することができる。画像の撮影風景の様子も写真で載っており、機械学習のためのデータ準備の大変さが伝わってくる。mnistやirisを使っているだけではわからないことだ。
さらに、個人的に有益だったのは、HOG特徴量による特徴抽出が扱われていたことだ。別にHOG特徴量自体が詳しく解説されているわけではない。だが冒頭で述べた通り、私はほとんどニューラルネットワークしか扱ったことがなかったので、そもそも「人が頑張って設計した特徴量」というものを使ったことがなかったのだ。よく、「深層学習は自動で特徴量を見つけ出すのが凄い」といわれるが、当然ピンと来ていなかった。しかし、HOG特徴量を使うことで分類器の精度が向上することを目の当たりにすることで、何となく腑に落ちるものがあった。きっとCNNで畳み込むという操作も、本質的にはHOG特徴量を計算するという操作と同じなのだろう。HOG特徴量は人間が「こういう計算をして算出した値は画像の分類に役立つはずだ」という理論があって構築したものだが、CNNの場合は実際に正解を見ながら、こういう数値でフィルタ処理すれば(なぜか)精度が上がるよと、そういう計算方法を獲得するわけだ。この辺りの気づきが本書を読んだことでの最大の収穫だった。
なお、最後の第7章では四国電力のセンサデータを用いた回帰問題を扱うが、こちらは駆け足感が否めなかった。コードを載せずに結果だけ見せている部分も目立ち、消化不良で終わってしまった。こっちも第6章と同じように丁寧に進めてくれていれば、もう少し本書のおすすめ度が上がったのであるが…。

最後にまとめると、本書は主にscikit-learnを使って機械学習を体験してみたい初心者におすすめである。一方、理論やアルゴリズムの実装はほとんど扱っていない。ネット上にサンプルコードが無数に存在する中で、わざわざ本書で学ぶ必要があるかと言われると正直微妙なところではあるが、オリジナルデータセットを使った第6章は一読の価値があると思うので紹介させていただいた。

Pythonによる機械学習入門

Pythonによる機械学習入門

  • 作者:
  • 出版社/メーカー: オーム社
  • 発売日: 2016/12/01
  • メディア: 単行本(ソフトカバー)