giftee Tech Blog

ギフティの開発を支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信しています。

AWS Fraud Detectorを用いてCtoCサービスで発生する不正を検出してみた話

はじめに

こんにちは、ギフティでデータサイエンティストをしている田村です。社内では、データが鍵になる新規ビジネスに携わったり、色々な事業部に転がっているデータ分析周りの課題解決に携わっています。

今回の記事では、先日大規模リニューアルが行われたギフティのCtoCサービスにおける機械学習を用いた不正検出の取り組みについて紹介したいと思います。

ギフティでは、盗難クレジットカードの利用等による不正決済の発生を防ぐため、日々システムと人による監視を行っております。ただし、現在の監視体制では、機械学習ベースでの不正検出は行っておらず、フルスクラッチでの機械学習モデル構築の大変さを鑑みて、なかなか手を出しづらいと判断して採用を見送っていました。ですが、7月末にAWS Fraud Detectorという手のかからなそうな機械学習ベースの不正検出サービスがローンチされたのをきっかけに技術検証を行うことにしました。

AWS Fraud detectorとは

AWS Fraud Detectorとは、Amazonで蓄積された不正検出の専門知識が事前学習されたフルマネージドの機械学習サービスです。 簡単に特徴をまとめると以下のような感じです。 - ログイン時の不正判定、購入時の不正判定どちらも充分なデータさえあれば可能 - 不正度合いを1から1000のスコアで出力 - デプロイされるとAPIが生える

詳細はこちらを参照ください。

機械学習的にありがたいなと思う部分として、データの不均衡性とか欠損値処理をモデル側がよしなに対処してくれます。 実際に学習を行うためのプロセスも難しいところはなく、以下の流れで行うことができました。 - 特徴量設計 - 学習データをcsv形式でS3に入れる - Fraud detectorの設定をする - entitiesとかeventとかを設定する - modelを設定して、学習させる - 学習結果を見つつ、スコアがいくつ以上だと不正とみなすかの判定のルールを設計する - detectorを設定して、deployをするとAPIが生える - 学習に使用していないテストデータでも精度を見てみる

ただし、通常の機械学習とは異なり唯一クセのある部分として、各特徴量に対して変数タイプを設定することができます。恐らくここを上手く設定できると精度が向上しそうな気配がします。 例えばメールアドレスの特徴には、変数タイプとしてEMAIL_ADDRESSを割り当てます。今回はあまり時間をかけず、雰囲気で変数タイプを設定して、学習させてみています。

実際にやってみた

AWS Fraud Detectorでは、学習に入れ込んだデータのうち、15%を残しておいて、精度検証をしてくれます。 実際にギフティに蓄積されていた約二年分のデータで学習して、精度検証してみたところ以下のような結果が出ました。

結果として、例えば不正判定の閾値が920の時は - 不正のうち、91.4%を不正と判断 - 正常のうち、1.6%を不正と判断

という結果でした。

念のため、学習に投入していない直近一ヶ月のデータで学習済みモデルのテストをしてみたところ、学習の時と同じような精度になりました。

今回は、一旦トライアルということで工数をかけず学習データを作って、モデル構築をしているので、まだまだ精度改善の余地があると感じています。

価格感の話

肝心の費用感は一ヶ月利用想定で以下のような感じでした。 - 学習:2時間×39円/時=78円 - ホスティング:30日×24時間×6円/時=4300円 - MLによる不正予測料金:50000件(一月の不正予測数)×3円/件=150000円

MLによる不正予測料金が一番大きいコストになるため、ルールベースとの併用がオススメです。何かの特徴が明らかに異常値の場合は機械学習モデルに入れ込まず、ルールベースで不正と判定というようなモデルの作り方ができて、この時は料金が1/6になります。

良かったこと

  • AWS Fraud Detectorは、総じて機械学習があんまり分からなくても、使えるツールだと思いました
    • ただし、データの整形みたいなところはやらないといけないので、python力 or SQL力は必要だと思っています
  • 機械学習ベースの不正検知の精度感をさくっと知るという意味では妥当なアプローチだと思っています
    • 学習データ構築のために必要な前処理の工数を削減することができます

難しかったこと

  • どの特徴量が効いているかは簡単に分からず、精度改善のヒントが限られてしまいます
  • MLによる不正予測料金が一番お金がかかるポイントなので、学習に使用していないデータでテストとかしようとすると結構高額になる可能性があるので注意が必要です

まとめ

今回はギフティのCtoCサービス上で行ったAWS Fraud Detectorの技術検証結果について紹介しました。そこまで手間をかけずに、さくっと精度を検証するという面においては非常に優れたサービスであると実感しました。今後も不正削減に向け、AWS Fraud Detectorの精度向上活動や他サービスの検証を続けていこうかなと考えています。

また、ギフティ社内には、不正検出以外にもまだまだデータ分析や機械学習が活躍できそうな領域が多数あると感じる日々なので、どんどん技術検証・本番実装・ビジネス創出に貢献していければと思っています。

それでは!