機械学習を用いた不正行為検出の基礎

Introduction

Stripe の製品は何十万もの eコマース企業、SaaS 事業、オンデマンドマーケットプレイス、非営利団体および各種プラットフォームのオンライン事業において使われています。オンライン決済における大きな問題の一つに不正使用があります(残念ながら頻繁に発生しています)。対面で決済を行うビジネスと比べ、インターネット上の決済は不正な購入に対し脆弱になりがちです。とは言え、オンラインでの購入者が不正使用に長けている訳ではありません。その結果として多くの企業が不正使用を分析する専用のチームを構え、システム開発を余儀なくされています。Stripe では皆さんが不正使用対策ではなく、サービス開発と顧客満足度向上に注力していただきたいと考えています。そこで今回 Stripe Radar という、不正使用の検出および防止に向けた一連のツール群を開発しました。

本ガイドでは Radar の原動力である機械学習について詳細を説明し、不正使用を検出するシステムの効率性やパフォーマンスに関して Stripe の考え方を紹介します。Radar と周辺ツールが皆さんのビジネスの収益をいかに最適化できるのかについても説明します。では、まずはオンラインにおける不正使用の性質とその被害について触れておきたいと思います。

クレジット決済と不正使用

初歩的なオンラインの不正決済は他人のクレジットカード番号を盗んだ上で利用するというものです。この不正使用を行う人は高価な商品(時計など)を10万円で購入し、オークションサイトなどで2万円程度で転売しているかもしれません。本当のカード保有者は後になって不正な決済を発見し、銀行に対してクレームや訴訟を起こすでしょう。これをチャージバックと言います。なお、クレームは様々ありますが本ガイドでは不正使用を事由として争われる決済を取り上げます。

取引が不正であったと認定された場合、カード保有者は保護されますが、事業者は不正使用によって発生した費用に対して責任を負います。この費用は販売された商品代金のみならず(事業者が時計を仕入れるのにいくらかかったかにも関わりなく)、クレームに費やされた追加手数料なども含まれます。不正使用を行う人たちの標的にされた事業は、当然財政にも大きな影響が出てきます。不正使用が事業に与える影響としては偽陰性(訴訟発生以前に防げなかった、特定できなかった不正使用)のみに限りません。

偽陽性(正当ながら不正使用検出システムがブロックしてしまった取引)の費用も高いのです。買い物しようとした際にブロックされてしまったとしたら、事業は利益面および評判の面でも悪影響を受けます。

後ほど詳しく説明しますが、偽陰性と偽陽性はトレードオフの関係にあります。前者を減らすためには後者の増加を受け入れる必要があります(逆もそうです)。偽陰性は一定の費用を発生させますが(販売された商品の費用やクレーム対応費用など)、偽陽性も同じです(販売された商品に係るマージン)。マージンが小さい事業では偽陰性は高く付きますが、偽陽性はそれほどでもありません。そのため潜在的な不正使用の防止を目指す場合は、偽陽性の増加に繋がったとしても網を大きく張ろうとします。マージンが大きい事業ではその逆です。

なお、このトレードオフは事業側で自由に設定できるものではないことを押さえておく必要があります。不正使用率が 1% を超えると、Visa や Mastercard と言ったカードネットワークはカード決済自体できなくするかもしれません。この不正使用率の厳密な定義や、深刻な措置がとられるかどうかはカード会社によって異なります。大事なのは不正使用率が 1% に満たない時点では、事業側で自らのバランス感覚で不正使用とのトレードオフを行うしかありません。もしひとたび 1% を超えてしまうようなことがあれば、あらゆる手立てで不正使用率を下げるほかなくなります。たとえそれが経済合理性のない偽陽性率になったとしてもです。そうしなければ企業は決済手段の喪失という事業存続に関わるリスクを負うことになります。

Stripe Radar と Stripe ネットワーク

Radar は決済における不正使用の検出と予防に関する Stripe 製品の一つです。Radar の根幹にあるのは適応型機械学習で、これは Stripe の機械学習チームにおける長年のデータサイエンスやインフラ研究の成果です。Radar のアルゴリズムはすべての取引に対して不正使用リスクを評価し、適切な措置を取るところにあります。デフォルトでは高リスクの決済がブロックされるようになっていますが、ユーザが具体的に設定できるようになっています。

Radar は Stripe に組み込まれており、すぐに利用できます。一般的にこの手の不正使用を防止するサービスは事前または継続的に費用が発生するものです。まず利用者側において、決済データなどを送信し、査定情報を処理するための開発が発生します。さらに機械学習によって不正使用かもしれないと判断された取引については数週間かけて決済が本当に不正であるかどうかの判断(ラベリング)をしなければなりません。そうしてようやく不正使用検出システムが効果を発揮できるようになるのです。しかし不正使用のパターンは常に変化しますので、継続的にラベリングしていかなければなりません。Radar は Stripe の決済フローから直接に情報を受け取りながらカードネットワークおよびカード発行会社から取得したデータを活用していきます。

Radar の利点を二つ挙げます。一つは Radar は Stripe に統合されますので、Stripe の10万を超える事業すべてから得た不正使用関連データを用いてシステムの改善が行われます(データの収集は自動的に行われます)。一つのカード決済から読み取れるデータとしてはカード発行国、決済を行ったIPアドレス、メールアドレスのドメインなどがあります。これらは決済が不正かどうか予測する上で重要なデータですが、最も予測に関連するのは膨大なデータから得られる行動データになります。例えば一枚のカードがここ最近どれだけ多くの国で利用されたかは不正使用を突き止める上で重要な指標になります。

Radar は数十万の Stripe ユーザ全体におけるクレジットカード決済を分析し、行動データベースを構築します。Stripe を利用している一つの事業者にとっては初めてのカードであっても、Stripe ネットワーク上ですでに使われている確率は 80% にもなります。過去にカードが使われていることにより、リスク査定として十分なデータが確保できます。

Radar がクレームや訴訟などに関する情報を銀行やカード会社などの金融パートナーから受け取っていることで、利用者側では継続的なラベリングが不要となっています。ラベリングは人海戦術で行われますが、その過程でラベリングを行う人のバイアスも入ってしまいます。分析者が甘かったり、逆に厳しかったりすると、不正使用検出システムのパフォーマンスに影響を及ぼす可能性があります。Radar はカード発行会社から取得した、網羅的かつ正式なクレームおよび訴訟情報に基づいて正確な不正使用情報を学習し、導入初日から機械学習による不正防止機能が使えるようになります。

機械学習、そして Stripe における活用形態をさらに詳しく紹介します。

機械学習の基礎

機械学習とは、大量のデータを用いてあるデータの中にある様々な関係の符号化を行うモデルを作成する一連の技術を言います。

機械学習の応用の一つに予測があります。Stripe について言えば、一定の入力値(例えばカード発行国、過去に Stripe ネットワーク上でそのカードを使った国の数)が与えられた時、ある決済が不正(True)であるか正当(False)なのかという真偽値で予測したいわけです。これから入力および出力に基づく予測をどのように行うのか紹介します。なお、この予測問題は二種類のタスクに分割できます。

  • クラス分類タスクでは、サンプルがあるクラスに属するのか、別なクラスに属するのか予測します(例えばある取引が不正な決済クラスなのか、正当な決済クラスに属するのか予測したい場合)。
  • 回帰タスクでは、入力と関連した数値的な出力を予測します(例えばドルを使っている新規顧客の生涯価値を予測したい場合)。

クラス分類と回帰は異なる技術に見えますが、基礎的な部分で関連しています。クラス分類はあるサンプルがあるクラスに含まれる確率を予測するという回帰タスクと見なせます。

モデルを訓練(または生成)するのに用いられるデータは、次の例で示されるような取引記録、出力値および入力値からなりたっています。

日本円決済額 カード発行国 カード利用があった国
(24時間以内)
不正
行為
¥1000 1 いいえ
¥1000 アメリカ 2 いいえ
¥1000 アメリカ 1 いいえ
¥1000 1 はい
¥3000 1 はい
¥9800 アメリカ 1 はい
¥1500 アメリカ 3 はい
¥7000 1 いいえ

この例では入力値は三つしかありませんが、実際には機械学習モデルが数百から数千の入力値を持つこともよくあります。この機械学習アルゴリズムによる出力では、次のような決定木のモデルになるかもしれません。

日本円決済額 > 2000円
はい
いいえ
カード発行国 = アメリカ
はい 100%
いいえ 50%
カード利用があった国 > 2
はい 100%
いいえ 25%
不正使用の確率

新しい取引が行われる度にカードの発行された国や、過去にそのカードが利用された国の数、そして日本円の決済額に着目しつつ二十の質問型決定木を用いて、葉の一つに到着するまで辿るという方法があります。それぞれの葉は、決定木を下まで辿る際に通った質問と回答のペアを満たすデータセット(上記表参照)中のすべてのサンプルから成り立ちます。取引が不正である確率は、その葉の中のサンプルに含まれる不正取引をサンプル総数で割った数となります。別の言い方をすると、決定木は「この取引と類似した属性を持つデータセットに含まれる取引の内、実際に不正であった割合はどれくらいか」という質問に答えてくれるのです。機械学習の部分は決定木の構築と関連しています。どんな質問をどんな順番で行えば、これら二つのクラスを見分ける確率を最大化できるでしょうか。決定木は視覚化や推論が容易に行えますが、学習アルゴリズムは他にも数多く存在し、それぞれの方法でデータの関係性を表現しています。

現在、機械学習モデルは社会に広く浸透しており、先ほどの簡単なモデルと比べて遙かに洗練されています。

  • Google / Apple / Amazon / Microsoft ではインテリジェンスアシスタントに機械学習を活用しています(それぞれ Google アシスタント/ Siri / Alexa / Cortana と呼ばれています)。機械学習の活用には様々な形があり、音声の断片からテキストを予測するのをはじめ、質問の意味や意図を抽出するのに用いられています。これらは文字や音声の膨大な数のサンプルからモデルを生成しています。
  • Amazon ではレコメンデーションシステムに機械学習を活用しています。特定の商品を買った人たちがその後何を購入しているかに基づいて、商品をいくつか推薦することで追加購入の確率を高めています。
  • Google や Facebook では検索やニュースフィードにおいて、どのような広告を表示するかを機械学習で行っています。入力情報は広告の内容やその他の文脈情報(検索文字列や隣接するニュースフィードの内容など)が含まれ、モデルの出力として広告のクリック確率が得られます。Google、Facebook ともにこのクリック確率を最大化したいと考えています。

そして Stripe Radar のベースであり、どの決済が不正なのか予測を試みるのも機械学習になります。

機械学習はどういう仕組みで動いているのか?

大学の機械学習コースではモデリングプロセスに焦点が置かれます。つまりデータ(例えば上記の表)をモデル(例えば決定木)に変換する方法のことです。このモデルは入力値(カード発行国、カード使用国など)を出力値(この取引が不正であるか否か)に展開するものです。上記表の入力データを使いつつ、ベストな決定木を作るプロセスが機械学習手法の一例になります。モデリングには多くのステップが含まれるので、あまり詳細には立ち入りませんが、大まかな概要を紹介します。

まず最初にトレーニングデータを取得する必要があります。自動的に不正使用を検出する前に、不正使用の事例データを多数学習しておくためです。各事例から今後出力値に関する予測をする際必要になるであろう入力属性を多岐に渡り記録します。これらの入力属性は特徴、さらにサンプルとそれに関する入力値をまとめた集合データを特徴ベクトルと呼びます。前述の例では特徴ベクトルは三つの要素を持っていました(カード発行国、カードを過去に利用した国の数、日本円の決済額)。しかし数百ないし数千の要素を持つ特徴ベクトルも珍しくありません。実際、Radar も数百の特徴ベクトルを活用しており、その殆どは Stripe ネットワーク全体を通して算出した「行動的統計値」になります。出力値(実装例としては取引が不正であるかに関する真偽値)はターゲットやラベルと呼ばれることもあります。このようにトレーニングデータは大量の特徴ベクトルとそれに対応する出力値から成り立っています。優れた特徴を考えるのはデータサイエンスやエンジニアリング上の大きな問題で、後ほど詳しく取り上げます。

続いてモデルのトレーニングが必要になります。トレーニングデータが与えられたので、次に予測モデルを作る方法が求められます。先に述べたように機械学習の予測タスクには回帰クラス分類という二つの類型があります。回帰タスクは数の出力(例:不正使用損失額)の予測を目指します。クラス分類では対象となるサンプルが属するクラスの予測を目指します(例:対象の決済が不正決済のクラスに属しているかどうか)。機械学習における分類器(クラス分類問題向けのモデル)は単にクラスのラベルを出力するだけではありません。通常、対象のサンプルが想定されるそれぞれのクラスに属する確率の割り当ても行います。例えば分類器の出力が、対象決済が不正である確率65%、正当である確率35%といった判定になることもあるでしょう。

これら二つのタイプのタスクについて数多くの機械学習的技術が存在します。回帰に関しては線形回帰回帰木といった従来型モデルも活用できます。クラス分類に関しても多数ありますが、ロジスティック回帰、決定木、ランダムフォレストなどが活用できます。

脳の神経細胞構造からアイディアを得たニューラルネットワークとディープラーニングも両タスクへ応用可能です。(アルファ碁が李世乭棋士を下すといった同分野における近年の驚くべき進展もよく知られているでしょう。)しかし機械学習の産業的な応用のほとんどは従来型モデルでも十分対応できます。Stripe ではモデリングプロセスの実験や再実装を繰り返し行っていますが、ランダムフォレスト(前述の決定木を汎用化したものです)も私たちの機械学習に関する問題に対して十分機能することが確認できています。

特徴エンジニアリング

機械学習コース(または Kaggle のようなサイト)によって、データから機械学習モデルを作成すれば、それで大変な作業は終わったと思ってしまうかもしれません。しかし、そうしたサービスではどこからデータを入手するか、事業に対してモデルを運用するには何が必要かと言った内容は教えてくれません。モデルトレーニングの作業に入る前に、自分たちの事業のあちこちからデータを入手し、それをモデルのトレーニングに使える形で連携するデータインフラを構築しなければなりません。さらにモデルを作成した後にもハードルが待ち受けています。新しいモデルを事業の業務フローに統合するのです。

産業用機械学習において最も錯綜した領域の一つが特徴エンジニアリングです。特徴エンジニアリングは二つの要素から成り立ちます。一つは予測値を決めるための特徴の定式化で、もう一つは特徴値をモデルトレーニングおよびモデル評価に利用可能にするための開発です。特徴の定式化には問題領域における広範な知識が必要です。

例えば、問題があるカード決済について過去 Stripe において頻繁に利用されている二つの IP アドレスの内、どちらから来たものかを判定できる値が有用な特徴になるのではないかと考えたとしましょう(二つというのは通常、カードの利用は自宅と仕事場の二通りが考えられるからです)。この例ではアイディアは直感的なものですが、こうした思いつきは何千件もの不正使用の実例を精査してはじめて得られる場合が多いのです。

特徴に使えそうなアイディアが得られたら、その特徴を組み入れた新しいモデルをトレーニングできるように、過去の値を算出しなければなりません。これはモデルを作成するために用いる「表」に新しい列を追加するということです。そのためには Stripe の中にある過去のあらゆる決済において、そのカードで最も頻繁に利用されている二つの IP アドレスを算出する必要があります。これは Hadoop を使って分散して行うこともできますが、それでもジョブがあまりに多くの時間とメモリを要すると判明する場合もあります。そこで小さな確率的データ構造を用いて算出の最適化を試みることもあります。シンプルな特徴に見えても、モデルトレーニングのためのデータを作成するには相当な労力が必要になるかもしれないのです。

新しい特徴を取り込んだモデルが作れたら(新しいモデルがどれくらい効果的か判断する仕組みについては後述します)、今度はそのモデルを本番環境に適用しなければなりません。前述したような作業を通して過去の決済に関するすべての特徴値が作れましたが、Stripe へ決済を行う API が呼ばれる度、リアルタイムにあらゆる新規決済の特徴値が算出できなければなりません。新しいモデルが適用された分類器が不正使用の可能性が高いと考える取引をすべてブロックできなければならないのです。この計算処理はトレーニングデータを作成したものとは全く別なものです。Stripe で確認されるすべてのカードに対して利用頻度の高い二つの IP アドレスを常に最新の状態に保つ必要があります。こうした処理も API フローの一環なので、件数の取得やデータ更新も迅速に行われなければなりません。

最後に注意です。もしすべてのアイディアに関して前述のプロセスを適用しようとしたら、目も当てられないほど非効率的な状況になるでしょう。宣言的に特徴を特定する方法があれば理想的です。また、サポートするインフラについてもレイテンシを十分に低く抑えた状態で、過去の値を訓練用に、現在の特徴値は本番環境において自動で利用可能になっていることが望ましくあります。これは Stripe の機械学習チームのエンジニアが取り組んでいるインフラ問題の一つでもあります。

Stripe における機械学習プロダクトとその取り組みに興味をお持ちでしたら、ぜひご連絡を

機械学習モデルの評価

数百の特徴を活用し、決済が不正かどうかを確率(またはスコア)で出力できる不正使用分類器ができあがったら、そのモデルがどれくらい効果的であるかを判断しなければなりません。

重要語句

機械学習システムの評価手法をより理解するにあたって、いくつかの重要語句を定義しておきます。

偽陰性
真陰性
真陽性
偽陽性
不正な請求 ブロックされた請求 正当な請求

さて、機械学習モデルが各取引に対し、不正使用の確率 0.7 超(これを P(不正使用)>0.7 と書きます)と判断した際にこの決済をブロックするという方針を立てたとしましょう。ここでこのモデルと方針のパフォーマンスを推論するのに役立ついくつかの数値を挙げておきます。

  • 適合率: 方針の適合率というのは、ブロックした取引のうち実際に不正使用であったものの割合を指します。適合率が高いほど偽陽性が少なくなります。例えば10件の取引中6件が P(不正使用)>0.7 となり、そしてその6件のうち実際に不正な取引が4件だったとします。その場合、適合率は 4/6=0.66 となります。
  • 再現率: 感度または真陽性率としても知られますが、再現率とは方針によって把捉されたすべての不正使用の割合(すなわち P(不正使用)>0.7と判定された不正使用の割合)を指します。再現率が高いほど偽陰性は少なくなります。仮に10件の取引中、5件が実際に不正使用だったとしましょう。モデルがその内4件に P(不正使用)>0.7 を割り当てた場合、再現率は 4/5 =0.8 となります。
  • 偽陽性率: 偽陽性率とは方針によって誤ってブロックされてしまったすべての正当な決済の割合です。仮に10件の取引中、5件が正当なものだとしましょう。我々のモデルがこれら取引の内2件に P(不正使用)>0.7 を割り当てた場合、偽陽性率は 2/5=0.4 になります。

分類器の評価に用いられる数値は他にもありますが、ここでは以上のものに集中することとします。

適合率-再現率曲線および ROC 曲線

次の疑問は適合率や再現率、偽陽性率に関してどのような数値が望ましいのかになります。理論上、適合率は 1.0(不正使用のクラスに分類された取引のすべてが実際に不正使用である)、偽陽性率は 0(誤って不正使用クラスに分類した正当な取引は一つもない)、さらに再現率も 1.0(すべての不正使用が不正使用であると特定されている)となります。

しかし実際には、適合率と再現率には常にトレードオフが存在します。ブロックに関する確率閾値を引き上げれば、適合率が上昇し (ブロックの基準がより厳格になったため)、再現率は減少します(高い確率基準に合致する取引が少なくなるため)。確率閾値を引き下げれば、基本的に逆のこと(適合率が減少し、再現率は上昇します)が起きます。モデルにおいて閾値を変化させたときの適合率と再現率のトレードオフは、適合率-再現率曲線により表されます。

適合率-再現率曲線

モデルは不正使用の優れた特徴を追加したり、他のモデルパラメータを調整したり、さらに Stripe ネットワーク全体から得られるデータをトレーニングデータとすることで、より優れたものになっていきます。それに伴い、適合率-再現率曲線もまた、上記サンプルに示したように変化していきます。モデルは Stripe 上の多数の事業に対するトレードオフを統制するものであり、データサイエンティストと機械学習エンジニアでモデルを修正する際には適合率-再現率曲線への影響を詳細にモニタリングします。

適合率-再現率曲線グラフを参照する際には二つのパフォーマンス概念を理解しなければなりません。一般的にグラフの右上(適合率と再現率ともに1.0になるところ)の近くにあるほどモデルは優れていると言えます。しかし、モデルを運用化する際には適合率-再現率曲線上のどこかに操業点を置く必要が出てきます(Stripe のケースでは取引ブロックに関わる方針閾値になります)。こうした選択を通じてモデルの活用が事業に及ぼす影響を制御するのです。

単純にいうと問題は二つあります。正しい特徴を追加し、優れた機械学習モデルを作成するというデータサイエンス問題と、機械学習モデルの出力を実行する方針選択というビジネス問題です。データサイエンスは適合率-再現率曲線の形状を制御し、ビジネス問題は曲線状のどこで事業を操業するかを制御します。

機械学習モデルを評価する際に検討する別な曲線として ROC 曲線があります。ROC というのは Receiver Operating Characteristic (受信者動作特性)の略で、同曲線がもともと信号処理において用いられていたことから来ています。ROC 曲線は偽陽性率(X軸)と真陽性率(Y軸。これは再現率と同じです)を様々な方針の閾値に対しプロットしたものです。

ROC 曲線の例

理想的な ROC 曲線はグラフの左上(再現率が 1.0、偽陽性率が 0.0)の近辺にあり、モデルが改善されるにつれて、さらに左上に近づいていきます。モデル全体の品質を測る方法としては ROC 曲線下面積(または AUC)を算出します。理想的なケースでは AUC は1.0になります。モデルを開発する際には適合率-再現率曲線や ROC 曲線、AUC がどのように変化するかを注視します。

スコア分布

今、取引に対して不正使用確率を0.01.0の値をランダムに割り当てるモデルがあるとします。これでは正当な取引と不正な取引とを区別できないので意味がありません。こうしたランダム性はモデルのスコア分布、つまり可能性のあるスコアを獲得する割合によって示されます。完全にランダムな場合、スコア分布はほぼ一様になるでしょう。

0.0 スコア分布 - P(不正使用) 1.0

モデルが不正使用に関する予測能力をまったく持たない場合、スコア分布は上記のように一様なものになるでしょう。特徴を追加し、トレーニングデータを用いることで、不正または正当な取引を判別する能力は向上し、スコア分布も双峰性が高まります。つまり 0.01.0 の周辺にピークが表れてくるでしょう。

0.0 スコア分布- P(不正使用) 1.0

双峰性自体はモデルの優劣の直接関係ありません。例えばランダムに 0.01.0 の確率を割り当てるようなモデルであっても同じようなスコア分布になります。しかし、低スコアな取引は正当、高スコアな取引は不正であるとする実証データが存在するならば、双峰性の高い分布はモデル効率改善の兆候になります。

適合率と再現率の算出

適合率と再現率は異なる場面で算出されます。モデルのトレーニング中にモデル開発に利用している履歴値を活用する場合と、モデルの開発後に本番環境のデータ(実際にモデルを使って不正使用をブロックしている際に得られるデータ)を活用する場合です。

前者の場合、データサイエンティストはトレーニングデータを一部をトレーニングセットに、それ以外を検証セットに割り当てるといったことが良く行われています。例えば最初の80%をトレーニングセットに、残りの20%を検証セットにすると言った具合です。

トレーニングセットとはモデルを作成するために機械学習機能に適用するデータです。モデルが準備できたら、検証セットの中にあるサンプルデータに対してスコアを割り当てられるようになります。検証セットのスコアはその出力値と合わせてROC曲線や適合率-再現率曲線、スコア分布などを算出するのにも活用されます。データはトレーニングセットと検証セットに分割するのですが、これは作成したモデルの予測力を正確に計測するためです。トレーニングセットはモデルのトレーニングにすでに使ってしまっているため、新規データに対するパフォーマンスよりも優れています。そこで検証セットでテストすることで、モデルの検証がより正確なものになるのです。

検証セットでテストした結果、モデルが効率的であると判断されると本番環境への導入になります。モデルを本番環境に投入すると、次はモデルと方針のパフォーマンスをどう継続的にモニタリングするかという問題が出てきます。ブロックされなかった不正な決済についてはカード保有者からの訴えなどによって反応を測定できます。しかしブロックした決済については、万一ブロックしなかった場合にどんな問題が発生していたかをうかがい知ることができません。本番環境における適合率-再現率曲線ないし ROC 曲線を完璧に算出するには、こうした反実仮想分析が関わってくるので検証曲線の算出よりも複雑になります。ブロックされた決済に関して、万一ブロックされなかった場合にどうなっていたかを統計的な推定値を定める必要があります。Stripe ではそのための方法を開発していますが、そちらはこちらのセッションを参考にしてください。

さて、ここまでデータサイエンティストが機械学習モデルの開発時においてチェックするいくつかの測定値を説明してきました。次は不正使用予防について、事業側としてどのような考え方をすべきかを説明します。これまで検討してきた多くの内容(例えば適合率と再現率の相反関係など)は不正使用が皆さんの事業に対してどのような影響を及ぼすのか把握するのに役立つはずです。

不正使用防止システムパフォーマンスの推論

時に不正使用予防プラットフォームの効率は一つの数字でしか表されないことがあります。しかし一つの数字に固執するのは事業にとって最適とは言えない結論に至る可能性があります。不正使用担当チームが持つ数字は不正使用関連のものばかりなためです。不正使用担当チームには収益損失の責任はありませんし、収益損失は不正使用損失よりも特定が難しいでしょう。

以下に偽陽性-偽陰性 (ないし適合率-再現率) トレードオフの現実世界における影響をいくつか示します。

  • もし訴訟やクレームといった紛争を起こさないことだけを考えるならば、すべての決済をブロックしてしまえばゼロまで引き下げられるでしょう。もちろんこれでは事業が成り立ちません。あり得ませんが、このようなモデルを使ったらすべての不正使用を差し止められますが、正当な取引もすべてブロックするために目も当てられない偽陽性率になってしまうことでしょう。
  • 他の要素を考えず、低い偽陽性率だけに固執するのも危険です。どんな不正使用をもブロックしなければ偽陽性率は確実にゼロになります。しかしいくら偽陽性率が低くとも紛争率が1%に近くなったら何も意味がありません(これはほとんどのカードネットワーク全体で設定されています)。そうなると多くの偽陽性に繋がるとしても不正使用を大幅に削減しなければなりません。

上記の例は机上の空論に思えるかもしれませんが、事業は時に偽陰性を過剰評価し、偽陽性を過小評価することが分かっています(見逃した不正使用に対して敏感になります)。この結果、例えば国際的なカードや特定領域のIPアドレス、あるタイプのカードをすべてブロックすると言った強引な対応を行うことがあります。機械学習システムはこのような処理に対して免疫があります。人が手動で行うラベリングに頼っているシステムでは、このような処理を再現する学習をしてしまいます。Stripe ではすべての訴訟やクレーム情報をカードネットワークとカード発行会社から直接収集していますので、Radar にとって問題になりません。

システムの効率性と関係がある例をもう一つ挙げます。皆さんの不正使用防止システムは、本当に収益につながっているでしょうか。多数の不正使用を見つけているとしても、そのシステムのせいで正しい取引も多数ブロックされているとしたら、機会損失になっているかもしれません。

単純な例で計算してみます。生産に400円かかる製品を1000円で販売しているとします。正当な販売では利潤は600円です。一方、不正な取引は400円(生産費)に加えてチャージバック手数料で1500円になり、計1900円の損失になります。

これらの数字を鑑みると、不正な取引を1件回避できるならば 1900円/600円=3.17件の正当な取引を諦めることもあり得ます。別な見方をすれば、ブロックする3.17件の取引について、1件が確実に不正使用である限り、不正使用検出システムによって利潤が上昇します。この単純な例では、1/(1+3.17)=0.24 を損益分岐適合率と言います。このシステムの適合率が 0.24 未満ならば、同システムの利用は収益を減らしているのです(チャージバック率が低減されているとしてもです)。

損益分岐適合率への近似モデル

事業の平均売上高 でマージンが % だとすると、利潤は 円 × % になります。

平均すれば、製品を生産するのに 円 – かかります。 不正使用一件に対する総損失はチャージバック手数料の を徴収されるので、 円 + となります。

したがって一件の不正な販売により、 円 / 件の正当な売上に相当する利潤が犠牲になります。結果、損益分岐適合率は 1 / ( 1 + ) % となります。

チャージバック率の上限である1%に近づいている際は損益分岐値を下回る適合率を容認しなければならない時もあるかもしれません。しかし本当に考えるべきは、多数のパフォーマンス測定値について、それらがどういった関係にあるのかと、特定の状況を実現するために正しいトレードオフがどこにあるのかの二点になります。

さまざまなルールと手動のレビューでパフォーマンスを改善

Stripe Radar では自動的な機械学習アルゴリズムに加えて、個々の事業者が個別にカスタマイズしたルール(IP アドレスの国とカード発行国が異なる場合、10万円を超える取引はすべてブロックなど)を設計し、フラグが付いた決済をダッシュボードの中でレビューできます。

こうしたルールはシンプルなモデルと見なすことができます。適合率と再現率のトレードオフを十分に考慮しつつ、モデルと同じ方法で評価の対象とすべきです。Radar を活用してルールを設計した場合、クレームや訴訟、払い戻しになった場合に統計履歴を提示し、必要な情報を提供します。

同じく重要な点ですが、ルール(事業特有のロジック)や手動レビューは利用者側で適合率-再現率曲線の形状を理想的な形に変化させられるようになります。

機械学習アルゴリズムが事業に特集の不正使用を見逃している場合、それらを自動的にブロックするルールを設計することもできます。そうした具体的な介入は適合率への負担はほとんどないまま再現率を上昇させ、好ましい適合率-再現率曲線上にて操業点を動かせるようになります。

取引中の一部のクラスについて全面的にブロックする代わりに手動レビューに回すことで、再現率への影響なしに適合率が向上できます。同様に一部取引を全面的に許容する代わりに手動レビューへ回すことで適合率への影響なく再現率が向上できます。

もちろんこうしたメリットはマンパワーの追加が必要になります。しかし手動レビューやルールの追加を備えておくことで、不正使用の除外をさらに最適化できるようになります。

次のステップ

本ガイドが Stripe における不正使用予防に対する機械学習の応用や、皆さんの事業における不正使用検出システムの効率的な測定方法の理解に役立てば幸いです。Radar についてもっと知りたいという場合はドキュメントを参照してください。

本ガイドや Stripe Radar に関して、何か質問やコメントがある方、さらに Radar の取り組みに興味を持たれた方はぜひご連絡下さい

Radar に戻る