島までは遠い 〜サークルアラウンド株式会社代表佐藤のブログ〜

佐藤正志@サークルアラウンド株式会社のことが少しわかる場所。プログラマーを育てるトレーナーとして、現役のソフトウェア技術者として、経営者の端くれとして、想うことをつづる。

「Pythonによるはじめての機械学習プログラミング(ジェンガ本)」は機械学習の素晴らしい実践的なとっかかりを提供しています

はじめに

著者の一人、島田さんから献本いただきました。ありがとうございます。 知り合った頃は学生だった島田さんが、CTOとして大活躍して、今度は本まで出されるということでオッサン目頭が熱くなります。

GWの最初にとにかく読み終えておきたかったので初日の課題にしました。いつもならコードを試しながらなのですが、この本に限っては私が機械学習についてあまり知識がない為「手を動かす前にまず全体を読み切ってしまおう」という流れで、先刻読み終えたところです。厚さの割にスイスイ読めました。

勧めたい読者像

私の理解ではこの本は「機械学習に無知なシステム開発者に対する、素晴らしい実践的なとっかかり」を作るための一冊だと思っています。もう少し分解して対象者を書くと以下のような感じでしょうか。

  • Pythonを扱ったことがある、もしくは書かれたPythonのコードを処理を類推しながら読み進められる人。
  • 機械学習全般には詳しくないけれども、とっかかりになる道具の扱い方や解説を求めている人。
  • 機械学習ライブラリを扱った際に、どのようにWEBなどのシステムに組み込むのかのとっかかりが気になる人。

また、機械学習というと画像や文章など様々なところで応用がなされるものだと思いますが、本書で主に解説されているのは以下でした。

  • 教師ありデータを元にしたデータ予測(scikit-learn)
  • 自然言語解析を利用した類語検索や文書分類(Word2vec, Gensim, PyTorch)

このあたりに興味のある人は特に満足度が高いでしょう。画像や動画を処理したいような方は別の入り口から入る方が良いかもしれません。

全体的な章立て

大きく分けて4部で構成されています。

  • 第1章 Pythonによる機械学習プログラミングの準備
    • WindowsやLinuxなど各環境ごとのインストールから、Visual Studio Codeのデバッグ実行までスクリーンショットなど交えて丁寧に解説されていました。まだ試してはいませんが、これに沿ってやればそれほど苦しまずに環境を手に入れることができそうです。
  • 第2章 Pandasによる前処理とデータの分析
    • 機械学習を実際に始める前に行うべきデータの整理や基本的な操作について書かれています。こちらもかなりページを割いて丁寧に手法が示されていると感じました。
  • 第3章 scikit-learnではじめる機械学習
    • 機械学習についての導入から実践的な内容が記されています。詳しくは後述。
  • 第4章 GensimとPyTorchを使った自然言語処理
    • Word2vec を用いた単語のベクトルを使ってベクトルの引き算から単語を推察したり、文書を分類したりします。

読み進めて感じたこと

この本は最初から読み始めると第2章が長い割になかなか想像している内容が出てこない為、やきもきしてしまうかもしれません。 「何かデータを処理するいわゆる『機械学習っぽさ』を体験したい」という人は第3章から入ってみても大丈夫かもしれません*1。この章を読んでモチベーションを高めてから第2章でも良い気がします。ただし本書は「第2章も含めて初めて完成する」と思うので以下に記します。

3章の内容はとても良いバランスを突いています。

  • 機械学習についての概論的な導入、現場における課題感など
  • データとコードを使った具体的な処理
  • 実際にWEBのシステムに組み込むための考え方

まで通して説明されているのは、冒頭に私が書いた「とっかかり」を与えたいという本書の目的感によるものではないでしょうか。

また、折に触れてS3にデータを置いておく話が出るとか、サンプルがWEB-APIを作成するものであったり、解説にマイクロサービスという言葉が出ていることからも「実際のシステム開発の現場」について著者が強く意識していると感じます。

そしてこの第3章を読了すると、丁寧で多少冗長にも感じた第2章がいかに大切なものだったかが見えてきました。第3章に倣って実際に大量のデータを扱おうと考えると、第2章の話題を避けて通ることができないはずです*2。第3章や第4章を完成するための大きなパーツとして第2章が存在していると理解しています*3

第4章は大量のテキストが行き交う現代のシステムにどうしてもやりたくなる自然言語の処理について書かれており、興味深く読ませていただきました。単語ベクトルという考え方を導入することで言葉の相関を整理することができ、それによって言葉の類推的なことができたり文書を分類することができるというものなので、実際の自分のサービスでもやってみると有意義な結果が得られそうに思います。

本を読んでフムフムするより実際に稼働しているシステムの情報を使って手を動かした時、4章の評価が適切にできるような気がしました。

おしまいに

とりあえずこれまで「機械学習難しそうだしよくわからない言葉いっぱい出てきそうだからなぁ」と敬遠していたシステム開発者だったらこの"ジェンガ本"は一度目を通してみて損がない一冊だと思います。弊社トレーニングで機械学習コース作るときは教材にしたいです。

Pythonによるはじめての機械学習プログラミング[現場で必要な基礎知識がわかる]

Pythonによるはじめての機械学習プログラミング[現場で必要な基礎知識がわかる]

  • 作者: 島田達朗,越水直人,早川敦士,山田育矢
  • 出版社/メーカー: 技術評論社
  • 発売日: 2019/04/19
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

*1:このことは本書の「はじめに」にも書かれているそうですが私読んだはずなのにスコーンと抜けてました ^^;

*2:私だととりあえずGoogleDocsに貼って色々コネコネしてしまいそうですが、そんなことしなくていいんですね...

*3:私はまだ機械学習を利用したシステムを組んだことはありませんが、第2章のように「雑多なデータを扱いやすい形に編集したり、可視化して傾向を掴むなどすることは実際にシステムに組み込むよりも時間のかかる大切なプロセスだ」とのメッセージではないかと感じています