機械学習を学ぶにあたって役立った書籍5冊・Coursera

アドベントカレンダーは3日目になりました。お越しいただきありがとうございます :bow: 
私事ですが、ここ数ヶ月、機械学習を勉強しておりました。
そこで今日は、私が機械学習を学ぶために読んだ本や、結果的に機械学習を理解するのに役立った本をまとめてみようと思います :muscle: 

# 対象とする読者

* 機械学習さっぱりわかんないけど、これから勉強しようかな～という人
* とりあえず何か本を読んでみようかな〜という人

では、早速まとめていきたいと思います :muscle: 
書籍名、概要（主観多め）、自分にとって役立ったなと感じた所を役立ちポイントにまとめます。

# 目次

- The Nature of Code
- 専門知識ゼロでもつかいこなせるビジネス統計入門
- 仕事ではじめる機械学習
- 日本語入力を支える技術―変わり続けるコンピュータと言葉の世界
- やさしく学ぶ 機械学習を理解するための数学のきほん
- Couseraの機械学習のコース

順番は役立ち度やおすすめ度を示すものではありません。
単に私が、**読んだ順に列挙**しているだけです。

# 書籍

## The Nature of Code

著： Daniel Shiffman
日本語版: Nature of Code -Processingではじめる自然現象のシミュレーション-

この書籍の後半では、**遺伝的アルゴリズムによる機械学習**と、**ニューラルネットワークについての基礎的な知識、実装方法**を知ることができます。

### 概要

デジタルアート向けのJava系の言語であるProcessingを用いて、いかにして物体を生きているかのように振る舞わせ、知能を持っているかのように実装するかを紹介する教科書のような内容です（力学の話が多かった、物理の復習になった）。
そのため、「Nature of Code」自体は、機械学習に関する書籍ではありません :bow:
（この本を読んだ目的は、機械学習の勉強ではなく、ジェネラティブアートと呼ばれるプログラマティックなアートについて学ぶためでした :sweat_drops:）

日本語訳した書籍が販売されていますが、著者サイトから英語版のPDFをダウンロードして読むことができます。平易な英語で書いてあるので、英語の勉強にもなります。

### 役立ちポイント

この本を読んだことで、機械学習の概念をイメージできたのかなと今は思っています。
結局のところ機械学習というのは（とくに遺伝的アルゴリズムは）、「ある世界（=システム=関数）において、もっとも成績の良いDNA（パラメータ=係数）を見つけ出し、それを継続的に、より良いDNAになるようにチューニングしていく一連のプロセスである」ということをこの本から理解しました。

## 専門知識ゼロでもつかいこなせるビジネス統計入門

監修：内田学
著：兼子良久
発行：アスキー・メディアワークス

**記述統計**、**推測統計**、**多変量解析**について知ることができ、機械学習のアルゴリズムを理解するベースになりました。

### 概要

仕事でよく発生しそうな課題を例に、わかりやすく統計の知識を得ることができます。
統計の専門用語も丁寧に解説されています。3部構成になっていて、記述統計（平均、偏差、分散、標準偏差、正規分布）・推測統計（区間推定、t検定、グラブス・スミルノフ検定）・多変量解析（単回帰分析、重回帰分析）を学ぶことができます。
各課題例では、Excelを用いた分析方法も紹介されているので、そのまま仕事で使えるスキルになります。

### 役立ちポイント

たまたま社内で「平均取ってみたけど、これでいいのかな」と言っている人がいた際に、区間推定を用いることで統計的なエビデンスを出してあげることができました:tada:
これは、機械学習を学び始めるよりも前の話です。

（この本を読んだ目的も、実は機械学習の勉強のためではありませんでした。担当していたアプリのユーザの傾向を統計的に理解したい、論理的に施策を考えたいと思ったために読んだのでした :sweat_drops: ）

この本を読んでいたからこそ、これ以降に出てくる機械学習の書籍も理解が早かったのかなと今は思います :muscle:

## 仕事ではじめる機械学習

著:有賀康顕、中山心太、西林孝
発行：オライリー・ジャパン
（電子版のみ）

**代表的なアルゴリズムが図解されている**だけでなく、**多くの専門用語、文献を知る**ことができます。

### 概要

プロジェクトをどう進めるか（どのように課題を設定して、それをどう解決するか）というところにフォーカスしているので、具体的な実装や数式関しては多くは紹介されていません（機械学習を使わない例もありました）。文献が多く紹介されているので、詳細を学んでいきたい人には導入としても使えます。プロジェクトのフェーズごと（問題設定、アルゴリズム選定、検証、組み込み）に解説されていて、フェーズごとのハマり箇所、注意点も文中に出て来るので、これから機械学習を使って何かやろうとしている人にオススメ。

### 役立ちポイント

長年わからなかったサポートベクターマシンの仕組みについて、この書籍の図解でやっとわかりました。機械学習のタイプごとの特徴も解説されていたのも良かったです。
アルゴリズムの精度評価の方法も、実際に仕事で役立つポイントです（おそらく、この書籍で紹介していたのと同様の考え方で推測統計も精度評価する方法あるんだろうなぁと思った）。
代表的な機械学習のアルゴリズムを知りたい人、機械学習領域の用語を知りたい人にもおすすめです。

## 日本語入力を支える技術―変わり続けるコンピュータと言葉の世界

著: 徳永拓之
発行: 技術評論社

**機械学習のアルゴリズム、実装が一通り紹介**されています。しかしながら、機械学習の知識がないと難しめかもしれません。
というのも、実は学生時代に買った本なのに、いまだに全部は読めていない本なのです。数式も多めなので自分にとっては難しい本です。知識が増えてきては定期的に読み返して、少しずつ理解できる範囲が広がっている感じなので、ここでは名前の紹介にとどめます。

（この本を買った頃は、自然言語処理や文字入力に興味がありました。機械学習にも興味はありましたが……）

## やさしく学ぶ 機械学習を理解するための数学のきほん

著:立石賢吾
発行:マイナビ出版

**機械学習に関する数学と理論**、さらにはPythonでの実装例まで紹介されています。

### 概要

ブログ「けんごのお屋敷」で連載されていた「やる夫で学ぶ機械学習シリーズ」の女の子版、増強版。広告費とクリックの関係、画像の向き判定を課題に、回帰・分類のアルゴリズムと実装、評価の方法が解説されています。

### 役立ちポイント

機械学習に関する論文を読む際の難所は、数式の理解です……。
この書籍では、数式の意味を丁寧に解説してあるので、安心して読むことができます :thumbsup: 
読み終えた今ならおそらく、論文の数式もだいぶ理解できるようになっているはずだし、「日本語入力を支える技術」も、読める範囲が広がっているのではないかと思います :blush: 

# Coursera

本ではなく、オンラインコースです。上で取り上げた本の中にも、Courseraのことが紹介されているものがあります。
実際、映像で見ながら勉強したほうが、アルゴリズムのイメージがつきやすいです。

https://www.coursera.org/learn/machine-learning

一方で、ビデオの中では、数式もたくさん出てきます。
むしろ、初回の講義は線形代数の復習だったりするので、数式にアレルギーがある方は、講義ビデオを見るよりも前に、「やさしく学ぶ 機械学習を理解するための数学のきほん」を読んでおくと、式の意味も理解しながら講義を聞くことができるので、より理解がしやすいかと思います（自分がそうだった）。

---

以上です！
何かのお役に立てれば……。