社内向けに公開している記事「統計・機械学習の理論を学ぶ手順」の一部を公開します。中学数学がわからない状態からスタートして理論に触れるにはどう進めばいいのかを簡潔に書きました。僕が一緒に仕事をしやすい人を作るためのものなので、異論は多くあると思いますがあくまでも一例ですし、社員に強制するものではありません。あと項目の順番は説明のため便宜上こうなっているだけで、必ずしも上から下へ進めというわけでもありません。
(追記)これもあるといいのではないかというお声のあった書籍をいくつか追加しました。
数学
残念ながら、統計モデルを正しく用いようと思うと数学を避けることはできません。ニューラルネットワークのような表現力が高くて色々と勝手にやってくれるような統計モデルでも、何も知らずに使うのは危険です。必ず数学は学んでおきましょう。理想を言えば微分トポロジーや関数解析のような高度な理論を知っておくのがベストですが、とりあえずは線形代数を学ぶことが必要です。データを扱うこと、統計モデルを扱うことはすなわちベクトル・行列を扱うことを意味します(非線形モデルであっても線形近似して行列を計算します)。
中学数学
そもそも数学が何もわからず、中学レベルからやり直さなければならない、という人は大阪府が公開している「ワークブック 中学校数学」を全部解いてください。とはいえ全部やっていると時間がかかるので、もっと先の内容を学習しながらわからないところを Slack に投稿したほうが早いです。
高校数学
高校数学の課程で何を学んだかは世代によってかなり変わるようです。とりあえずはベクトルと行列について学んでいればよいのですが、やっていない場合は仕方ないので、社内研修の「因果推論」の線形代数の章でざっと学んでおきましょう(弊社には各分析手法に対応してかなりしっかりとした研修教材があるので、昨年からこれを用いてみっちりと社員教育をしています!)。NumPy で動かしてみながら確認するとわかりやすいと思います。この資料では統計学を応用するにあたっての基本的な注意点が多く書いているので、統計学に入門する際に副読資料として利用してください。
より詳細な高校数学の内容を学んでおきたい場合は、物理学者の栗本猛氏が公開している「物理系学生のための数学入門」で学習してください。この資料は、高校数学から始まって物理学に必要な数学の内容の多くを学べる構成になっているので、読破すれば一般的な理学部の学部卒業程度の数学的知識はつけることができます。
『チャート式』など、大学受験のための参考書は多く存在しますが、こういうものは大学合格を目指す高校生向けにチューニングされています。社会人になってからこれを読むのは非効率なので、あまりおすすめできません。
線形代数
線形代数は行列の計算ができるようになって終わりというわけではありません。行列の分解や線形空間の理論について知る必要があります。『線形代数のコツ』は易しいけれどもちゃんと書いてある教科書です。
『線形代数セミナー』は標準的な線形代数の教科書では大きく取り挙げられないがデータ分析でよく利用するような手法にフォーカスして掲載しています。2冊目の教科書としていいかもしれません。より厳密な議論をおさえておきたい人は『斎藤正彦 線型代数学』で学びましょう。黒田紘敏氏が公開している講義資料も幅広い範囲を扱っています。
微積分
微積分は基本的に「物理系学生のための数学入門」で学べば大丈夫です。より厳密な議論は『理工系の微分積分学』という比較的平易かつきちんとした教科書があるのでこれで学びましょう。こちらも黒田紘敏氏の講義資料で学んでもよいです。
論理と集合
数学書に慣れない人は、なぜ数学書を読みづらいと感じるのでしょうか? 僕が思うに、それは数学的事実が述語論理という他ではあまり使わない言葉で記述されているからです。
『論理と集合から始める数学の基礎』は初学者でも比較的読みやすい教科書です。集合・位相についての応用的な話はその先で読むような本(測度論の教科書など)である程度カバーできますが、個人的には外史節炸裂の『集合とはなにか』で「おはなし」的な部分を知っておくこともおすすめです。位相の「気持ち」がわからん、という人は『位相のこころ』を眺めてみるのもいいかもしれません。『位相への30講』は数学科向けに説明するときに「わざわざ説明しなくても許される」くらいの範囲をちょうど切り取ってきたような内容なので、そのあたりがさっぱりわからんという人なら読んでおくことをおすすめします。
測度論
測度論は『統計学への確率論、その先へ』で確率論と一緒に雰囲気を学びましょう。確率論の厳密な議論には測度論がほとんど不可欠ですが、とりあえずは確率がどのように定義されているかがわかればよいので、易しい教科書でも十分です。しかし、統計学の込み入った話になると測度論の知識がある程度は必要です。専門的な内容は非数学専攻でも読めるようわかりやすく書かれている『ルベーグ積分入門』がおすすめです。
関数解析
関数解析はまずカーネル法に焦点を当てた『機械学習のための関数解析入門』で学びましょう。カーネル法をはじめ、機械学習では関数解析の道具を利用した議論が多数存在します。論文を追っていればいつかはぶち当たる問題なので、初歩的な部分だけでも把握しておきましょう。ここでは作用素の話など関数解析の中心的な概念について消化不良な部分も多いので、工学のための関数解析学などで補完するのが良いでしょう。機械学習プロフェッショナルシリーズ『統計的学習理論』にも関数解析の初歩の部分の解説が含まれるので、ここで学んでもよいです。
微分トポロジー
微分トポロジーは多様体上の可微分構造を見る分野です。統計モデルを多様体として見ることで、その性質を幾何的な視点から調べることができます。また、最適化や物理現象のモデリングとも関わってくる分野なので、深層学習・数理最適化・科学シミュレーションの技術とも深い関わりがあります。微分トポロジーの古典的名著として『力学系入門』があります。これは前半が線形代数と微分方程式論の入門となっているので、それぞれの学習にも利用できます。新しい内容を盛り込んだ第3版の邦訳もありますが、内容が少し違うので両方手に入れて読めるとベストです。
田崎博之氏の講義資料がいくつか公開されているので、より深い内容はこちらで学びましょう。『微分トポロジー』も昔からよく教科書として利用されています。
→ 力学系の記事を書きました。
代数トポロジー
統計学らしい分析手法からは外れますが、近年ではトポロジカルデータ分析が流行ってきています。その中心的な役割を果たすツールがホモロジー群です。代数トポロジーではホモロジーやホモトピーといった幾何学的な特徴に基づいた同一視を行いますが、画像データや点群データなど幾何学的構造を持つ対象を新しい切り口から分析するのにこれらの考え方が役に立つのです。
トポロジカルデータ分析の社内勉強会資料は集合論の初歩から解説しており、代数トポロジー入門として比較的気軽に読めるものとなっています(弊社では金曜夕方に社内勉強会枠を設けており、名乗りをあげた社員が喋りたいテーマ(例:確率解析、圏論、Kubernetes、単眼深度推定、SQL、TypeScript、お笑い、等々)について2時間ほど講義やハンズオンを行います)。『タンパク質構造とトポロジー』でパーシステントホモロジー群までの理論を詳細に学ぶことができます。著者の平岡氏はいくつかトポロジカルデータ分析の解説 PDF を公開しており、例えば「位相的データ解析の基礎と応用」は数学の知識がなくとも概要が掴めるものとなっています。より広い議論は『位相幾何学』のような数学書で学びましょう。『トポロジー入門』はかなり丁寧な入門書です。
統計学
統計学はかなり慎重に学習しないと危険な分野です。インターネット上には質の悪い情報が溢れているので、数学的な正しさがわからないうちは自分で判断してインターネットから引用することは絶対にやめましょう。
初歩の初歩
総務省統計局が「なるほど統計学園」というページで統計学のごく初歩の部分を解説しています。統計学に触れたことが全くない人は、一度読んでみましょう。大雑把ですが、正確性はこの後でより高度な統計学を学ぶ際に確保しましょう。これだけ読んでわかった気になるのは危険です。
統計学全体の概要を掴む
まずは統計学全体の概要を掴む必要があります。『統計学実践ワークブック』は最も適した教材といえるでしょう。この書籍は統計検定準1級の範囲に対応しているので、さしあたり準1級合格をデータサイエンティストとしてのひとつの目標として勉強しましょう。確率分布・一般化線形モデル・確率過程・時系列分析・主成分分析・SVM・クラスタ分析・グラフィカルモデル・モデル選択・ベイズ推定・MCMC など、大半が実務上知っておかなければならない内容です。ボリュームは凄まじいですが、しっかりと身につけましょう。特にアドバイザリー業務を担当する社員はこの本に書いてある内容を網羅しておくことが望ましいです。
『データ分析のための統計学入門』は網羅的でこそないものの、そこそこ広い範囲をカバーしており、「気持ち」の解説も多めです。
数理統計
概要を掴んだ後は、理論的な理解を深めましょう。確率空間とか聞いたことないという人はとりあえず『確率と統計』から入ってよいと思います。統計検定1級に出てくるような内容を学びたければ『現代数理統計学』が『統計学実践ワークブック』後には読みやすいと思います。かなり厳しい旅にはなりますが、「数学」の項目で挙げた『統計学への確率論、その先へ』にチャレンジするのもいいでしょう。
因果推論
頻繁に必要となるにもかかわらずあまり触れたことのない社員が多い分野の第一位は因果推論でしょう。因果推論はデータ分析業務において重要な分野です。社内研修資料は必ず読んでください(弊社には各分析手法に対応してかなりしっかりとした研修教材があるので、昨年からこれを用いてみっちりと社員教育をしています!(2回目))。
潜在反応モデルについては『「原因と結果」の経済学』が最も簡単な入門書です。要点をおさえたら『R による実証分析』で実装を見ながら学びましょう。
構造的因果モデルについては『確率的グラフィカルモデル』と MLP シリーズの『グラフィカルモデル』が詳しいです。古典的教科書として『入門 統計的因果推論』も有名です。
時系列分析
オーソドックスな教科書としてはハミルトン本が知られています。この本は線形代数の部分から時系列モデルを詳細に説明してくれて、分量はありますが学べることは(時系列分析の内容に限らず)かなり多いです。ハミルトン本を薄くまとめたものが沖本竜義氏の『経済・ファイナンスデータの計量時系列分析』です。
Python コードが書かれたものとしては Advanced Python シリーズの『時系列解析』が広い内容を扱っています。R が書けるなら『R による時系列モデリング入門』も基本的な事項は網羅しているのでおすすめです。
特異モデル
統計学の推定手法には「正則モデル」というかなり大人しい性質を持った統計モデルでしか結果が理論的に保証されていないものも多くあります。実務で扱うような複雑な統計モデルはそれ以外の「特異モデル」である(統計モデルが滑らかな多様体にならないような)場合が多いため、もっと広いクラスの統計モデルに対する理論が必要です。概説的な資料は福水・栗木氏の「特異モデルにおける統計的推測 ―接錐によるアプローチ―」で読むことができます。『特異モデルの統計学』や『代数幾何と学習理論』といった代表的な教科書はいずれも微分トポロジーなどの難しい数理的内容を含むため、そういうもんなんだと頭の片隅に置いておけばよいでしょう。情報幾何と重なる部分が大きいので、両方並行で学べばもっとわかりやすかったなと自分ではちょっと後悔しています。
ベイズ統計
ベイズ統計は大雑把に言えば「予測分布を計算することにより確率的な不確実性を持たせた推定を行う」「事前分布を設定することにより正則化を行う」ということができる統計手法です。モデルと事前分布の設定が適切であれば、最尤推定よりも広いモデルについてよい推定ができます。
社内研修の「ベイズ統計」資料は確率・統計の初歩から解説しているため、まずは最初にこれを読むといいでしょう(弊社には各分析手法に対応してかなりしっかりとした研修教材があるので、昨年からこれを用いてみっちりと社員教育をしています!(3回目))。『Julia で作って学ぶベイズ統計学』『ベイズ推論による機械学習入門』『ベイズ深層学習』をこの順で読むと必要な知識の多くは身につけられます。『ベイズ統計の理論と方法』はより理論面での深い話を扱っています。『ベイズ推定入門』という数学の知識をあまり求めない解説書も出ています。
情報幾何
情報幾何では統計多様体を微分幾何的に解析します。指数型分布族や混合分布などの統計学でよく用いる対象の裏に隠れた幾何的構造を知ることで、色々な話が繋がって統計学がグンと面白くなります。
まずは赤穂昭太郎氏の「情報幾何と機械学習」で雰囲気を知りましょう。『情報幾何学の基礎』は応用についても詳しく書かれていますが、難しいため比較的易しく書かれている『入門 情報幾何』をあたってみてもいいかもしれません。必要になった時点で随時初歩の部分を補ってくれるので、前提知識がある人にはちょっとくどいかもしれません。『情報幾何の方法』は Amazon の高額なオンデマンド販売でしか購入できなくなっていますが、時系列モデルについての記述など読むべきところも多くありますし、個人的には情報幾何で何を見たいかがわかりやすいと感じました(情報幾何の教科書は初見で何をやりたいのかわからないものが多い……)。
統計的学習理論
機械学習を学ぶにあたって、統計的学習とは何であるかということを学ぶ必要があります。「数学」の項目で挙げた『統計的学習理論』が代表的な日本語の入門書です。しかし、これは(Appendix で載せているとはいえ)関数解析の知識を要するなど少し難しい教科書です。鈴木大慈氏の「統計的学習理論チュートリアル: 基礎から応用まで」および「統計的学習理論とその深層学習への応用」はもう少し易しく書かれています。
機械学習全体の概要を掴む
そもそも統計学と機械学習に違いはあるのか? という問題はあります。個人的には名称を分ける必要性を感じませんが、特にこれは機械学習の領域だという共通理解のあるテーマは存在します。
『統計的学習理論』と同じ著者の『Python で学ぶ統計的機械学習』は確率論の基礎から機械学習の様々な手法までを Python コードを交えて解説してくれる易しい教科書です。かなり網羅的なため、とりあえず一周しておけば広く機械学習の手法を把握しておくことができます。
『Kaggle で勝つデータ分析の技術』は機械学習の入門書ではありませんが、『Python で学ぶ統計的機械学習』には載っていない内容を補完できます。
『統計的学習の基礎』という鈍器もありますが、鈍器なので気軽におすすめはできません。
深層学習
言わずもがな、『ゼロから作る Deep Learning』が最もとっつきやすく、詳細まで知ることのできるよい教科書です。古い書籍ですが、『ニューロコンピューティングの数学的基礎』は微分トポロジーを学んだ後であれば深層学習のより深い理解に寄与します。
最近の深層学習の理論を知りたい場合は鈴木大慈氏の「深層学習の統計理論」が詳細です(内容は高度ですが)。もう少し「おはなし」的な資料は同氏の「機械学習と深層学習の数理と応用 (1)」がわかりやすくてよいです。