となりナビ › 専門ナビ › 決済・不正検知

実務者・転職者向け決済・不正検知

不正検知モデルの評価はAUCで終わらせない:審査できる件数・遅れて届く正解・誤ブロックの費用で決める

不正検知のモデルは、精度99%でもほとんど役に立たないことがあります。不正は全体のごく一部で、正解は数日〜数か月遅れて届き、人が確認できる件数には上限があるからです。この記事は、決済の不正対策に関わりたいエンジニアが、業務で通用する評価を設計できるようになるための手順と演習をまとめます。

記事ID KF-002/更新日 2026年10月12日/数字は出典の時点のもの。【推定】【架空例】は本文で明記

この記事で身につくこと
  1. 「審査できる件数k」に合わせて、上位k件にどれだけ不正が含まれるか(上位k件の精度)で評価する。
  2. 正解ラベルが遅れて届くことを前提に、時系列で学習・検証を分ける。
  3. 閾値は、見逃し・誤ブロック・審査の費用を足した総損失が最小になる点を選び、選んだ理由を事業責任者に説明できる形で残す。

1. 業務のどこにモデルが入るか

決済の不正対策では、モデルの出力(リスクスコア)はそのまま「止める」に使われるとは限りません。多くの運用では、スコアが高い取引を止める、中間を人が審査する、低い取引を通すの3つに分けます。Stripeの資料も、ブロックのルールを作る前に審査(レビュー)で誤検知を確認することを勧めています。

エンジニアが作るのはスコアと、その評価の仕組みです。どこで止めるか(閾値)を最終的に決めるのは事業責任者で、審査で個別の取引を判定するのは不正対策アナリストです。この責任の分け方は、成果物の書き方にも影響します(6節)。

2. 評価を誤りやすい3つの理由

(1) 不正はごく一部しかない

日本クレジット協会が公表する不正利用発生率は2025年で0.038%です(定義は協会資料を参照)。このような不均衡なデータでは、全件を「正常」と答えるだけで正解率はほぼ100%になります。正解率(accuracy)は評価に使いません。

(2) 正解ラベルが遅れて届く

Dal Pozzoloらの論文(IEEE TNNLS掲載のプレプリント)は、実際の不正検知では、審査担当者がアラートを確認して得られる少数の正解(フィードバック)だけがほぼ即時に届き、その他の取引の正解は数日後に判明すると整理しています。日本でも、加盟店の発表資料ではチャージバックの通知が出そろうまで約180日かかると報告されています。直近のデータほど「まだ不正と判明していない不正」が混ざります。

(3) 人が確認できる件数に上限がある

同じ論文は、審査担当者が確認できるk件のアラートのうち、本当に不正だった割合(アラートの精度)で評価すべきだとし、AUCや混同行列にもとづく指標は、この目的には必ずしも意味を持たないと述べています。手口が時間とともに変わる(コンセプトドリフト)ことも前提です。

3. 使う指標

指標意味使う場面
上位k件の精度(precision@k)スコア上位k件のうち不正の割合審査チームが1日に確認できる件数がkのとき
上位k件の再現率(recall@k)全不正のうち上位k件で捕まえた割合見逃しの量を説明するとき
カード単位の精度同じカードの複数取引を1件として数える精度審査が取引ではなくカード(会員)単位で行われるとき
総損失(費用)見逃し+誤ブロック+審査費用の合計閾値と運用を選ぶとき(4節)
誤ブロック率止めた取引のうち正当だった割合顧客体験・CSへの影響を報告するとき

カード単位の精度は、ブリュッセル自由大学(ULB)の研究者らによる公開ハンドブック「Reproducible Machine Learning for Credit Card Fraud Detection」の指標の章で扱われています。定義は原文で確認してください。

4. 閾値を費用で選ぶ(計算例)

以下は説明用の架空の数字です【架空例】。月10万件、うち不正60件。見逃し1件の損失9,500円、誤ブロック1件の逸失粗利2,400円、審査1件300円。

運用k(止める/審査する件数)上位kの不正precision@krecall@k総損失
上位100件を停止1004040.0%66.7%334,000円
上位300件を停止3005016.7%83.3%695,000円
上位300件を審査(不正の90%を判定)3005016.7%83.3%232,500円
何もしない00—0%570,000円

計算:上位100件停止=見逃し20件×9,500円+誤ブロック60件×2,400円=334,000円。上位300件停止=10件×9,500円+250件×2,400円=695,000円。上位300件審査=見逃し15件×9,500円+審査300件×300円=232,500円(正当な注文は審査後に通すため誤ブロックの損失は0と置いた)。

再現率を上げるほど良いとは限らないことが分かります。エンジニアの報告は「AUCが上がった」ではなく、「審査件数300件の運用で、総損失がいくら変わるか」で書きます。

5. 合成データでの演習(実データを使わない)

練習に実在の決済データ・個人情報は使いません。ULBの研究者らのハンドブックは、条件を変えて合成の取引データを作れるシミュレーターを公開しています(GitHub: Fraud-Detection-Handbook)。これを使って次の順に進めます。

  1. データを作る:シミュレーターで数か月分の取引を生成し、不正の比率と手口(同じカードの連続利用など)を確認する。
  2. ルールの基準線を作る:「短時間に同じカードで高額が続く」などのルールを3本書き、precision@kを出す。モデルの前に、業務担当者が理解できる比較対象を置く
  3. 時系列で分ける:学習期間→正解が届くまでの待ち期間→検証期間の順に区切る。ランダム分割はしない。
  4. 特徴量を作る:カード・加盟店ごとの直近の件数や金額など、過去の情報だけで作る(未来の情報を混ぜない)。
  5. モデルを学習しprecision@kで比べる:kは「審査チームが1日に見られる件数」として自分で置き、理由を書く。
  6. 費用で閾値を選ぶ:4節の式で、停止・審査・通過の境目を選ぶ。費用の前提は表にして明記する。
  7. ドリフトを確かめる:検証期間を週ごとに分けて精度の推移を出し、再学習の頻度を提案する。
  8. 報告書を書く:A4で2枚。結論、運用案、前提、限界、次に確かめること。

6. 成果物の評価基準(採用・社内評価で使える形)

観点合格の目安よくある不合格
データの扱い合成データのみ。生成条件を再現できる出所不明の実データ、個人情報
分割時系列分割と正解の遅れを説明できるランダム分割で高い数値を報告
指標k件の根拠を書き、precision@kとrecall@kを報告accuracyやAUCだけ
費用費用の前提を表で示し、閾値の選び方を説明閾値0.5のまま
責任分界閾値の最終決定者と審査の判定者を書き分ける「モデルが不正を判定する」と書く
運用ドリフトの監視と再学習・戻し方の提案がある一度作って終わり

7. 学ぶ順番

  1. 決済の流れ(オーソリ、売上確定、チャージバック)と3Dセキュアの役割 → 企業向けの解説
  2. 不均衡データの評価(precision/recall、precision@k、費用を考慮した評価)
  3. 時系列の検証と、正解の遅れ・ドリフトの扱い(上記論文とハンドブック)
  4. ルールとモデルの組み合わせ、審査の業務フロー
  5. 本番運用:スコアの監視、変更の承認と記録、戻し方

求人の必須要件・年収は企業ごとに異なるため、この記事では断定しません。応募先の募集要項で確認してください。

8. 関連する記事

出典(2026年10月12日確認)

  1. A. Dal Pozzolo, G. Boracchi, O. Caelen, C. Alippi, G. Bontempi「Credit Card Fraud Detection: A Realistic Modeling and a Novel Learning Strategy」(IEEE TNNLS掲載論文のプレプリント)
  2. 同「Credit Card Fraud Detection and Concept-Drift Adaptation with Delayed Supervised Information」(IJCNN 2015)
  3. Fraud-Detection-Handbook「Reproducible Machine Learning for Credit Card Fraud Detection - Practical Handbook」(GitHub)
  4. 日本クレジット協会「クレジットカード不正利用被害の集計結果について」(2026年3月6日)
  5. 経済産業省 検討会資料「メルカリによるクレジットカードの不正決済対策」(2022年)
  6. Stripe Docs「Fraud prevention rules」/「Risk settings」