- 「審査できる件数k」に合わせて、上位k件にどれだけ不正が含まれるか(上位k件の精度)で評価する。
- 正解ラベルが遅れて届くことを前提に、時系列で学習・検証を分ける。
- 閾値は、見逃し・誤ブロック・審査の費用を足した総損失が最小になる点を選び、選んだ理由を事業責任者に説明できる形で残す。
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@k | recall@k | 総損失 |
|---|---|---|---|---|---|
| 上位100件を停止 | 100 | 40 | 40.0% | 66.7% | 334,000円 |
| 上位300件を停止 | 300 | 50 | 16.7% | 83.3% | 695,000円 |
| 上位300件を審査(不正の90%を判定) | 300 | 50 | 16.7% | 83.3% | 232,500円 |
| 何もしない | 0 | 0 | — | 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)。これを使って次の順に進めます。
- データを作る:シミュレーターで数か月分の取引を生成し、不正の比率と手口(同じカードの連続利用など)を確認する。
- ルールの基準線を作る:「短時間に同じカードで高額が続く」などのルールを3本書き、precision@kを出す。モデルの前に、業務担当者が理解できる比較対象を置く
- 時系列で分ける:学習期間→正解が届くまでの待ち期間→検証期間の順に区切る。ランダム分割はしない。
- 特徴量を作る:カード・加盟店ごとの直近の件数や金額など、過去の情報だけで作る(未来の情報を混ぜない)。
- モデルを学習しprecision@kで比べる:kは「審査チームが1日に見られる件数」として自分で置き、理由を書く。
- 費用で閾値を選ぶ:4節の式で、停止・審査・通過の境目を選ぶ。費用の前提は表にして明記する。
- ドリフトを確かめる:検証期間を週ごとに分けて精度の推移を出し、再学習の頻度を提案する。
- 報告書を書く:A4で2枚。結論、運用案、前提、限界、次に確かめること。
6. 成果物の評価基準(採用・社内評価で使える形)
| 観点 | 合格の目安 | よくある不合格 |
|---|---|---|
| データの扱い | 合成データのみ。生成条件を再現できる | 出所不明の実データ、個人情報 |
| 分割 | 時系列分割と正解の遅れを説明できる | ランダム分割で高い数値を報告 |
| 指標 | k件の根拠を書き、precision@kとrecall@kを報告 | accuracyやAUCだけ |
| 費用 | 費用の前提を表で示し、閾値の選び方を説明 | 閾値0.5のまま |
| 責任分界 | 閾値の最終決定者と審査の判定者を書き分ける | 「モデルが不正を判定する」と書く |
| 運用 | ドリフトの監視と再学習・戻し方の提案がある | 一度作って終わり |
7. 学ぶ順番
- 決済の流れ(オーソリ、売上確定、チャージバック)と3Dセキュアの役割 → 企業向けの解説
- 不均衡データの評価(precision/recall、precision@k、費用を考慮した評価)
- 時系列の検証と、正解の遅れ・ドリフトの扱い(上記論文とハンドブック)
- ルールとモデルの組み合わせ、審査の業務フロー
- 本番運用:スコアの監視、変更の承認と記録、戻し方
求人の必須要件・年収は企業ごとに異なるため、この記事では断定しません。応募先の募集要項で確認してください。
8. 関連する記事
出典(2026年10月12日確認)
- 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掲載論文のプレプリント)
- 同「Credit Card Fraud Detection and Concept-Drift Adaptation with Delayed Supervised Information」(IJCNN 2015)
- Fraud-Detection-Handbook「Reproducible Machine Learning for Credit Card Fraud Detection - Practical Handbook」(GitHub)
- 日本クレジット協会「クレジットカード不正利用被害の集計結果について」(2026年3月6日)
- 経済産業省 検討会資料「メルカリによるクレジットカードの不正決済対策」(2022年)
- Stripe Docs「Fraud prevention rules」/「Risk settings」