演習:不正検知フレームワークを設計しよう
「ここまでの理解を形にしてほしい。経営会議で説明できるレベルの設計書を作ってくれ。」
田中VPoEがあなたにノートPCを渡す。
「コスト分析、検知戦略、KPI設計。この3つを30分でまとめてくれ。」
ミッション概要
NetShop社の不正検知プロジェクトにおいて、分析フレームワークを設計する演習である。コスト分析、検知戦略の策定、KPI設計までを一貫して行う。
Mission 1: コスト分析(10分)
NetShop社の決済データから、不正被害の全体コストを算出せよ。
データ:
- 月間取引件数: 600,000件
- 平均取引額: 7,500円
- 不正取引率: 0.25%
- 不正取引の平均額: 40,000円
- 現行の検知率(再現率): 35%
- 現行の偽陽性率: 2.5%
- 偽陰性1件あたりのコスト: 45,000円(被害額+手数料)
- 偽陽性1件あたりのコスト: 600円(対応コスト+機会損失)
タスク:
- 月間の不正取引件数と正常取引件数を算出する
- 現行システムの見逃し件数と偽陽性件数を算出する
- 月間の総コスト(見逃しコスト+偽陽性コスト)を計算する
- 検知率を80%、偽陽性率を0.5%に改善した場合の総コスト削減額を計算する
解答例
# 基本データ
monthly_txn = 600_000
fraud_rate = 0.0025
fraud_count = monthly_txn * fraud_rate # 1,500件
legit_count = monthly_txn - fraud_count # 598,500件
# 現行システム
current_recall = 0.35
current_fpr = 0.025
cost_fn = 45_000
cost_fp = 600
current_fn = fraud_count * (1 - current_recall) # 975件
current_fp = legit_count * current_fpr # 14,962件
current_cost = current_fn * cost_fn + current_fp * cost_fp
print(f"現行: 見逃し{current_fn:.0f}件, 偽陽性{current_fp:.0f}件")
print(f"現行月間コスト: {current_cost:,.0f}円")
# 現行: 見逃し975件, 偽陽性14,962件
# 現行月間コスト: 52,852,500円
# 改善後
improved_recall = 0.80
improved_fpr = 0.005
improved_fn = fraud_count * (1 - improved_recall) # 300件
improved_fp = legit_count * improved_fpr # 2,992件
improved_cost = improved_fn * cost_fn + improved_fp * cost_fp
print(f"改善後: 見逃し{improved_fn:.0f}件, 偽陽性{improved_fp:.0f}件")
print(f"改善後月間コスト: {improved_cost:,.0f}円")
# 改善後: 見逃し300件, 偽陽性2,992件
# 改善後月間コスト: 15,295,500円
saving = current_cost - improved_cost
print(f"月間コスト削減: {saving:,.0f}円")
print(f"年間コスト削減: {saving * 12:,.0f}円")
# 月間コスト削減: 37,557,000円
# 年間コスト削減: 450,684,000円
Mission 2: 検知戦略の策定(10分)
不正検知システムの多層防御戦略を設計せよ。
タスク:
- 取引処理の各フェーズ(取引前・取引中・取引後)で実施すべき検知方法を設計する
- 各フェーズで使用する特徴量の候補を3つ以上挙げる
- ルールベースとMLモデルをどう組み合わせるか方針を示す
- リアルタイム検知とバッチ検知の使い分けを説明する
解答例
多層防御戦略:
Phase 1: 取引前チェック(リアルタイム)
手法: ルールベース + デバイスフィンガープリント
特徴量:
- デバイス情報(ブラウザ、OS、画面解像度)
- IPアドレスとジオロケーション
- アカウントの年齢と過去の取引履歴
- ログインからの経過時間
判定: 明確な不正パターンはここでブロック
Phase 2: 取引時スコアリング(リアルタイム)
手法: MLモデル(LightGBM/XGBoost)
特徴量:
- 取引金額と過去の取引金額の偏差
- 直近1時間/24時間の取引頻度
- 商品カテゴリと過去の購入パターンの乖離
- 配送先住所と登録住所の距離
判定: スコアに応じて承認/要確認/拒否に分類
Phase 3: 取引後分析(バッチ)
手法: 異常検知モデル + グラフ分析
特徴量:
- 取引ネットワーク(同一カード/住所/IP)
- 時系列パターンの変化
- チャージバック履歴との相関
判定: 不正パターンの新規発見、モデル再学習
ルールとMLの組み合わせ:
- ルール: 既知の明確な不正パターン(高速・確実)
- ML: 複雑なパターン・未知の不正(柔軟・適応的)
- ルールでフィルタ後、MLで精密判定する直列構成
Mission 3: KPI設計(10分)
不正検知システムのKPIダッシュボードを設計せよ。
タスク:
- 検知性能に関するKPIを4つ以上定義する
- ビジネス影響に関するKPIを3つ以上定義する
- 各KPIの目標値と閾値(アラート基準)を設定する
- KPIのモニタリング頻度を決定する
解答例
不正検知KPIダッシュボード:
【検知性能KPI】
| KPI | 定義 | 目標値 | アラート閾値 | 頻度 |
|-------------------|---------------------------|---------|------------|----------|
| 検知率(Recall) | TP / (TP + FN) | ≥ 80% | < 70% | 日次 |
| 適合率(Precision) | TP / (TP + FP) | ≥ 10% | < 5% | 日次 |
| 偽陽性率(FPR) | FP / (FP + TN) | ≤ 0.5% | > 1.0% | 日次 |
| PR-AUC | PR曲線の下の面積 | ≥ 0.60 | < 0.45 | 週次 |
| 判定レイテンシ | モデル推論の応答時間 | P99≤200ms| P99>500ms | リアルタイム|
【ビジネスKPI】
| KPI | 定義 | 目標値 | アラート閾値 | 頻度 |
|--------------------|-----------------------------|-----------|-------------|--------|
| 月間不正被害額 | 見逃した不正の被害総額 | ≤ 1,000万円| > 2,000万円 | 月次 |
| 偽陽性コスト | 誤検知による対応コスト+機会損失 | ≤ 200万円 | > 500万円 | 月次 |
| 顧客影響率 | 偽陽性で影響を受けた顧客の割合 | ≤ 0.3% | > 0.7% | 週次 |
達成度チェック
- 現行システムと改善後の総コストを正しく計算できた
- 多層防御戦略を3フェーズで設計できた
- ルールベースとMLの使い分けを説明できた
- 検知性能KPIを4つ以上定義できた
- ビジネスKPIを3つ以上定義できた
- 目標値とアラート閾値を合理的に設定できた
推定所要時間: 30分