機械学習を導入する流れ

# 概要

機械学習を始めよう！と思ったときにどうすればよいか、自分の考えを整理するうえで実際に稼働させるまでのステップをまとめてみました。

# Step0.課題(目的)を明らかにする
## どのようなビジネスで何を解決したいのか、何を達成したいのかを明らかにする。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/159589/a315e9c9-9ad4-7778-4303-ab5af48532e7.png)


やみくもに機械学習を導入して
「ユーザーの困りごとを発見して解決してあげよう」
「ユーザーが望む機能が何かを明らかにしよう」
こういうのを機械学習で見つけよう。
だとなかなか機械学習のターゲットが絞れない。

あくまで機械なので人間のinput以上は出せないことを忘れない！

具体的でアクションが取れるレベルまで落とし込むこと。
たとえば、
「サイト訪問者数を月●●万人まで増やす」
「管理システムの作業工数を月●●%削減する」
など誰が見てもわかる目標を設定すること。




# Step1.本当に機械学習を使うのか考えてみる
## その目標を達成するためには、本当に機械学習を利用しなければならないか？

![image.png](https://qiita-image-store.s3.amazonaws.com/0/159589/80cca875-237c-242c-c811-5747af483499.png)


BI(Business Intelligence)で可視化するだけで明らかにならないのか、集計するだけで把握できないのか、などできるだけ使わない方法を考える。
理由は

- 導入コストがエグい(時間がかかる)
- 導入してからも運用。維持・改善し続けなければならない(データの変化などもありモデルの精度が下がってくる)


# Step2.事例がないか探してみる
## 機械学習を使う場合、世に出てる事例はないか探してみる

![image.png](https://qiita-image-store.s3.amazonaws.com/0/159589/6179dc8f-5d82-bf60-eda0-10f33f855342.png)

- 意外とみんな似たようなことやってます。


# Step3.(分析基盤を含めた)システムを設計する

## 疎結合がおすすめ

- サービス拡張前提であれば、当たり前だけど密じゃない方がいいです(サービス基盤とAI基盤)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/159589/e4380a74-929d-be65-dec7-c1a5ae1f97c1.png)

### 分析の頻度
リアルタイムで処理する必要があるか(or定期的なバッチ処理でよいか)

### 性能の目安
どこまでの精度を追い求めるのか？をある程度決める。

### データを収集、処理する基盤と分析する基盤の関係を決める
お互いの将来的な機能拡張や展望によってどのような関係にするのか
密にしてよいのか、疎にするのかを考える。


# Step4. アルゴリズムの決定およびツールの選択

### 少しでも保守から解き放たれたい
![image.png](https://qiita-image-store.s3.amazonaws.com/0/159589/87a6a59b-7dae-b56e-c979-b8f8e11fd15a.png)

GCPやIBMなど(自前で作るのではなく)公開されているツールでinputさえ与えればあとは結果を出してくれる(少し言い過ぎw)ものを導入できないか？
実装するにしてもAzure Machine Learningなどで簡単に組むことができないか？
(※ ライブラリ型はいくら用意されているものが豊富とはいえ、ある程度自分で組まないといけず、動いている限りずーっと保守しなければならないのはツライ)

### どうしても巷に提供されているもので満たせない場合は、残念ですが実装しましょう。

# Step5. ログ、Inputデータの設計

## 対象とするシステムのログ仕様や機械学習に突っ込むデータ形式を決める

![image.png](https://qiita-image-store.s3.amazonaws.com/0/159589/94a65c58-55c6-5e6d-cad9-d0122cbfa13f.png)


### 何を変数とするのか
- ここは稼働中でもよく変わるので、最低限でも欲しい情報がとれるかだけでも確認しておく。(取れなければシステム側へのリクエストとなる)

### どういう形式で学習モデルに食わせたいか
必要な情報が取れたとして、果たして学習モデルに食わせる状態になっているのか？膨大な前処理を必要としないかを考慮しておく。(食わせやすい形にあらかじめデータを出力させておく)


# Step6. 分析の実行

## 結果が出なくて時間がかかっても、そんなもんだと割り切りましょう

![image.png](https://qiita-image-store.s3.amazonaws.com/0/159589/3e640239-b5ac-2260-b474-da13b07598fa.png)


### 前処理→学習→パラメータチューニング→評価

# 終わりに

参考文献[1]の「仕事ではじめる機械学習」をまず読んで、次に[2]の「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装」を読んでみてまとめてみました。
今まで漫然とモデルを作ったり、Pythonを書いたりして
機械学習を実践している気になりましたが、きちんとプロセスだてて実践することが必要だなあと痛感しました。
この本には他にもアルゴリズムの紹介や、マーケティングなどの分野で取り組んでいる方にも使えそうな手法が書いてありました。

(初期は)機械学習をできるだけ使わない。という部分の説明は
とりあえず機械学習使ってみようとする人たちは必見かなと。
また、Excelでできる範囲ではやってしまう実例が載っていますので、初期はそれでもありかと。

機械学習の導入本+α、どうして使わないといけないのかを深く考えさせられる書籍でした。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/159589/f15a85a5-26f3-9eff-0fca-afc02cf36fbd.png)


# 参考文献

[1]仕事ではじめる機械学習
<img src="https://www.oreilly.co.jp/books/images/picture_large978-4-87311-821-5.jpeg" width="200">
https://www.amazon.co.jp/%E4%BB%95%E4%BA%8B%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92-%E6%9C%89%E8%B3%80-%E5%BA%B7%E9%A1%95/dp/4873118255/ref=pd_cp_14_3?_encoding=UTF8&psc=1&refRID=75T48VD6XGVSW8MM3QRZ

[2]ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
<img src="https://images-na.ssl-images-amazon.com/images/I/512ru2i5gyL._SX352_BO1,204,203,200_.jpg" width="200">
https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8BDeep-Learning-%E2%80%95Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E5%AE%9F%E8%A3%85-%E6%96%8E%E8%97%A4-%E5%BA%B7%E6%AF%85/dp/4873117585/ref=pd_cp_14_2?_encoding=UTF8&psc=1&refRID=DFV4DA8ZV6S6VYQ2FS5B