Mímisbrunnr知恵の泉

← MLOps 一覧

🎓 レベル:標準 | 重要度:A(必須)

📎 前提:オンライン推論サービング | 関連:データドリフトとコンセプトドリフトの検知

要点(BLUF)

1. なぜ多層で監視するのか

「精度だけ見ればよい」は成立しません。理由は正解がすぐ手に入らないから。多くの実務では、予測した時点では答え合わせができません。だから、ラベルが来る前に異常を捉える層(入力・予測の監視)と、ラベルが来てから確認する層(性能監視)を重ねて持ちます。

2. 監視の4層

flowchart TB
  L1["1 システム指標:遅延 エラー率 スループット"] --> A["即時に分かる・ラベル不要"]
  L2["2 入力データ:欠損 範囲外 分布シフト"] --> A
  L3["3 予測:予測分布の偏り 確信度"] --> A
  L4["4 性能:精度 ビジネス指標"] --> B["ラベルが来てから・遅延あり"]
何を見るかラベル要否反応速度
システムp99遅延・エラー率・QPS不要即時
入力欠損率・範囲外・分布(PSI等)不要即時
予測予測分布・確信度の偏り不要即時
性能精度・F1・売上・解約率必要遅延

層1〜3はラベルなしで即座に異常を捉えられる早期警戒。層4は確定診断だが遅れて来ます。

3. 動く最小例:ラベルが来る前に予測分布の異常で警戒する

正解ラベルが遅れて到着する状況で、予測分布の偏りだけで劣化の予兆を捉えられることを示します。

import numpy as np

rng = np.random.default_rng(0)

def predicted_positive_rate(scores, threshold=0.5):
    return float((scores >= threshold).mean())

# 学習時に観測した基準:陽性予測率 約20%、平均確信度
ref_scores = rng.beta(2, 8, 5000)            # 基準の予測スコア分布
ref_rate = predicted_positive_rate(ref_scores)
ref_conf = float(np.abs(ref_scores - 0.5).mean())   # 0.5からの距離=確信度の代理

# 本番(ラベルはまだ無い):入力分布が変わり予測が陽性側に偏った
cur_scores = rng.beta(4, 6, 3000)            # 陽性寄りにシフト
cur_rate = predicted_positive_rate(cur_scores)
cur_conf = float(np.abs(cur_scores - 0.5).mean())

# しきい値:陽性率がベースラインの2倍 or 確信度が大きく低下したら警戒
rate_alarm = cur_rate > ref_rate * 2.0
conf_alarm = cur_conf < ref_conf * 0.7

print(f"陽性予測率 : 基準 {ref_rate:.3f} -> 本番 {cur_rate:.3f}")
print(f"平均確信度 : 基準 {ref_conf:.3f} -> 本番 {cur_conf:.3f}")
print(f"陽性率アラーム : {rate_alarm}")
print(f"確信度アラーム : {conf_alarm}")
print(f"総合判定 : {'要調査(ラベル前に警戒)' if (rate_alarm or conf_alarm) else '正常'}")

出力:

陽性予測率 : 基準 0.020 -> 本番 0.246
平均確信度 : 基準 0.301 -> 本番 0.149
陽性率アラーム : True
確信度アラーム : True
総合判定 : 要調査(ラベル前に警戒)

出力の意味:正解ラベルがまだ1件も無い状態でも、予測分布の変化だけで異常を捉えました。陽性予測率が 2%→約25% へ急増し、平均確信度(0.5からの距離)も 0.30→0.15 と低下——モデルが「いつもと違う入力」を見せられ、判断に迷っている兆候です。精度(層4)が確定するのは数週間後ですが、層3の監視がそれを待たずに警戒を上げます。この予兆は次のデータドリフトとコンセプトドリフトの検知で入力分布の変化として定量化されます。

4. 運用の勘所

なぜそうするのか

多層監視にするのは、最も確実な指標(精度)が最も遅れて来るという ML 固有の非対称性のためです。精度だけに頼ると、劣化に気づくのが数週間遅れ、その間ずっと悪い予測を出し続けます。入力分布・予測分布はラベルなしで即座に観測できるので、これらを早期警戒に使い、精度は確定診断に使う——「速いが間接的な指標」と「正確だが遅い指標」を役割分担させるのが、ML 監視の核心です。

⚠️ よくある落とし穴

対応 lab

関連ノート