渋谷駅前で働くデータサイエンティストのブログ

元祖「六本木で働くデータサイエンティスト」です / 道玄坂→銀座→東京→六本木→渋谷駅前

『データサイエンティスト養成読本 機械学習入門編』ご恵贈いただきました


タイトルを読んで字の如しですが、前作同様に*1技評さんから正式発売日より前に見本冊子をご恵贈いただきました。


データサイエンティスト養成読本 機械学習入門編 (Software Design plus)

データサイエンティスト養成読本 機械学習入門編 (Software Design plus)


ということで正式発売より前の時点で既に大変に前評判も高い本書ですが、早速書評してみようと思います。改めて書くまでもないことかもしれませんが、以下の書評は僕個人の主観的意見に基づくものなのでバイアスがかかりまくっている怖れがある点予めご了承ください。


ざっと内容を眺めてみる


前回の書評同様、本文中での章立てにこだわらず僕個人の視点から見て切り分けて、適当に小見出しをつけて紹介していきます。もしかしたら編集の皆さんや寄稿者の皆さんの意図とは食い違うかもしれませんので、特に寄稿者の皆さんからツッコミや補足説明を入れて下さると有難いですm(_ _)m


そもそも機械学習って何ぞや

第1部 しくみと概要を学ぼう!

特集1 機械学習を使いたい人のための入門講座・・・比戸将平

機械学習業界のオピニオンリーダーとしても著名な比戸さんによる、おそらくこれまでで最も分かりやすくかつ最も実態に良く沿う形で最も簡潔に書かれた「機械学習人工知能)」の全体像についての解説パートです。正直言って現場の人間としては「こういう記事を待っていたんですよ!!!」と叫びたくなるくらいの良テキストだと思います。


今後は「機械学習って何の役に立つんですか」とか言ってくる人間には一人残らずこの本買ってここのページだけ読め!と突きつけるのに使いたいぐらいです(笑)。また機械学習を活用したプロダクトを取り仕切るディレクターや営業の人たち、はたまた「人工知能」をうたうプロダクトを購入するクライアント側の人たちにも是非読んでもらいたいパートですね。人工知能機械学習)というバズワードに幻想を抱く人々に、冷静かつ的確な説明を与えてくれるナイスな節です。

ちなみに比戸さんご自身による刊行の言を綴ったブログ記事もありますので、こんな第三者がやいのやいの言う書評ブログ記事よりもまずそちらをお読みあれ。Q&Aが最も有用だというご本人のコメントには僕も完全同意します。この特集1全体を読むのも面倒という人には、このQ&Aを読んでもらうだけでも意味があるはずです。


機械学習分野全体のダイジェスト、ただしここから数式が出てくる

特集2 機械学習の基礎知識・・・馬場雪乃
  • 第1章 機械学習の問題設定
  • 第2章 教師あり学習
  • 第3章 教師なし学習
  • 第4章 応用(推薦・異常検知)

端的に言うとこの辺は『はじパタ』で取り上げられている内容のダイジェスト版みたいなもので、既に機械学習についてある程度学んでいる人にとっては初歩的な内容なんですが、初学者で特に数式アレルギーのある人だといきなり撃沈される危険性があるので、そういう人はこの節は一旦読み飛ばしても良いでしょう。2015年夏時点で既に「枯れた」とされる手法の数々を、手短にざっと眺める感じの節です。なお余談ですが、正則化の例としてLassoではなくRidgeが出てきたのが渋いなぁと思った次第です(笑)。


Rで機械学習の初歩を学ぶ

特集3 ビジネスに導入する機械学習・・・里 洋平/戸嶋龍哉

我らが@こと里傭兵洋平さんも参画しているこの節は、やはりRによる機械学習のビジネスシーンにおける実践例ということでありがちなパターンを例示しながら解説しています。ビジネス現場で働くエンジニアの人たちは、2節は一旦飛ばしてとりあえずこの3節から読んだ方が無難かもしれません。感覚的に分かりやすいのではないかと思います。

今や定番の機械学習手法となったDeep Learningの初心者向けの解説

特集4 深層学習最前線・・・得居誠也

あのChainerの開発者である得居さんの手による節。ともすれば理解するためにはゴツいテキスト1冊読まなければいけないようなDeep Learningの全体像を、極めてコンパクトにまとめて解説しています。この節の嬉しいところは、同じDNNをCaffe / Torch7 / Chainerでそれぞれ記述した時にどう異なるかを具体的なコードを示して比較してくれている点。後発でDeep Learningに手を出しているエンジニアの多くがどのフレームワークを選ぶべきかで迷っているようにも見受けられるので、こういう比較は非常に助かります。


R, Python, Julia, Spark MLlibを使い分けて比較しながら機械学習

第2部 手を動かして学ぼう!

特集1 機械学習ソフトウェアの概観・・・福島真太朗

畏友福島さんの手による節。全く同一のサンプルデータセットに対して、R, Python, Julia, Spark MLlibを用いて機械学習を実践してみて、その詳細を互いに比較するという、他書では見た記憶のないような大変面白い取り組みが紹介されています。実際の分析の現場でRとPython(そしてJulia, Spark)の使い分けに悩んでいる諸氏には是非一読をお薦めしたい節です。


Python機械学習を実践する際の定番がここに

特集2 Pythonによる機械学習入門・・・加藤公一
  • 第1章 イントロダクション
  • 第2章 Numpy、Scipy、matplotlibの基礎
  • 第3章 scikit-learn入門

あのはむかずさんが寄稿されている節。Pythonは汎用スクリプト言語としても非常に人気があり、中にはスクラッチから機械学習のコード全部書く人もいたりしますが*2、基本的にはやはり各種パッケージを利用して機械学習を実践しているエンジニア諸氏が多いのではないかと思います。そういう有用なパッケージを概観しつつ、これまで紹介されてきた各種アルゴリズムをどうやって実装・実践するかをコード例と実行例とともに分かりやすく解説しています。


レコメンドの基礎

特集3 推薦システム入門・・・関 喜史
  • 第1章 推薦システムのキホン
  • 第2章 推薦システムを作る
  • 第3章 推薦システムの高度化
  • 第4章 良い推薦システムを作るために

Gunosyの関さんの手による節。要はレコメンドシステムの解説なんですが、よくよく考えると意外とレコメンドに関する分かりやすい書籍ってそんなに多くない&機械学習にカテゴライズされる割に機械学習の書籍でしっかり解説されていることって思いの外少ないので、貴重な節だと思います。初学者向けに導入的な内容がメインですが、これまで学んでこなかった人にはちょうど良いレベル感かと。ちなみに僕個人の勝手な先入観ですが、レコメンドやってる人たちって結構ガチな方々が多くて全部スクラッチから書いてる的なイメージがあり*3、gensimでお手軽に回す例が紹介されているのは個人的には有難かったです。


機械学習と言うからにはやっぱり画像認識も

特集4 Pythonで画像認識にチャレンジ・・・阿部 厳
  • 第1章 画像認識とは?
  • 第2章 準備
  • 第3章 シンプルな画像認識を実装
  • 第4章 猫顔検出に挑戦

Deep LearningというかCNNの成功で今や「機械学習と言えば画像認識」と思われるくらいに人口に膾炙しつつある画像認識ですが、これまではOpenCVとかそのインタフェースとしてのC++とかのイメージが強くて手を出しにくかった人も多かったのではないかと。それをNumPy + scikit-image + scikit-learnでサクサクやってみましょうという初学者にも取っ付きやすい解説をしてくれている節です。僕もこれを読んでscikit-imageでやってみようかなぁと思った次第です*4


最後は産業応用の定番たる異常検知

特集5 Jubatusによる異常検知・・・熊崎宏樹
  • 第1章 はじめに
  • 第2章 アーキテクチャ
  • 第3章 テストデータからの異常検知
  • 第4章 サーバログからの異常検知

業界内では「ピー社」の愛称で親しまれるPreferred Infrastructure & Preferred Networksさんの代表的プロダクト、Jubatus分散オンライン機械学習エンジンを用いた異常検知について解説した節。僕なんぞはCRM畑が長いのであまり異常検知には縁がないのですが、むしろ産業応用的にはこちらの方が定番という側面もあるのでこの節の内容が有難いという読者も少なくないのではないでしょうか。


まとめ


内容:☆☆☆☆☆(非公開)
オススメ度:☆☆☆☆☆(非公開)


いつも通りご恵贈いただいた&多くの友人知人が寄稿しているということで、基本的に星はつけませんw 悪しからずご了承ください。その上で良かったところと惜しかったところを以下に書いておきます。

良かったところ


第1部第1節の冒頭で「本書の目的」として書かれているように、これまでの機械学習に関する日本語の書籍というと「人工知能と関連して現在と未来の機械学習の応用について語る新書=バズワード全開の薄い本*5」か「アルゴリズム解説を主とする研究者・学生向けの学術書=ガチ勢向けのガチ本*6」かのいずれかが大半で、その中間に当たる本がこれまでは少なかったんですよね。


その意味で言うと、この養成読本・機械学習入門編はまさに「とにかくまずは機械学習を自分の手で実践してみたい」という現場のエンジニアや駆け出しのデータサイエンティストそしてデータ分析の初心者が一番最初に読むべき本だと言って良いと思います。


実際、最初に「機械学習とは何ぞや」というテーマがこれ以上ないくらい丁寧に解説された上で、実コードとともにしかもR, Python, Julia, Spark MLlib, Jubatusなどなどと言語・フレームワークをまたいで実践例が紹介されており、特にビジネスやシステム開発の現場で実践してみたいと願うエンジニアやデータサイエンティストを目指す初学者には完璧な教科書になることでしょう。正直言って、これまで初学者向けに定番にできる機械学習のテキストがなくてうちの現場でも困っていたのですが、今後は安心して本書を誰にでも薦めたいと個人的に思うくらい、素晴らしい本だと感じています。


そうそう、細かい話を書くと参考文献リストと寸評が全ての節(特集)に付されているのも非常に良いと思いました。あ、これそう言えば養成読本の第1巻の書評で指摘してたポイントでしたっけ。。。もし反映していただけたのなら大変恐縮です(汗)。


惜しかったところ


ぶっちゃけ養成読本の第1巻と同じくらい、痒いところ全てに手が届く感じの良書なんですが、惜しかったと思った点を2つだけ。


1つはPythonでデータ分析という話題なのに何故かPandasが殆ど取り上げられていなかった点*7。これは正直本題ではないのでどうでもいいっちゃどうでもいい話なんですが、データ分析業界では割とPandasユーザーは多いと思うのでもう少し詳しく取り上げてもらっても良かったかなぁという感が個人的にはありました。「何甘いこと言ってるんだ、全部NumPyでやれ」と言われたらそこまでですがorz


もう1つは多分入門編の次の応用編?のテーマなので出てこなかったということなのでしょうが*8、あのChainerの得居さんが寄稿されているにもかかわらず肝心のChainerの記事が少なかった点。今やCNN実装のためにChainerユーザーになっているデータ分析屋はこの世の中ゴマンといると思われるので*9、是非続編ではChainerの詳しい記事がてんこもりになることを期待します。


おまけ


いやー、手前味噌ながら*10本当は拙著の第6章以降はこんな感じの分かりやすい内容&展開を目指したんですけどねー。。。世の中難しいものです。

手を動かしながら学ぶ ビジネスに活かすデータマイニング

手を動かしながら学ぶ ビジネスに活かすデータマイニング

まぁこうして養成読本の機械学習バージョンが出るということは、世の中がようやく機械学習*11を受け容れるようになったということでもあるという証左でもあると思うので、今後も自分の周囲半径5mで地道に機械学習と多変量モデリングの布教に努めたいと思います。。。


そして、もしかしたら次回作で求められているのはデータサイエンティスト養成読本前処理編ではないかとうっかり思ってしまったのですが、ひょっとすると自分の首を絞めることになりそうなのでこれ以上軽口を叩くのはやめておきます(笑)。

*1:実は『R活用編』もご恵贈いただいたのですが、内容があまりにも他書とかぶり過ぎている&R活用編なのにJuliaの記事が多過ぎる(笑)ために書評は見送っていたのでした。。。T屋さんごめんなさいごめんなさいごめんなさい

*2:というかはむかずさんが寄稿されているならきっとスクラッチから書いたって話になるはずだ!と思って信じて開いてみたら違ったのでちょっとびっくりしましたw

*3:過去のトラウマかもしれない。。。

*4:実はOpenCVPythonバインディングでしかやってこなかった

*5:内容が薄い、の意

*6:ガチ過ぎて最後まで読み切る前に撃沈する読者大多数

*7:福島さんの節には出てましたが。。。

*8:そう言えばトピックモデルもこの分だと応用編のテーマになる感じですかね?

*9:僕もそのために重い腰を上げてGPUスポットインスタンス目当てでAWSにお布施して自腹インスタンス立ち上げて維持しているくらいで

*10:ステマとも言う

*11:人工知能」というバズワードに置き換えてしまったとしても