数学に強いエンジニアむけの機械学習勉強法

飯田勇人
9 min readDec 9, 2019

--

今年の3月から機械学習の勉強を始めて9ヶ月たったのでその振り返りと今後機械学習に入門する人の参考になればという記事です。

巷の記事だと「数学何もわからない人向けの機械学習~」みたいなものが多いので「数学チョットワカル人向け」に勉強方法をまとめてみようと思いました。

前提として筆者は大学で数学を専攻しており、社会人になってからはプログラミングを生業としております。

# 前提知識のおさらい

いきなり機械学習入門~のような書籍に入る前に、基礎知識としてこの辺を抑えておくと良いと思います。

## 線形代数:大学1年レベル

機械学習の説明はほとんど行列の計算として表現されますので大前提として。手を動かして計算問題を解くのもおすすめです。

プログラミングのための線形代数
https://www.amazon.co.jp/dp/4274065782

## 基礎統計(頻度主義):大学1年レベル

正規分布や指数分布など一般的な分布がどういう性質でどういう式で表されるのか、、という復習に。
分布の式を紙に書き写しながら読むと覚えやすいと思います。

統計学入門 (基礎統計学Ⅰ)
https://www.amazon.co.jp/dp/4130420658/

## 微積分:大学受験レベル?

後々必要になりますが最初は大学受験レベルの知識が残ってればそんなに困ることはありませんでした。

# 機械学習の概要を知る

Googleさまのとてもよくわかる?マンガ
https://cloud.google.com/products/ai/ml-comic-1/?hl=ja

# kaggleに入門する

kaggleは世界最大のデータサイエンスコンペティションを開催しているサイトです。過去のコンペにおいて、世界でつよつよの人たちが作った分析やモデリングが公開されています。
学習用の資料も充実しているので積極的に活用していきましょう。

# kaggleの学習コースをこなす

手を動かしながら学んでけいけるためとてもよい。
最初は以下の3つやっておくとこの後の作業のイメージが付きやすいと思います。

機械学習の基本
Intro to Machine Learning
https://www.kaggle.com/learn/intro-to-machine-learning

データの可視化を学ぶ
Data Visualization
https://www.kaggle.com/learn/data-visualization

欠損値やクロスバリデーションについて
Intermediate Machine Learning
https://www.kaggle.com/learn/intermediate-machine-learning

# kaggleを写経する

過去のコンペの中から気になったコンペを選んで人気の高いNotebookを写経していきましょう

* ゲーム好きならPUBGのデータ分析とか面白い
https://www.kaggle.com/c/pubg-finish-placement-prediction

* Hotnessでsortすると人気の高いものが出てきますhttps://www.kaggle.com/c/pubg-finish-placement-prediction/notebooks?sortBy=hotness&group=everyone&pageSize=20&competitionId=10335

  • pythonの書き方を学ぶ
  • 一般的なライブラリpandas,scikit-learn,seabornの使い方を学ぶ

とにかく手を動かしつつわからないところはググってメモを作って、、という流れで学んでいきましょう。

筆者は「毎日1行kaggleを写経する」を目標にしていました。
だいたい1行かけば続けて何行も作業するのと、最初に1行書くハードルは低いので結構いい感じに勉強が進みました。

最近出た本ですがこちらの本が非常に良かったのでついでに紹介。これくらいの段階でやると写経しているものの意味が分かって面白いと思います。
Kaggleで勝つデータ分析の技術
https://www.amazon.co.jp/dp/4297108437/

# scikit-learnを知る

ある程度写経をして「どう書くのか」がわかってきたら次は「モデルがどう動くのか」を学習します。(この”学習”の主語は機械ではなく人間です)

scikit-learnはpythonで動作する一般的な機械学習のライブラリですが、こちらのユーザーガイドにそれぞれのモデルの動作や使い方、元論文への参照がまとまっています。

https://scikit-learn.org/stable/user_guide.html#

## 読み方

Google翻訳片手に一通り説明を読みつつ、実際にデータに適用して動作を色々眺めてみるとイメージが湧くと思います。

実際にコードを動かす際にはkaggleのnotebookの他に Google Colaboratory がおすすめです。
https://colab.research.google.com

いくつかメモリやCPUリソースに制限がありますが、無料でpythonを書く環境が作れます。

またscikit-learn自体にいくつかのデータセットがサンプルとして含まれているので、そちらに適用してみるのも良いでしょう。特にiris_dataset(アヤメのやつ)はデータ量が150行ほどで少なく、多少重いコードを書いても一瞬で終わるので色々試すのにおすすめです。

以下最初に読むべき項目のまとめ
```
1. Supervised learning
1.1. Generalized Linear Models
1.2. Linear and Quadratic Discriminant Analysis ▲
1.3. Kernel ridge regression ▲
1.4. Support Vector Machines
1.5. Stochastic Gradient Descent
1.6. Nearest Neighbors
1.7. Gaussian Processes ▲ 後回しだけどやる
1.8. Cross decomposition ▲
1.9. Naive Bayes
1.10. Decision Trees
1.11. Ensemble methods
1.12. Multiclass and multilabel algorithms
1.13. Feature selection
1.14. Semi-Supervised ▲ 後回しだけどやる
1.15. Isotonic regression ▲ 後回しだけどやる
1.16. Probability calibration ▲
1.17. Neural network models (supervised) ▲
2,3,4は(Neural network以外)全部やる。5,6は飛ばす。その後で後回しのものをやる
```

# データエンジニアリング

機械学習そのものでは無いですが、実際に業務で大量データを扱う方法も知っておくと安心。

スケーラブルデータサイエンス
https://www.amazon.co.jp/dp/4798158836/

GCPの教科書
https://www.amazon.co.jp/dp/4865941959/

BigQueryまわりを扱えるようになっておけば大体大丈夫。

# より深く知る

以下読んだ中で面白かった書籍。
ここまでの知識で問題なく読めると思います

## 機械学習全般

機械学習を知らない人にわかりやすく説明する用

見て試してわかる機械学習アルゴリズムの仕組み 機械学習図鑑
https://www.amazon.co.jp/dp/4798155659/

実践 機械学習システム
https://www.amazon.co.jp/dp/4873116988/

## 仕事としての機械学習

すぐ読めて実際の現場で起きる知見が得られる。必読。

データサイエンティストの秘密ノート 35の失敗事例と克服法
https://www.amazon.co.jp/dp/4797389621/

最強のデータ分析組織 なぜ大阪ガスは成功したのか
https://www.amazon.co.jp/dp/4822258912/

本物のデータ分析力が身に付く本
https://www.amazon.co.jp/dp/4822237729/

こっちはちょっと分厚い

データ分析プロジェクトの手引 データの前処理から予測モデルの運用までを俯瞰する20章
https://www.amazon.co.jp/dp/4320124030/

## ベイズ

積分の話を省略しているので概観を掴むために
完全独習 ベイズ統計学入門
https://www.amazon.co.jp/dp/4478013322/

ベイズ統計の理論と方法
https://www.amazon.co.jp/dp/4339024627/

理論を知った後の事例集として
たのしいベイズモデリング: 事例で拓く研究のフロンティア
https://www.amazon.co.jp/dp/4762830402/

## 前処理

前処理大全[データ分析のためのSQL/R/Python実践テクニック]
https://www.amazon.co.jp/dp/4774196479/

## 特徴量エンジニアリング

機械学習のための特微量エンジニアリング
https://www.amazon.co.jp/dp/4873118689/

## アンサンブル学習

アンサンブル法による機械学習: 基礎とアルゴリズム
https://www.amazon.co.jp/dp/476490537X/

## 時系列データ

現場ですぐ使える時系列データ分析 ~データサイエンティストのための基礎知識
https://www.amazon.co.jp/dp/4774163015/

経済・ファイナンスデータの計量時系列分析
https://www.amazon.co.jp/dp/4254127928

# kaggleに挑戦しよう

開催中のkaggleのコンペに参加することで、普段は触れないような現実のデータを使った分析を行えます。
また、上位に食い込むことができればメダルや賞金をもらえる可能性もあります。
良い分析ができたら積極的にコミュニティに公開することでフィードバックをもらえることもあるかもしれません。

実践的なデータ分析を通して研鑽をしていきましょう。

--

--

No responses yet