私は人工衛星みたいな宇宙機の開発が専門で、機械学習については完全な素人です。というか、そもそもプログラミング自体が素人。
ひょんなことから機械学習に興味を持って、これまで独学で勉強を続けているのですが、機械学習を勉強するにはどんな本がおすすめか?みたな記事をいろんな方が書いていて、大いに参考にしてきました。ですので、ひょっとして誰かの役に立つかもしれない、と思い、私がこれまで読んできた本もご紹介したいと思います。
###プログラミング関係
機械学習を始める前に、そもそもプログラミングができなかったので、そこからはじめました。一応、学生時代にC++をかじっていたので、「ポインタとはなにか」とか「オブジェクト指向とはなにか」みたいな知識はありました。
#####入門Python3(オライリー・ジャパン)
Pythonの文法は大体これでまかなえる感じでした。写経しながら読むと頭にどんどん入ってきます。めっちゃわかりやすい。ただし、ある程度のプログラミング知識を持った人を前提に書かれているように感じました。プログラミングの経験ゼロ、な人には辛いかも。
###数学入門書関係
入門Python3を一通り読んだあと、機械学習の本を手にとったのですが、数式の展開に頭が追いついていかず… 大学出て何年経ったのか忘れましたが、数学を復習せねばと思い、何冊か数学関係の本を読みました。
#####微分積分 (理工系の数学入門コース 1) (岩波書店)
大学1年生の頃使ってた微積の教科書ですね。懐かしい。なかなかわかりやすく書かれていると思います。
#####線形代数 (サイエンスライブラリ理工系の数学) (サイエンス社)
こちらも大学時代に使っていた線形代数の教科書です。コンパクトに纏まっていて良い本だと思いますが、若干抽象度の高い書きぶりなので、線形代数初めてな方には少しとっつきにくいかもしれないです。今どきは、2x2行列とかで具体的に書き下して説明した、もっとわかりやすい教科書がたくさん出ているので、そういう本のほうがいいかもしれません。
#####キーポイント確率統計 (理工系数学のキーポイント 6) (岩波書店)
これまた学生時代に読んだ教科書。「キーポイント」シリーズは、その名の通り初学者向けにポイントを絞って書かれているため、私みたいに普段仕事してて時間がない中勉強するにはちょうどよい分量です。でも、統計学について深く知りたい、というニーズは満たすことができないかも。
#####統計学入門 (基礎統計学Ⅰ) (東京大学出版)
みんながおすすめしてる統計学の入門書。一応手に取りましたが、途中まで読んで積んでます… 決して良くない本、というわけではなく、単に私自身のモチベーションの問題です。
基本が過不足なくキチンと書かれているし、難しい数式の羅列、という感じでもないので、はじめから統計学を勉強し直す!というモチベーションの方は、こちらの本のほうが良いと思います。
###機械学習入門書関係
数学の復習をして、ようやく機械学習の入門書の勉強を再開。文法としての数学が頭に入っているとやっぱり読みやすいです。
#####はじめてのパターン認識 (森北出版)
これまたみんながおすすめしているパターン認識の教科書。通称「はじパタ」ですね。「パターン認識とはなにか」から始まり、サポートベクトルマシンとか多層パーセプトロンとかアンサンブル学習とか、基本が一通り勉強できます。程よい薄さですし、本当におすすめです。
ただし、コードが一切書かれておらず、基本的には数式による説明なので、手を動かしてコードを書きながら勉強したい人には向いてないです。
#####Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎 (オライリー・ジャパン)
機械学習ライブラリscikit-learnを使って機械学習を体験できる本です。タイトルの通り、特徴量エンジニアリングについての説明もあり、大変勉強になりました。
ただし、本書は「はじパタ」とは逆で、数式による説明は殆ど無いです。なので、「なんでこうなるんだ??」ってのが気になる人は、先に「はじパタ」のようなタイプの本を読んでから、本書に取り組んだほうが良いと思います。
なお、本書はスクラッチで最初からモデル実装したい、という人には向きません。また、NumpyとかPandasとかmatplotlibといった、Pythonでよく使われるライブラリがあまり説明なく登場するので、自分で知識を補強する必要があります。私の場合は、わからないことがあればその都度ネットで調べていました。それらを本を使って体系的に勉強したい!という高いモチベーションをお持ちの方は、Pythonによるデータ分析入門とかを使ってもいいかも。
#####深層学習 (機械学習プロフェッショナルシリーズ) (講談社)
ディープラーニング関係でよくおすすめされる本です。「はじパタ」のように、コードはなく基本は数式で説明が進みます。しかし、「はじパタ」よりも更に平易な書きぶりで、めちゃくちゃ敷居が低く、読みやすいです。
###買ったけどまだ読んでない・読みかけの本たち
一応この辺まで読んで、あとはコンペとかに参加しながら手探りで勉強を続けています。他にもいろいろ入手して、積読状態だったり読みかけだったりの本がたくさんあります。彼らがかわいそうなので、一応どういうのを入手したのか列記しておきます…
PythonとKerasによるディープラーニング(マイナビ出版)
ディープラーニング用のライブラリ「Keras」の作者によるKeras解説書。Kerasはよくできてて、公式サイトの「30秒でKerasに入門しましょう」という記事を読めばだいたい使い方がわかります。ということで、この本いらなかった…
画像認識 (機械学習プロフェッショナルシリーズ)(講談社)
青い深層学習本と同じシリーズ。画像認識の基礎を勉強したかったので、地道に読んでます。
これなら分かる最適化数学―基礎原理から計算手法まで(共立出版)
機械学習を勉強してると最適化数学の考え方がいたるところに出てきて、理解が追いつかない場面がいくつかありました。都度ネットで検索して対応しましたが、体系的に勉強したいなと思い購入。まだ読んでません。
Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理(オライリー・ジャパン)
機械学習というより、NumpyとかPandasの使い方を体系的に学べる本。これも「都度ネットで検索」で対応してたので、まだ未読。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装(オライリー・ジャパン)
その名の通りライブラリを使わないでスクラッチでディープラーニングのモデルを実装していく本。すごく売れてるらしいですが、未読。
かわいそうな積まれてる本達、、、きちんと読んでいきたい、、、