🤖 STEP 4: 機械学習プロジェクトのワークフロー
問題定義からデプロイまで、機械学習プロジェクトの全体像を理解します
📋 このステップで学ぶこと
- 機械学習プロジェクトの9つのステップ
- 各ステップの重要性と役割
- 実務での注意点
- よくある失敗パターンと対策
練習問題: 2問
🎯 1. 機械学習プロジェクトの全体像
機械学習というと「モデルを作る」ことに注目しがちですが、実際のプロジェクトではモデル作成は全体の一部に過ぎません。
成功する機械学習プロジェクトには、体系的なワークフローがあります。9つのステップを順番に見ていきましょう。
機械学習プロジェクトの約80%の時間はデータの準備に費やされます。
「モデルを作る」のは全体の20%程度。残りの80%は、データ収集、EDA、前処理に使います。
「データの質がモデルの性能を決める」ということを忘れないでください。
🔄 プロジェクトの流れをイメージする
STEP 1(問題定義):
「来月の商品別売上を予測し、在庫を最適化したい」
STEP 2(データ収集):
過去3年分の売上データ、商品情報、季節要因、キャンペーン情報を集める
STEP 3(EDA):
売上の傾向、季節性、人気商品のパターンを可視化して理解
STEP 4(前処理):
欠損値の補完、異常値の除去、カテゴリ変数のエンコーディング
STEP 5-7(モデル作成・評価):
ランダムフォレストで予測モデルを作成、精度を評価
STEP 8(改善):
特徴量を追加、ハイパーパラメータを調整して精度向上
STEP 9(デプロイ):
毎日自動で予測を実行し、在庫管理システムに連携
📌 2. STEP 1: 問題定義(Problem Definition)
🔍 問題定義とは?
「何を解決したいのか」「何を予測したいのか」を明確にするステップです。
これが曖昧だと、プロジェクト全体が迷走します。問題定義は最も重要なステップと言っても過言ではありません。
- ビジネス目標:何のために機械学習を使うのか?
- 成功の定義:どうなれば成功と言えるのか?(数値で)
- 問題のタイプ:回帰?分類?クラスタリング?
- 制約条件:予算、時間、必要な精度
- 利用シーン:誰が、いつ、どのように使うのか?
❌ 悪い問題定義 vs ✅ 良い問題定義
「機械学習を使うこと」が目的になっていませんか?
機械学習はあくまで「手段」です。本当の目的は「売上向上」「コスト削減」「顧客満足度向上」などのビジネス価値です。
もしルールベースで解決できるなら、わざわざ機械学習を使う必要はありません。
📊 3. STEP 2: データ収集(Data Collection)
🔍 データ収集とは?
機械学習に必要なデータを集めるステップです。「どんなデータが必要か」「どこから集めるか」を考えます。
- 社内データ:売上記録、顧客情報、アクセスログ、センサーデータなど
- 公開データ:政府統計、Kaggleのデータセット、UCI ML Repositoryなど
- 外部データ:天気データ、人口統計、経済指標、SNSデータなど
- 新規収集:アンケート、Web スクレイピング、IoTセンサーなど
✅ データ収集で確認すべきチェックリスト
「ゴミを入れれば、ゴミが出る」
どんなに優れたアルゴリズムを使っても、データの質が悪ければ良い結果は出ません。
逆に、シンプルなアルゴリズムでも、良質なデータがあれば素晴らしい結果が出ることもあります。
データ収集には十分な時間をかけましょう。
🔍 4. STEP 3: EDA(探索的データ分析)
🔍 EDAとは?
EDA(Exploratory Data Analysis:探索的データ分析)は、データを可視化して、特徴やパターンを理解するステップです。
「敵を知り己を知れば百戦危うからず」と言いますが、機械学習では「データを知れば、良いモデルが作れる」のです。
- データの概要把握:行数、列数、データ型を確認
- 統計量の確認:平均、中央値、最大値、最小値、標準偏差
- 欠損値の確認:どの列に何%欠損しているか
- 分布の可視化:ヒストグラム、箱ひげ図で分布を確認
- 相関の確認:変数同士の関係性を相関行列で確認
- 異常値の検出:明らかにおかしいデータを発見
- パターンの発見:季節性、トレンド、グループ間の差
📊 EDAで使うPythonコードの例
- データのパターン:季節性、曜日効果、トレンドなど
- 外れ値:異常に大きい・小さい値(入力ミス?実際の異常?)
- 不均衡なデータ:一部のクラスが極端に少ない(例:不正取引は全体の0.1%)
- 多重共線性:変数同士が強く相関している(重複した情報)
- 予測に役立ちそうな特徴:ターゲットと相関が高い変数
🧹 5. STEP 4: データ前処理(Data Preprocessing)
🔍 データ前処理とは?
データをきれいにして、機械学習で使える形に整えるステップです。
これが機械学習プロジェクトで最も時間がかかる作業です。地味ですが、モデルの性能に直結する重要な作業です。
📊 前処理のPythonコード例
「データの80%はゴミ」と言われるほど、現実のデータは汚れています。
丁寧に前処理することで、モデルの精度が20〜30%向上することも珍しくありません。
前処理をおろそかにして「モデルを改善しよう」としても、限界があります。
🤖 6. STEP 5-7: モデル選択・訓練・評価
STEP 5: モデル選択
どのアルゴリズムを使うかを決めます。最初から複雑なモデルを使うのではなく、シンプルなモデルから始めるのがポイントです。
回帰(数値予測)なら:
- まず:線形回帰(シンプルで解釈しやすい)
- 次に:Ridge回帰、Lasso回帰(正則化あり)
- さらに:ランダムフォレスト回帰、XGBoost
分類なら:
- まず:ロジスティック回帰(シンプルで解釈しやすい)
- 次に:決定木(可視化できる)
- さらに:ランダムフォレスト、XGBoost、SVM
STEP 6: モデル訓練
STEP 7: モデル評価
訓練データでの精度だけを見てはいけません!
訓練データで99%の精度でも、テストデータでは60%ということもあります。
必ず未知のデータ(テストデータ)での性能を確認しましょう。
⚙️ 7. STEP 8: モデル改善(Model Improvement)
🔧 モデル改善の手法
1. データの質と量を改善(最も効果的!)
良いデータがあれば、シンプルなモデルでも高精度
2. 特徴量エンジニアリング
データの「どこに着目するか」を改善
3. アルゴリズムの変更
問題に合った手法を選ぶ
4. ハイパーパラメータチューニング(最後に)
微調整で数%の改善
多くの場合、ハイパーパラメータチューニングで得られる改善は数%程度です。
一方、良いデータや良い特徴量を追加すると、10〜30%の改善が得られることもあります。
「モデルのチューニングに時間をかけすぎて、データ改善がおろそかになる」のはよくある失敗です。
🚀 8. STEP 9: デプロイ(Deployment)
🔍 デプロイとは?
モデルを実際のビジネスで使えるようにするステップです。
Jupyter Notebookで動くだけでは、ビジネスでは使えません。実際のシステムに組み込んで、継続的に運用する必要があります。
📊 デプロイ後に考えるべきこと
- モニタリング:モデルの性能を常に監視する
- 再学習:定期的にモデルを更新する(週次、月次など)
- バージョン管理:モデルのバージョンを記録し、いつでも戻れるように
- ロールバック:問題があれば前のバージョンに戻す
モデルの劣化(Model Decay):
時間が経つと精度が落ちていきます。定期的な再学習が必要です。
データドリフト(Data Drift):
入力データの傾向が変わります。例:コロナ禍で消費者行動が変化
コンセプトドリフト(Concept Drift):
予測対象自体の意味が変わります。例:「人気商品」の定義が変化
→ 定期的なモニタリングと再学習が必須!
🔄 9. 実務での注意点
機械学習プロジェクトは反復的
機械学習プロジェクトは、教科書のように順番に進むことはほとんどありません。
何度も前のステップに戻って改善する必要があります。
❌ よくある失敗パターン
「とりあえずAIで何かやりたい」では成功しません。
→ 対策:具体的で測定可能な目標を設定する
モデルばかりに注目して、データの確認をおろそかにする。
→ 対策:EDAとデータ前処理に十分な時間をかける
訓練データでの精度だけを見て満足する。
→ 対策:必ずテストデータで評価する。交差検証を使う
Jupyter Notebookで動くだけで満足する。
→ 対策:最初から「どう運用するか」を考える
📝 STEP 4 のまとめ
- 機械学習プロジェクトは9つのステップで進める
- 問題定義が最も重要(何を解決したいのか明確に)
- プロジェクトの80%はデータ準備(収集、EDA、前処理)
- データの質がモデルの性能を決める(Garbage In, Garbage Out)
- 機械学習プロジェクトは反復的(何度も前のステップに戻る)
- デプロイ後も継続的な改善が必要(モニタリング、再学習)
機械学習は「モデルを作ること」だけではありません。
問題定義 → データ準備 → モデル作成 → 運用という全体の流れを理解することが大切です。
STEP 5では、「データの分割とホールドアウト法」について詳しく学びます。
なぜデータを訓練・テストに分けるのか、その重要性を理解しましょう。
📝 練習問題
プロジェクトのステップ
あなたは新しい機械学習プロジェクトを始めます。以下のステップを正しい順序に並べてください。
A. モデルの訓練
B. データの可視化(EDA)
C. 問題定義
D. データ前処理
E. モデルの評価
正しい順序とその理由:
1. C: 問題定義
まず「何を解決したいか」を明確にします。これがないと、どんなデータが必要か、どんなモデルを使うべきかが決まりません。
2. B: データの可視化(EDA)
集めたデータを可視化して、特徴やパターンを理解します。データの傾向、欠損値、異常値を確認します。
3. D: データ前処理
EDAで見つけた問題(欠損値、異常値など)を処理し、データを機械学習で使える形に整えます。
4. A: モデルの訓練
前処理が完了したデータでモデルを学習させます。
5. E: モデルの評価
訓練したモデルの性能をテストデータで測定します。
なぜこの順序が重要なのか:
- 問題定義をせずにモデルを作ると、「作ったはいいけど何の役に立つの?」となる
- EDAをせずに前処理すると、データの特徴を理解しないまま間違った処理をする可能性がある
- 前処理をせずにモデルを訓練すると、欠損値でエラーが出たり、精度が低くなる
- 評価は訓練の後でないとできない(モデルがないと評価できない)
実務でのトラブルシューティング
あなたはスパムメール判定のモデルを作りました。
訓練データでの正解率:99%
テストデータでの正解率:60%
この状況で、最も可能性が高い問題と対策を選んでください。
- A. データ量が少ない → もっとデータを集める
- B. 過学習が起きている → モデルを単純にする、正則化を強める
- C. 前処理が不十分 → データクリーニングをやり直す
- D. アルゴリズムが不適切 → 別のアルゴリズムを試す
なぜBが正解なのか?
訓練データで99%、テストデータで60%という大きな差は、過学習(Overfitting)の典型的な症状です。
過学習とは何か:
- モデルが訓練データを「丸暗記」してしまっている状態
- 訓練データでは完璧に正解するが、新しいデータには対応できない
- 「勉強した問題だけは解けるが、応用問題は解けない」ようなもの
過学習の対策:
- モデルを単純にする(決定木の深さを浅くする、特徴量を減らす)
- 正則化を強める(Ridge、Lassoのalphaを大きくする)
- データを増やす(学習データを増やすと過学習しにくくなる)
- 交差検証を使う(より安定した評価ができる)
- ドロップアウトを使う(ニューラルネットワークの場合)
他の選択肢が間違いの理由:
A(データ量が少ない)が間違いの理由:
データ量が少ない場合、訓練データでも精度が低くなるはずです。今回は訓練データで99%の高精度が出ているので、データ量の問題ではありません。
C(前処理が不十分)が間違いの理由:
前処理の問題なら、訓練データでも精度が低くなるはずです。訓練データで99%出ているので、前処理の問題ではありません。
D(アルゴリズムが不適切)が間違いの理由:
アルゴリズムの問題なら、訓練データでも精度が低くなることが多いです。今回の「訓練99%、テスト60%」というパターンは、アルゴリズムの問題というより過学習の問題です。
見分けるポイント:
訓練精度とテスト精度の差に注目しましょう。
- 訓練精度 >> テスト精度(大きな差) → 過学習
- 訓練精度 ≒ テスト精度(両方低い) → データ、前処理、アルゴリズムの問題
学習メモ
機械学習入門 - Step 4