データ解析や機械学習をするにあたり、解析の流れがあります。この流れに沿った解析をしないと、現場への還元(利益、業務効率化など)に繋がらないばかりか、時間の無駄になるかもしれません。データ解析や機械学習を趣味で終わらしたい方は少ないと思います。
そこで、現場還元を目指した機械学習の流れを説明して、一緒に学んでいきたいと思います。
それでは、やっていきましょう。
- 問題点と解決方法を決める
- データを収集する
- データを理解する
- データの形を整える
- 異なるさまざまなモデルを試し、最良の数個に絞り込む
- 数個のモデルを微調整し、それらのモデルを組み合わせる
- アウトプットする
- システムを稼働し、経過観察や微調整を行う
1. 問題点と解決目標を決める
- 問題点を挙げ、その解決のために必要な方法を決める(ほんとうに機械学習で解決できるのかどうか)
- 目標達成度を定める(分類なら正解率が95%以上 or 今より10%向上させるなど、回帰なら誤差が10%以下にするなど)
- 目標達成するとどんな影響があるか(営業利益が5%向上、人件費が20%下がる、業務時間が平均1時間減るなど)
- 目標とそれに関連する因子を抽出する
- 目標とそれに関連する因子のデータを収集する方法を決める
2. データを収集する
- 現実的で継続可能なデータ収集方法を決める
- できるだけ自動化できる方法で収集する
- データ収集の注意点を確認する(Webスクレイピングは禁止されているサイトがある、個人情報の取り扱いなど)
- データを操作しやすい形に整える(Pandasのデータフレームの形など)
3. データを理解する
- 収集したデータからテストデータを抽出する(最後のモデルの評価までテストデータは決して見てはいけない)
- データの操作用にコピーを作る(データを誤った操作をしても、オリジナルデータを残しておけば問題ない)
- データ操作の経過記録を残すために、Jupyter Notebook、Jupyter Labで行う。これらは、各コードで結果が分かるので、経過記録には適している
データを確認する(可視化)
-
- 個別名
- データのタイプ(カテゴリ、数値、有無、文字など)
- 欠損値
- 外れ値
- 各変数の分布を確認する(正規分布、カテゴリ変数に偏りがあるかなど)
- 目的変数(ターゲット)と説明変数(特徴量)との関連性を確認する
4. データの形を整える
- オリジナルデータのコピー(操作用のデータ)を使う
-
データの前処理を行う
-
- 外れ値を修正または除去する
- 欠損値を埋める(平均値、中央値、最頻値、多重代入など)または除去する
説明変数(特徴量)を選択する
-
- データの可視化と現場感覚で必要ないと思われる変数を除去する
説明変数(特徴量)エンジニアリング
-
- 連続変数の離散化(年齢を年代別に変換するなど)
- 説明変数を集計して新しい変数を作る(年月日から期間という変数を作るなど)
説明変数のスケーリング
-
- 標準化
- 正規化
5.異なるさまざまなモデルを試し、最良の数個に絞り込む
- デフォルトのハイパーパラメータでいいので、さまざまなモデルを訓練する
- さまざまなモデルの性能を評価、比較する
- 性能が良い数個のモデルを見つけ出す(モデルの個数に大きな意味はなく、明らかに性能が不足しているモデルは除外する)
6.数個のモデルを微調整し、それらのモデルを組み合わせる
- 交差検証を使って、ハイパーパラメータを微調整する(グリッドサーチやランダムサーチ、ベイズ最適化など)
- アンサンブルメソッド(いくつかのモデルを組み合わせて予測する)を試す
- 最終的に最良のモデルができたら、テストデータを使って、汎化性能を評価する
7.アウトプットする
- 今までの結果のプレゼンテーションや企画書に作る
- 最初の問題点に対する解決方法やその性能を説明する
- 問題解決により得られるメリットを、具体的な数値を使って説明する
8.システムを稼働し、経過観察や微調整を行う
- Jupyter NotebookやJupyter Labなどで作ったプログラムをpy.ファイル(Pythonの拡張子)で保存し、実行する
- 予想した結果が出ているかを確認する。
- 必要に応じて微調整する
データ分析や機械学習の結果から、精度の高いモデルができたが、実際の現場では、思ったほど良くないことはあります。やはり、リアルワールド(実際の世界)での結果を注視する必要があります。システムやアプリの開発はわたしもよく分かっていませんが、機械学習の最終目標は開発になると思います。
まとめ
今回は、機械学習を用いた開発の概要について説明しました。
上記のような流れがないと、自己満足で終わってしまうデータ解析になってしまうかもしれません。この流れを頭の片隅に置いて、データ分析をしていくことで、現場に還元できる意味のある解析になると思います。現場への還元を目指してデータ解析を楽しみましょう。
-
コメント