🤖

機械学習プロジェクトの流れ

に公開

この記事は

機械学習モデルを実際に作成した後の本番環境へのデプロイ、メンテナンスの考え方をまとめたものである。

機械学習プロジェクトの流れ

1.問題提起

ビジネス領域で機械学習によって解くことができる課題は何なのか考える。
ここを見つけるのが一番難易度が高く、ただ精度の高いモデルを作ればよいわけではない。
現場のニーズに合ったものを開発しなければ使われないモデルが作られるだけ。

2.モデルの開発

汎用性能が高いモデルを開発する。未学習のデータに対して精度が担保される状態を作る。

3.モデルのデプロイ

Webサーバー、アプリ、Webページにモデルを導入して使用者が使える状態にする。

4.監視

本番環境での性能を監視して、次の世代のモデル開発のヒントを得る
データドリフト、コンセプトドリフトに注意する

1.問題提起

機械学習によって解くべき課題は何なのか?そもそも機械学習を使う必要があるのか?
簡単に済ませる方法はないのか?などビジネス領域と話し合う。
話すポイントとしては

  • 予測したいものは何か?
  • データとしては何が使えそうか?
  • データは作成する必要があるのか?
  • 既存の解決策で良いのではないか?
  • 特定の制約はあるか?
  • 目指すべき指標は?

2.モデル開発

データの準備、前処理、評価指標の選択、バリデーション、ベースラインモデルの選定、過学習できるモデルの開発、正則化&パラメーターチューニング、汎用モデルの開発の順番で進めていく。
多くの場合、既に開発された事例があるのでソレを参考にしよう。

3.モデルのデプロイ

モデルを開発してノートブックに保存したら終了ではありません。
本番環境にデプロイしなくてはなりません。
このときデプロイ先の環境はPythonで書かれていないかもしれません。
異なるプログラミング言語間で連携させると処理速度が低下したり、リソースの過剰消費が懸念されます。デプロイについては下記の記事を御覧ください。

https://qiita.com/ktdatascience/items/230a3e26c9d1c3db480c

4. モデルの監視

モデルはデプロイしたら終了ではありません。継続的にアップデートする必要があります。
また新しいモデルをデプロイしたらABテストを実施して古いモデルとどちらが良いのかの検証をしましょう。各種クラウドサービスにはABテストをするためのデプロイ方法が存在します。

またデータ自体の性質や定義が変わってしまうかもしれません。
データドリフトとコンセプトドリフトです。

データドリフト

データドリフトとは、本番環境に投入される入力データ(特徴量)の分布が、モデルを学習したときのデータ分布から時間とともに変化してしまう現象を指します。モデルは学習時の分布を前提に最適化されているため、入力の偏りや外れ値の増加などが起こると、予測性能が低下するリスクがあります。

主な原因例

  • 新しい顧客層/利用パターンの登場
  • センサーやログ収集システムの変更
  • 季節要因やキャンペーンによる一時的ピーク

検出方法

  • 統計的検定:Kolmogorov–Smirnov検定、Jensen–Shannon Divergenceなどで特徴量分布の変化をモニタリング
  • Population Stability Index(PSI):ビン分けしたヒストグラム間の変化度合いを数値化
  • 可視化ツール:時系列プロットやヒストグラムを定期的に比較

対応策

  1. 再学習(リトレーニング):ドリフト検出後に最新データでモデルを再学習
  2. オンライン学習:逐次データ取り込み型のアルゴリズム(e.g. SGD, Hoeffding Tree)を利用
  3. 特徴量選定の見直し:ドリフトしやすい特徴量を除外または変換
  4. アラートとダッシュボード:閾値を超えたら担当チームへ通知

コンセプトドリフト

コンセプトドリフトとは、特徴量 XX と目的変数 YY の関係性(条件付き分布 P(Y∣X)P(Y|X))自体が変化してしまう現象を指します。たとえば、ある閾値以下の購買金額を「低」としたモデルが作ったが、マーケット環境の変更で顧客の購買行動そのものが変わる場合などです。

主な原因例

  • ビジネスルールや法規制の変更
  • 競合サービスの新規参入による顧客行動変化
  • 時間経過によるユーザー心理の変化

検出方法

  • モデル性能低下:AUC、F1、RMSEなど評価指標の急激な悪化を監視
  • オンラインドリフト検出器:ADWIN、DDM(Drift Detection Method)などで逐次検定
  • 予測値 vs 実測値の乖離分析:Residual 分布の変化や累積誤差プロット

対応策

  1. 定期再学習:性能が落ちたタイミングでラベル付きデータを集め再学習
  2. モデルアンサンブル:古いモデルと新しいモデルを組み合わせ、重み付けでスムーズに切り替え
  3. オンライン学習アルゴリズム:変化の検出と同時にモデル更新が可能な手法を利用
  4. A/Bテスト/カナリアリリース:新旧モデルを並行運用し、徐々に移行

まとめ

この記事では機械学習プロセスの流れを解説しました。
4つのフェーズがあり、それぞれ下記のような点に注目する必要がありました。

  • 問題提起
    • ビジネス上の真のニーズを特定
    • 予測対象/KPIの明確化
    • 利用可能データの確認・品質検討
    • 既存ソリューションとの比較、ROI試算
  • モデルの開発
    • データ収集・前処理 → EDA
    • ベースラインモデル構築と評価指標選定(RMSE、AUCなど)
    • 特徴量エンジニアリング・ハイパーパラメータ調整
    • 過学習対策(正則化・early stopping)
    • モデル解釈性(SHAPなど)と再現性の担保
  • モデルのデプロイ
    • 推論方式の選定:バッチ/オンライン
    • コンテナ化(Docker+Kubernetesなど)やサーバーレス化
    • CI/CDパイプライン構築(自動テスト・自動デプロイ)
    • API設計(エンドポイント・認証)・スケーリング設定
    • ロギング/モニタリング基盤の整備
  • モデルの監視・保守
    • 本番での性能監視(精度・レイテンシ・エラー率)
    • データドリフトコンセプトドリフトの検出
    • アラート設定と定期的なレトレーニング
    • A/Bテスト/カナリアリリースによる新旧モデル比較
    • モデルバージョン管理と変更履歴のドキュメント化

Discussion