文系卒社会人が統計・機械学習を理解するための数学勉強方法【随時更新】

#数学の必要性
文系卒のエンジニアである筆者が予測分析(統計)を学習しようとしましたが、まずは数式で躓きました :cry: 
こんな感じの数式を**まるで理解できなかった**です。

```math
P(Y|X)∝P(Y)P(X|Y)
```

```math
M(Θ,Φ)=∏j=1DP(Tj;Θ,Φ)P(Sj;Θ|Tj)
```

統計基礎の入門書として有名な[「統計学入門 (基礎統計学)」](http://amzn.to/2nuktS7)ですら理解に苦しむ始末。**「入門すらできないのか・・・」**と感じました。
しかし、逆に言うと**理解できれば大きな強みになると前向きに考え**、高校数学の復習をしていきました。
高校数学の勉強を終えて再度入門書を読み返した結果、感じたことを[「高校数学復習を終えても統計入門理解できなかった話」](http://qiita.com/FukuharaYohei/items/8cb8915b310aa5763303)に投稿しました。
大学基礎数学の勉強を終えた結果、感じたことを[「文系卒社会人が統計入門でのモヤモヤを克服した話」](http://qiita.com/FukuharaYohei/items/a53a8b9dbd5cef2a2562)に投稿しました。
2年ほど勉強をして、統計学にフォーカスしたおすすめ勉強方法を[「文系卒社会人が統計入門する最短学習法」](https://qiita.com/FukuharaYohei/items/27d1ed76d770a19da323)に書きました。

#勉強方法
###高校数学編
[長岡先生の授業が聞ける高校数学の教科書数学 (考える大人の学び直しシリーズ)](http://amzn.to/2nueRau)のみ使っています。
DVDが付属していて音声講義が好評らしいですが、私は使っていません。試しに1つだけ聞いてみましたが、時間かかるわりには本を読むだけでも十分理解できたので、使いませんでした。**ひたすら解説と例題を見て、問題を解いています。**正直、問題が少ないので理解度いまいちな部分も多いのですが、テストで点数をとるために勉強しているわけではないので、まずは全て終わらせることに重点を置いています。
[「【数Ⅰ】文系卒社会人が統計・機械学習を理解するために勉強した」](http://qiita.com/FukuharaYohei/items/78ec8690043b34d39020)に数学Ⅰの内容
[「【数A】文系卒社会人が統計・機械学習を理解するために勉強した」](http://qiita.com/FukuharaYohei/items/c62e042762fb017cef6b)に数学Aの内容
[「【数Ⅱ】文系卒社会人が統計・機械学習を理解するために勉強した」](http://qiita.com/FukuharaYohei/items/5647cde590902cc42ec4)に数学Ⅱの内容
[「【数B】文系卒社会人が統計・機械学習を理解するために勉強した」](http://qiita.com/FukuharaYohei/items/d6f54bcb533209638e20)に数学Bの内容
[「【数Ⅲ】文系卒社会人が統計・機械学習を理解するために勉強した」](http://qiita.com/FukuharaYohei/items/a623a6948a190fc55a38)に数学Ⅲの内容
[「【数C】文系卒社会人が統計・機械学習を理解するために勉強した」](http://qiita.com/FukuharaYohei/items/ae1c4f7701996f81db89)に数学Cの内容 
####教材について感じること
**[「長岡先生の授業が聞ける高校数学の教科書数学」](http://amzn.to/2aLgXKQ)は良い教材**です(他と比較したことはありませんが・・・)。高校時代に積分がなぜ面積を示すのかわからなかったですが、そこも人生で始めて理解できました。
また、**全内容が１冊にまとまっている**ので、数学Ⅱの勉強をしていて数学Ⅰの内容を参照したいといったことができるのが嬉しいです。
ただ、**重くてかさばるのが唯一の難点**です。本心では、電車の中などで読みたいのですが。
ちなみに、高校数学の課程が2003年と2012年に変更されており、この教材は2003年以前の課程に準拠しています。
>「確率分布（条件付き確率を除く）と統計処理は数学Bに移行。条件付き確率は数学Aに移行」

例えば、2012年は上記のような[数学C](https://ja.wikipedia.org/wiki/%E6%95%B0%E5%AD%A6C)内容変更があり、昨今のデータサイエンティスト系ブームから統計系が重視されたように思います。
###大学基礎数学編
「スバラシク実力がつくと評判の」シリーズの以下の4冊の本を使って勉強しました。ひととおり、大学数学の基礎部分は学び終えました。当然ですが**高校数学よりずっと難しい**です。とはいえ、わからないレベルではないので、まずは「ひととおり理解した」程度のレベルで定着化まで至っていません。定着化に向けて問題集も解いています(まだ微分積分のみ)。
・[スバラシク実力がつくと評判の**大学基礎数学**キャンパス・ゼミ](http://amzn.to/2ombd1L)
・[スバラシク実力がつくと評判の**微分積分**キャンパス・ゼミ](http://amzn.to/2oP3bj7)
・[スバラシク実力がつくと評判の**統計学**キャンパス・ゼミ](http://amzn.to/2nnQtoZ)
・[スバラシク実力がつくと評判の**線形代数**キャンパス・ゼミ] (http://amzn.to/2oP1VfK)
・[スバラシク実力がつくと評判の**演習微分積分**キャンパス・ゼミ] (http://amzn.to/2hsy3Ul)
・[スバラシク実力がつくと評判の**演習統計学**キャンパス・ゼミ] (http://amzn.to/2DPlzw9)

####教材について感じること
高校数学の分厚い本と違って薄いので、**持ち運びが出来る**のが大きなメリットでした！職場までの移動時間がそこそこ長かったので、毎日電車の中での勉強時間を確保できました。そして、内容がわかりやすいです！天才や中級者以上にはくどいかもしれませんが、筆者には丁寧でちょうどいい解説具合でした。
###勉強をしながら感じること
どうしても仕事が忙しくなって、勉強間隔が空いてしまうことがあります。これは、結構非効率的になってしまう原因です。**少ない時間でもいいので、毎日勉強するのが理想**だと感じます(それが難しいのですが・・・)。
#学習の効果
[数学Ⅱまで終えた段階で統計検定2級の勉強を始めました。](http://qiita.com/FukuharaYohei/items/3c4114e0ed8fa48a408e)Σ(シグマ)や微分積分は統計検定2級内容の理解の一助になりました！その半面、偏微分など知らないことも多く、まだまだ足りないことを思い知らされました。
大学の微分・積分まで学習すると統計入門の入り口に立てました。
また、[TensorFlowを使ってDeep Learningを学習した](https://qiita.com/FukuharaYohei/items/7540c29a4bdd028e117b)時にSoftmax関数やReLu関数を理解する上で大いに役に立ちました！数学勉強していてよかった:point_up:
今では、機械学習の本を読んで数式などが出てもアレルギーはないですが、ただ理解するのに時間がかかったり、時間の関係上飛ばしたりしています。あの辺を短時間で理解できるレベルには、全然到達していないです。

#現在の合計勉強時間
現在、大学レベルの統計学を終えていて、合計で約250時間かけました。数学I・数学Aをやって余裕だと思っていたら数学Ⅱで躓きました。量が多く、(私にとって)難易度が高いので時間かかりました・・・数学Bは、そんなにも時間かからなかったです。数学Ⅲは、数学Ⅱより難しかったですが、日々の勉強時間の間をあけずに頑張ったため効率的に短時間でできました。微分・積分に関しては、理解を深めるために問題集も1冊解きました。問題集は効果高いのですが、電車に乗りながらできないですし時間がかかります。学習を効率するために、[「忙しい人向け睡眠時間を増やさずに睡眠不足を解消した方法」](https://qiita.com/FukuharaYohei/items/690dce04d6dd186a0014)記事のようなことも取り組んでいます。
![LearnHours_v5.jpg](https://qiita-image-store.s3.amazonaws.com/0/134273/d87d6322-7c84-e2c3-864a-c23140a01cae.jpeg)

#思うこと
数学は、ただ教材を読むだけでなく、数式を書くと理解の助けになります。最近は、難しい数式を見ると書かないと気持ち悪いくらいになってきました。ただ、理解していないのに理解したと錯覚を起こしそうなことすらあり、自戒しています。

[「文系エンジニアが機械学習に入門するために小学校の算数から高校数学までを一気に復習してみました。」](http://qiita.com/poly_soft/items/8ea0fc85577f0726f098)
も参考になります。

## 「はじめてのパターン認識」を勉強して感じた事【2020/12/29追記】
機械学習の王道本である[「はじめてのパターン認識」](https://amzn.to/2JlEWRz)で勉強し、機械学習基礎を数式レベルで(だいたい)理解しました。大学基礎数学レベルを知らないと理解することは不可能です。微分も統計も線形代数も**大学基礎レベルの内容が、常識がごとく解説なしで本に出てきます**。本気で理解するには必須です。
※詳しくは[記事「文系社会人がはじパタで機械学習を数式含めて理解した奮闘記」](https://qiita.com/FukuharaYohei/items/c56eaaa06bc85237f2f5)にまとめました。

## Coursera機械学習入門オンライン講座を受講して感じた事【2019/11/18追記】
[Coursera機械学習入門コース](https://www.coursera.org/learn/machine-learning/)を受講しました。「**機械学習を基礎から理解するには数学は知らないと無理**」と痛感。微分はもちろん、線形代数、ベクトル、ガウス分布等を知らないと講義内容を理解できないです。
詳しくは記事[「Coursera機械学習入門オンライン講座虎の巻(文系社会人にオススメ)」](https://qiita.com/FukuharaYohei/items/b2143413063376e97948)を参照ください。

## ディープラーニングの設計・開発を経験して感じたこと【2019/9/9追記】
ディープラーニングを使ったプロジェクトに参加しました。その時に感じたことを追記します。
データサイエンティストはプロジェクトメンバー内におらず、顧客の要求事項に従ってほぼ1人で設計・開発をしました。
精度はある程度望むレベルが出せ、何人かデータサイエンティストに概要設計レベルの相談をしましたが、特に改善点のアドバイスがないレベルでした。

**想像以上に数式は使わない**
数学の理解が浅くてもディープラーニングは何とかなることも多いな、と感じました。例えば活性化関数にハイパボリック・タンジェント( $\tanh$ )を使っていますが、**細かい数式を知らずとも、どんな値のとり方をするかと、なぜこのモデルでその活性化関数が有効かを知っておけば機械学習エンジニアレベルでは十分**かと思いました。ちなみに何とかなるのは、TensorFlowなどのパッケージが自動で数的な処理をやってくれるし、ネット上に多くのサンプルコードがあるためです。
頭の中で最適なモデルを考え、設計・実証はしましたが、「もっと数学の知識があれば」と感じたことはなく、私がやる低レベル内容では高度な数学の知識は必須ではないな、と感じました(ただ数学的な考え方はするので、数字がとても苦手な人には難しいのでは、と思います)。。
また、**高いレベルを目指すなら当然知識はあった方がいい**し、知識があればもっとすばらしい設計・実装になっていたと思います。**数学の勉強は絶対に役に立つし、この分野で筋トレみたいな重要な基礎だ**と考えています。