この記事は、Merpay Tech Openness Month 2020 の17日目の記事です。
こんにちは。matchanです。
今回は、機械学習チームの取り組みのひとつ、不正検知システムに機械学習を導入した話の紹介になります。(不正検知システムについてはこちらの記事もご覧ください。)
はじめに
これまでメルカリ・メルペイでは、サービスが拡大・成長していくに伴い取引数が増加してきました。一方で、不正検知数も増加していき、それに伴うオペレーション負荷も増加していくという状況が課題になっていました。サービスの拡大・成長は今後も続いていきます。限りあるリソースを考えれば、オペレーション負荷が単調に増加していくままではいけません。
単純に検知数を削減するという対策では、不正検知システムのクオリティの低下になります。そこで、検知数を削減しつつも疑わしい取引を検出でき、オペレーション負荷の低減と検知精度のトレードオフ解消を目指す対策が必要でした。
AlertFilteringという機械学習システムを導入
「AlertFiltering」という機械学習システムを開発・導入しました。(AlertFilteringは社内プロジェクトネームです)
不正検知数を削減させつつも、誤検知率(不正でないものを誤って不正と判定してしまう率)を低減させることにより、オペレーション負荷を低減しつつ不正検知システムのクオリティ向上を図るシステムです。
機械学習の導入で、不正検知数や誤検知率は状況に応じてコントロール可能となり、コストマネジメントが可能となりました。
メルペイ不正検知システムでは、疑わしい取引を「クロ」通常の取引を「シロ」とし、機械学習のラベル関係は、Positiveを「クロ」Negativeを「シロ」と定義しています。
そのため、判定結果の分類指標は以下のようになります。
- True Positive: クロと判定し、実際にクロであるもの
- False Positive: クロと判定したが、実際にはシロであるもの
- True Negative: シロと判定し、実際にシロであるもの
- False Negative: シロと判定したが、実際にはクロであるもの
以下で例を交えながら紹介していきます。
AlertFiltering導入前
図1はAlertFiltering導入前の不正検知システムのイメージになります。発生した取引一つ一つに対してルールエンジンで不正判定を行い、検知されたものが監視ツールにアラートされて、アラート一つ一つを人間が目視チェックするという構成になっています。
図1の例ではルールエンジンにより、ある期間で発生した取引・決済のうち5000件を仮に検知したとします。検知された5000件は監視ツールでチェックを行い、500件が実際にクロだった、という状況を表しています。(以下、表1参照)
すべて仮の数値 | ルールエンジンによる検知数 | 監視ツールでチェックする検知数 | クロ数 | 誤検知率 |
---|---|---|---|---|
導入前 | 5000 | 5000 | 500 | 0.90 (=4500/5000) |
AlertFiltering導入後
図2はAlertFiltering導入後の不正検知システムのイメージになります。導入前との変更点は、ルールエンジンで検知されたものをAlertFilteringへの入力とし、AlertFilteringによる不正判定で検知されたものだけを監視ツールでチェックしている点です。
図2の例では導入前と同様に、ルールエンジンで5000件を検知したとします。AlertFilteringはそれを入力として、2000件を検知したとします。検知された2000件は監視ツールでチェックを行い、500件が実際にクロだった、という状況を表しています。(以下、表2参照)
すべて仮の数値 | AlertFiltering通過後の 検知数 |
ルールエンジンによる検知数 | 監視ツールでチェックする検知数 | クロ数 | 誤検知率 |
---|---|---|---|---|---|
導入前 | 5000 | — | 5000 | 500 | 0.90 (=4500/5000) |
導入後 | 5000 | 2000 | 2000 | 500 | 0.75 (=1500/2000) |
結果として、監視ツールでチェックする検知数は大きく削減され、オペレーション負荷の低減に、誤検知率低減は不正検知システムのクオリティ向上にそれぞれ貢献しました。
監視ツールでチェックする検知数や、誤検知率はビジネスパラメータとして意思決定の際に使われ、状況に応じて柔軟にコントロール可能になっています。
AlertFiltering導入に向けた工夫
オペレーション負荷の低減と検知精度のトレードオフ解消
メルペイのような金融サービスを展開する上で、サービスを使ってくださるお客さまを守るため、精度の高い不正検知システムはなくてはならないものです。
一方で、機械学習も完璧な精度を出すことはできません。クロに対する誤検知率を低下させることに対して、カバレッジも低下していくというトレードオフが発生します。
金融サービスとしての不正検知システムであるため、誤検知率を低下させてもカバレッジは低下させない状態を目指す必要がありました。そのため、カバレッジの低下を抑えつつ誤検知率の低下を実現できるしきい値を選択しました。
AI Platformで機械学習ワークフローをなめらかに、スピーディに実現
サービスとして稼働していくには、機械学習モデルをサービングできる環境を用意する必要があります。機械学習エンジニアは日々新たに誕生する不正手口に対応する一方で、すでに稼働している機械学習モデルに対しても定期的にアップデートが必要です。そのため実験、モデルトレーニング、モデルバージョン管理、サービング環境の構築・運用などをスピーディに実現する必要があります。
そこで、Google Cloud Platformが提供してる機械学習サービスのひとつ、AI Platformを採用することにしました。AI Platformによる恩恵は大きく、運用やモデル管理などマネージドサービスによるメリットを享受しつつ、機械学習エンジニアは新しい不正手口の分析やモデル改善により多く時間を割くことができるようになりました。結果的に、実験からデプロイまでのライフサイクルをよりスピーディに進める事ができるようになりました!
おわりに
不正検知システムにAlertFilteringを導入して、不正検知数や誤検知率はコントロール可能となり、状況に応じたコストマネジメントが可能となりました。
導入に際して、機械学習の性質上クロに対する誤検知率とカバレッジのトレードオフを考える必要がありました。メルペイのような金融サービスを展開する上で、サービスを使ってくださるお客さまを守るため、精度の高い不正検知システムがなくてはなりません。そこで、カバレッジの低下を抑えつつ誤検知率の低下を実現できるしきい値を選択しました。このプロセスにより、お客さまへの影響がない状態で機械学習を導入できました。
また、すでに提供されている機械学習APIを使うことで、課題をすばやく解決するという目的に専念することできました。時代の進歩に波乗りしながら、ますます高度な課題解決が手軽にできるようになる未来が楽しみですね。
お読み頂きありがとうございました。
この記事を含めて3本連続で機械学習による不正検知シリーズが続きます!次はどんなテーマが紹介されるのでしょうか。お楽しみに!