機械学習の始め方(概要編)

スポンサーリンク
データ解析




データ解析や機械学習をするにあたり、解析の流れがあります。この流れに沿った解析をしないと、現場への還元(利益、業務効率化など)に繋がらないばかりか、時間の無駄になるかもしれません。データ解析や機械学習を趣味で終わらしたい方は少ないと思います。

そこで、現場還元を目指した機械学習の流れを説明して、一緒に学んでいきたいと思います。

それでは、やっていきましょう。

いまさらだけど、データ解析 ってなに?

  1. 問題点と解決方法を決める
  2. データを収集する
  3. データを理解する
  4. データの形を整える
  5. 異なるさまざまなモデルを試し、最良の数個に絞り込む
  6. 数個のモデルを微調整し、それらのモデルを組み合わせる
  7. アウトプットする
  8. システムを稼働し、経過観察や微調整を行う

1. 問題点と解決目標を決める

  • 問題点を挙げ、その解決のために必要な方法を決める(ほんとうに機械学習で解決できるのかどうか)
  • 目標達成度を定める(分類なら正解率が95%以上 or 今より10%向上させるなど、回帰なら誤差が10%以下にするなど)
  • 目標達成するとどんな影響があるか(営業利益が5%向上、人件費が20%下がる、業務時間が平均1時間減るなど)
  • 目標とそれに関連する因子を抽出する
  • 目標とそれに関連する因子のデータを収集する方法を決める

【重要】データの扱い方(Amazonセールアプリ編)

2. データを収集する

【超重要】はじめてのデータ収集方法

  • 現実的で継続可能なデータ収集方法を決める
  • できるだけ自動化できる方法で収集する
  • データ収集の注意点を確認する(Webスクレイピングは禁止されているサイトがある、個人情報の取り扱いなど)
  • データを操作しやすい形に整える(Pandasのデータフレームの形など)

3. データを理解する

  • 収集したデータからテストデータを抽出する(最後のモデルの評価までテストデータは決して見てはいけない)
  • データの操作用にコピーを作る(データを誤った操作をしても、オリジナルデータを残しておけば問題ない)
  • データ操作の経過記録を残すために、Jupyter Notebook、Jupyter Labで行う。これらは、各コードで結果が分かるので、経過記録には適している

データを確認する(可視化)

    • 個別名
    • データのタイプ(カテゴリ、数値、有無、文字など)
    • 欠損値
    • 外れ値
    • 各変数の分布を確認する(正規分布、カテゴリ変数に偏りがあるかなど)
    • 目的変数(ターゲット)と説明変数(特徴量)との関連性を確認する

    4. データの形を整える

  • オリジナルデータのコピー(操作用のデータ)を使う
  • データの前処理を行う

      • 外れ値を修正または除去する
      • 欠損値を埋める(平均値、中央値、最頻値、多重代入など)または除去する

    説明変数(特徴量)を選択する

      • データの可視化と現場感覚で必要ないと思われる変数を除去する

    説明変数(特徴量)エンジニアリング

      • 連続変数の離散化(年齢を年代別に変換するなど)
      • 説明変数を集計して新しい変数を作る(年月日から期間という変数を作るなど)

    説明変数のスケーリング

      • 標準化
      • 正規化

    5.異なるさまざまなモデルを試し、最良の数個に絞り込む

    • デフォルトのハイパーパラメータでいいので、さまざまなモデルを訓練する
    • さまざまなモデルの性能を評価、比較する
    • 性能が良い数個のモデルを見つけ出す(モデルの個数に大きな意味はなく、明らかに性能が不足しているモデルは除外する)

    6.数個のモデルを微調整し、それらのモデルを組み合わせる

    • 交差検証を使って、ハイパーパラメータを微調整する(グリッドサーチやランダムサーチ、ベイズ最適化など)
    • アンサンブルメソッド(いくつかのモデルを組み合わせて予測する)を試す
    • 最終的に最良のモデルができたら、テストデータを使って、汎化性能を評価する

    7.アウトプットする

    • 今までの結果のプレゼンテーションや企画書に作る
    • 最初の問題点に対する解決方法やその性能を説明する
    • 問題解決により得られるメリットを、具体的な数値を使って説明する

    8.システムを稼働し、経過観察や微調整を行う

    • Jupyter NotebookやJupyter Labなどで作ったプログラムをpy.ファイル(Pythonの拡張子)で保存し、実行する
    • 予想した結果が出ているかを確認する。
    • 必要に応じて微調整する

    データ分析や機械学習の結果から、精度の高いモデルができたが、実際の現場では、思ったほど良くないことはあります。やはり、リアルワールド(実際の世界)での結果を注視する必要があります。システムやアプリの開発はわたしもよく分かっていませんが、機械学習の最終目標は開発になると思います。

    まとめ

    今回は、機械学習を用いた開発の概要について説明しました。

    上記のような流れがないと、自己満足で終わってしまうデータ解析になってしまうかもしれません。この流れを頭の片隅に置いて、データ分析をしていくことで、現場に還元できる意味のある解析になると思います。現場への還元を目指してデータ解析を楽しみましょう。



コメント

タイトルとURLをコピーしました