六本木で働くデータサイエンティストのブログ

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

データサイエンティストもしくは機械学習エンジニアを目指すならお薦めの初級者向け6冊&中級者向け15冊(2017年春版)

f:id:TJO:20150308132412j:plain
(Photo credit: https://pixabay.com/en/books-door-entrance-italy-colors-1655783/)

この記事は一昨年のこの書籍紹介記事のアップデート版です。

相変わらず毎月のように新刊書が出続けるデータ分析業界ですが、良い本が増え続けてきたせいでついに初級者向けは6冊、中級者向けは何と15冊にまで膨れ上がってしまいました(汗)。ともあれ、自分のところにアフィリエイトの類は一銭も入らないにもかかわらず*1懲りずに書籍紹介をやろうと思います。


あ、最初に断っておきますが僕の知識レベルは極めて適当なので、極めていい加減なことを書いている可能性があります。また最初に読んでから時間が経っていて記憶があやふやなせいで、内容に関する記述が不正確な書評が混じっている可能性もあります。誤っているところやおかしいところがあったらバンバン突っ込んでください。よろしくお願いいたしますm(_ _)m

初級者向け6冊


初級者向けですが、色々新しい良書が出てきたので若干アップデートしています。特に機械学習関連は昨今の人工知能ブームのおかげで「本当にゼロから学びたい人向け」書籍が出てくるようになったので、過熱気味のブームであっても良いこともあるんだなと思う次第です。

総論

データサイエンティスト養成読本 登竜門編 (Software Design plus)

データサイエンティスト養成読本 登竜門編 (Software Design plus)

これは個人的には今回一押ししたい一冊。皆様ご存知データサイエンティスト養成読本の「登竜門編」、このシリーズ待望の初級者向けコンテンツです。そもそも論としての「データ分析という仕事」についても1章を割いている点は最近の(ややマニアックになりがちな)書籍とは一線を画していて良いですね。そして統計学機械学習・R / Pythonプログラミング・データ前処理・データベース・可視化などなどデータ分析に関わる諸分野をバランス良くカバーしたムック本で、初級者に真っ先にお薦めしたい一冊です。個人的には「データ分析業務の8割を占める」前処理についても1章が割かれている点に好感を持ちました。ちなみに余談ですが、R本&データサイエンティスト養成読本シリーズとしてはこれまでのRおじさん執筆メンバーがフレッシュな顔ぶれにほぼ総入れ替えになっていて*2、じわりと新世代が台頭してきているのかなと感じています。


改訂2版 データサイエンティスト養成読本 [プロになるためのデータ分析力が身につく! ] (Software Design plus)

改訂2版 データサイエンティスト養成読本 [プロになるためのデータ分析力が身につく! ] (Software Design plus)

で、登竜門編を読んであらかたのことが身についたら次に進むべき一冊がデータサイエンティスト養成読本初巻の改訂2版。初版から3年が経過したことで色々なコンテンツがアップデートされています。特にこの3年の間に広く普及した可視化BIツールのTableauについて1章が割かれているのが印象的かなと。もちろん、R / Pythonによるデータ分析の実践例やSQL、さらにはwebスクレイピングと言ったデータ分析業務における各種スキルについても初版同様に広くカバーされています。

統計学

このブログで一貫してお薦めしている「統計学的な考え方そのもの」についての入門書。基本の「き」からExcelGoogle Sheetsを使って学ぶことができます。代表値の概念やヒストグラム・散布図といった統計学の前段に当たるところから、相関係数や単回帰のようなその先の統計分析の初歩になるところまでをカバーしています。


Rによるやさしい統計学

Rによるやさしい統計学

Rで簡単にコードが書けて実践可能な例題をズラリと並べた統計学の入門書。入門書と言っていますが、内容自体は実はこの後に並んでいる中級者向けと同じぐらいのところまでを広くカバーしています。しかしながら、この本の良いところは数式を減らして代わりに徹底してRでコードを書いて実践し、なおかつプロットなどの可視化で視覚的に体感できるようになっている点。とりあえずこの本を最後まで写経*3すれば、中級者向けの統計学の書籍も読みこなせるのではないかと思います。

機械学習人工知能

コンピューターで「脳」がつくれるか

コンピューターで「脳」がつくれるか

ちょっと前に書評を書きましたが、全く一切数式が登場しない機械学習(そして人工知能)の入門書です。機械学習はおろか人工知能ってそもそも何???という人はまずこちらの本から読まれると全体像がつかめて良いでしょう。この本はいわゆる「弱いAI」と「強いAI」の概念についても触れているのでお薦めです。


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

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

そして初級者向け6冊のトリを飾るのが、データサイエンティスト養成読本シリーズの機械学習入門編。以前にも書評しましたが、ある程度PythonやRに触れ始めた人が「その次に機械学習をやってみよう」と思い立った時に読むべき一冊だと思います。そもそも機械学習とは何をするものなのか?というビジネスパーソン向けの解説から始まり、機械学習の理論的な基礎、R / Pythonその他のプログラミング言語による実践例、さらにはレコメンデーションやDeep Learningフレームワークの紹介などもあり、「入門」という割にはボリューム満点の一冊です。


中級者向け15冊


こちらはそれほど大きくラインナップは変えていませんが、ここ1年余りの間に様々な技術的ブレイクスルーや社会の関心を大きく集めるような事例が出たりしたので、それらを理解する上で参考になるような書籍も加えてあります。また新しく出た良書に差し替えたところもあります。


特に機械学習に関しては、Deep Learningへの世間の関心がサチるレベルにまで高まってきているのを踏まえて異例かもしれませんが4冊入れてあります。その分他の分野を削ったという側面もありますが(後述)、あくまでも2017年春現在の状況を反映したものですよということで悪しからずご了承あれ。

統計学

統計学入門 (基礎統計学)

統計学入門 (基礎統計学)

自然科学の統計学 (基礎統計学)

自然科学の統計学 (基礎統計学)

人文・社会科学の統計学 (基礎統計学)

人文・社会科学の統計学 (基礎統計学)

鉄板中の鉄板である東京大学出版会の赤本・青本緑本の3巻シリーズです。記述統計・確率分布・中心極限定理*4などの確率論の基礎中の基礎・検定論・重回帰分析といった初歩を扱った赤本、実験計画法・線形モデル・最尤法・適合度検定諸論・GLM・検定力の基礎・乱数の基礎など自然科学分野でよく必要となるところを揃えた青本、そして系列相関・不均一分散・回帰モデル・操作変数法・内生性・時系列・疫学統計など経済学や社会科学分野でよく必要となるところを揃えた緑本、というラインナップです。


サンプルサイズの決め方 (統計ライブラリー)

サンプルサイズの決め方 (統計ライブラリー)

サンプルサイズ決定法に関しては今のところこれより理論面について詳しい和書は見当たらないので、相変わらずお薦めしておきます。非心t分布の話題など若干初学者にはハードルが高い部分もありますが、サンプルサイズの決め方に悩んでおいでの方であれば持っておいて損のない一冊かと。


GLMからGLMMそしてMCMCを利用したベイジアンモデリングという、統計モデリングの一連の発展を俯瞰的に学ぶのにベストなのは相変わらずこちらの「みどりぼん」だと思います。ほぼ全編に渡って対応するRコードとWinBUGSコード(Stanが普及した現在ではそろそろ時代遅れかもですが)とが例示されており、実践面でも非常に役立つテキストです。


StanとRでベイズ統計モデリング (Wonderful R)

StanとRでベイズ統計モデリング (Wonderful R)

そして中級者向け統計学テキストのトリは、@さんの手によるStanコーディング&ベイジアンモデリングを網羅した待望の一冊。Stanコーディングについて解説するのみならず、ベイジアンモデリングをやる上で必要な確率分布の知識、実際にモデリングで問題になるポイントに対するソリューション、一歩進んで痒いところに手が届くようなモデリングを可能にするStan文法、MCMCサンプリングが収束しない場合の対処法、HMCで動くStanの鬼門でもある離散値を取るパラメータの扱い方、そして時間・空間的相関を伴う場合のモデリングと、ベイジアンモデリングを実践する際に直面し得る問題のほぼ全てをカバーしています。Stanユーザーなら何があろうとも必携のテキストです。

機械学習

はじめてのパターン認識

はじめてのパターン認識

機械学習の代表的なアルゴリズムをお手軽に学びたければ、依然としてこの「はじパタ」がベストの一冊でしょう。機械学習分類則の基礎から、線形モデル・ロジスティック回帰・Neural Network (NN)・SVM・ランダムフォレスト・階層的クラスタリング・非階層的クラスタリング(EMを含む)といった一通りのアルゴリズムをコンパクトに学ぶことができます。


猫も杓子もDeep Learning(深層学習)に取り組むこのご時世において、あえてNNの初歩中の初歩を完全にPythonのスクラッチ*5手で組むことで理解してもらおうという意欲的な入門書がこちらの一冊。僕も読んでPythonコード写経してみましたが*6、これなら確かにNNの個々の要素の基礎を分かりやすく身につけることが出来ると思います。肝心のDeepにするところだけ「そもそもスクラッチで組んでも学習が遅過ぎて回らない」ということで本文中に書かれていない*7のが勿体無い感じですが、後はback propagationはもちろんAdaGradやAdamと言った最適化のところまでスクラッチで組ませるという凝りようで、個人的にはNN & Deep Learning入門書の現時点でのベストだと思います。


誰もがDeep Learningをやるのが当たり前になりつつある中で、やはり特に注目されるのが画像認識という分かりやすいテーマで最大の威力を発揮するConvolutional Neural Network (CNN)。その最も分かりやすい初歩をTensorFlowベースで解説したのがこちらの@さんの手による一冊。CNNの裏側にある数学的・理論的な基礎からそのTensorFlowによる実装とその意味までを丁寧に説明してあって、初学者でも取っつきやすいと思います。


深層学習 (機械学習プロフェッショナルシリーズ)

深層学習 (機械学習プロフェッショナルシリーズ)

Deep Learningの理論的な基礎をできるだけ手っ取り早く学びたいということであれば、やはりこちらの講談社MLP青本の深層学習本がベストかと。基本のback propagation, autoencoder*8, DNN, CNN, LSTM-RNN, RBMとDeep Learningの基礎知識が一通り全て揃っていて、尚且つ極端に難しい数式類もないので読みやすいはずです。


深層学習 Deep Learning (監修:人工知能学会)

深層学習 Deep Learning (監修:人工知能学会)

おそらく現状ではDeep Learningについて学ぶ上で最も網羅的に必要事項をカバーしている和書は、この人工知能学会編の深層学習本でしょう。Deep Learning本4冊の中では一番数式が多く、尚且つ研究者向けの総説を集めた書籍でもあるので一般向けとしては若干ハードルの高い本ですが、目的別(例えば画像認識・音声認識自然言語処理など)にいかなるDeep Learningが用いられるか・それはどういうアルゴリズムから成っているのか、などなどの情報が詰まっており、最先端のDeep Learning研究を理解する上では大いに役立つ一冊です。


統計的学習の基礎 ―データマイニング・推論・予測―

統計的学習の基礎 ―データマイニング・推論・予測―

  • 作者: Trevor Hastie,Robert Tibshirani,Jerome Friedman,杉山将,井手剛,神嶌敏弘,栗田多喜夫,前田英作,井尻善久,岩田具治,金森敬文,兼村厚範,烏山昌幸,河原吉伸,木村昭悟,小西嘉典,酒井智弥,鈴木大慈,竹内一郎,玉木徹,出口大輔,冨岡亮太,波部斉,前田新一,持橋大地,山田誠
  • 出版社/メーカー: 共立出版
  • 発売日: 2014/06/25
  • メディア: 単行本
  • この商品を含むブログ (5件) を見る

そして中級者向け機械学習テキストのトリを飾るのは、ご存知「カステラ本」と呼ばれる辞書的大著にして鈍器(笑)です。何と言っても代表的な機械学習アルゴリズムのほぼ全てをカバーしている上に、その多くに数式だけでなく擬似コードによるアルゴリズム紹介が付されており、簡単なコーディング実装を試す上でも大いに参考になります。ほぼ全てのセクションに「入門者向け」「上級者向け」のマークが付されていて、理解度に応じて読み進めることができるようになっているのもポイント。

関連分野

これからの強化学習

これからの強化学習

  • 作者: 牧野貴樹,澁谷長史,白川真一,浅田稔,麻生英樹,荒井幸代,飯間等,伊藤真,大倉和博,黒江康明,杉本徳和,坪井祐太,銅谷賢治,前田新一,松井藤五郎,南泰浩,宮崎和光,目黒豊美,森村哲郎,森本淳,保田俊行,吉本潤一郎
  • 出版社/メーカー: 森北出版
  • 発売日: 2016/10/27
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (2件) を見る

囲碁AIの快進撃を機に一気に世間の関心が高まった強化学習界隈。個人的には僕が学部生だった当時から既に強化学習という枠組みはあったものの、正直言って日本語で強化学習に関する良書って全然ないなぁと思っていたのでした。そんなところに突然やってきたのが、この一冊。基本中の基本である多腕バンディットやgreedyアルゴリズムから、Deep Q-Learning (Deep Q-Network)のような最先端の強化学習手法に到るまで、網羅的にカバーして分かりやすくかつコンパクトに解説してくれる物凄い本です。これから強化学習を学んでみたいという人は絶対に必携です。


経済・ファイナンスデータの計量時系列分析 (統計ライブラリー)

経済・ファイナンスデータの計量時系列分析 (統計ライブラリー)

意外と未だに入門的な内容の計量時系列分析のテキストというのは少ないもので、個人的にはやはり沖本本を挙げておこうと思います。ARIMA、VAR、因果性分析、単位根過程と共和分周り、不均一分散モデル、状態転換モデルといった計量時系列分析周りのエッセンスがコンパクトにまとまっています。残念ながら明示的にコードなどの実装例は示されていませんが、econometrics系はRリソースが潤沢なので適当にググれば幾らでも出てきますし、沖本本に限って言えばこのブログでもシリーズ記事を書いていますので、ご参照あれ。


岩波データサイエンス Vol.3

岩波データサイエンス Vol.3

そして最後の最後、大トリを飾るのは意外に思われるかもしれませんが、僕も刊行委員として参画している岩波データサイエンスの第3巻。統計的因果推論については、僕の知る限りこれよりも分かりやすく尚且つコンパクトにまとまっている和書はない*9と思います。回帰不連続デザイン・バックドア基準・傾向スコア・差分の差分法と言った、因果推論のメジャーなトピックが全てこの一冊にまとめられています。ちなみに因果推論についてもこのブログでシリーズ記事を書いています


補足と雑感


まず、相変わらず「黄色い本」ことPRMLは外してあります。もう少し世の中がベイズベイズしてくるようになったらまた黄色い本を入れるかもしれませんが、個人的にはベイズ機械学習周りは黄色い本に取って代わるような良書が出ることを期待したいです。例えばトピックモデルなどグラフィカルモデルの知識が必要な手法やDCGANなど生成モデル系の手法などについては、ゴリゴリのベイズ機械学習本を読んでから臨んだ方が良いと思うので、首を長くして待ちたいと思います。


次にカステラ本のみを例外として、いわゆる「網羅的に何でも載っている鈍器」は全て外しました。個人的には入れたい辞書的鈍器は何冊かあるんですが、そもそも鈍器レベルの本は気軽に買えないのが常なのでこの手の書籍推薦リストにはそぐわないということで見合わせています。


またDeep Learning周りについては、研究開発の方がそれこそ「俺 / 私が考えた最強ネットワーク選手権」状態になっているが故に極端に進み過ぎていて、もはや紙のテキストによるまとめが追いつかない状況になっているせいか、再び良書を探すのが難しくなってきているように感じます*10。一旦今回は評価の定まっている4冊のみを入れておきました。


個人的には異常検知はかなり重要な分野だと思っているのですが、どちらかというと各論に属するのかなという認識でもあるので今回のリストには入れていません。


あと、講談社MLPシリーズ(青本・新赤本)はあまり読んでいないので、ここでは殆ど入れていませんよということでごめんなさい。僕がもう少しベイジアン機械学習とかノンパラベイズとか操れるようになったら考えるところなんですが、どうもそういう方向には向かわなそうで。。。って前回の推薦書籍リストの時と同じこと言ってて進歩ないですね(汗)。


そして、データ分析プロセス系の書籍は書き手によってばらつきがあること、CRISP-DM以外の統一的なスタンダードがないことを考慮して、今回もリストには入れていません。まずは技術的スキルの習得を優先しましょうということで。


*  *  *


全体としては、「人工知能」ブームの影響を受けてデータ分析業界全体が活気付いていることを反映してか、新しい良書がチラホラ出てきたなという感があります。何だかんだでブームというのは悪い面もありながら良い面もあるもので、以前は「良い本がなくて痒いところに手が届かない」ことが多かったのが、最近はまさにベストマッチ!という本が出てくることが多く、実務家としては非常に有難い限りです。


最後に。いつも通りですが、今回挙げた6冊+15冊はあくまでも「現時点(2017年春)での個人的に考えるベストチョイス」なので、データ分析業界全体の今後の動向次第では早々にout of dateになる可能性があるということをお断りしておきます。特にDeep Learning周りは今回の4冊でももしかしたら「そんなの中級者向けじゃない、初級者向けだよ」と怒られかねない現状なので、今後どんどん難易度が上がってくる可能性があることを付記しておきます。。。くわばらくわばら。

*1:はてなには入るのでそれすら気に入らないという皆様はアフィリエイトコードを削除したURLからお求めください笑

*2:若手Kaggle Masterの@さんも機械学習入門のパートの執筆に参加しておられます

*3:載っているコードを一字一句違わず手でタイピングして書き写して実行すること

*4:FCLTじゃないですよ、念のため

*5:TensorFlowもKerasもChainerもTorchもMXnetもCaffeも使わない、フレームワーク一切抜きでという意味で

*6:クラッチからNNを組んだのは大昔勉強用にMatlabで「わかパタ」読みながら組んで以来

*7:サンプルコードはGitHubで提供されている

*8:一時使われなくなったり、最近また復権したり、せわしない感じもしますが

*9:もっと分厚くてもっと難解ながらもっと網羅的な和書はそこそこあります

*10:例えばResNet以降をカバーしている和書は現状だとない気がする