Amazon SageMaker PlatoBlockchain Data Intelligence による機械学習を使用して、不正なトランザクションを検出します。 垂直検索。 あい。

Amazon SageMaker で機械学習を使用して不正なトランザクションを検出する

企業は、悪意のあるユーザーや不正な取引により、毎年数十億ドルを失う可能性があります。 ますます多くのビジネス オペレーションがオンラインに移行するにつれて、オンライン システムでの詐欺や悪用も増加しています。 オンライン詐欺に対抗するために、多くの企業がルールベースの詐欺検出システムを使用しています。

ただし、従来の不正検出システムは、人間の専門家が手作業で作成した一連のルールとフィルターに依存しています。 多くの場合、フィルターは脆弱であり、ルールは不正なシグナルの全スペクトルを捕捉しない可能性があります。 さらに、不正行為は常に進化していますが、事前定義されたルールとフィルターの静的な性質により、従来の不正検出システムを効果的に維持および改善することが困難になっています。

この投稿では、機械学習 (ML) を使用して、動的で自己改善型の保守可能なクレジット カード詐欺検出システムを構築する方法を紹介します。 アマゾンセージメーカー.

または、コードを記述せずにカスタマイズされた不正検出モデルを構築するためのフル マネージド サービスを探している場合は、以下をチェックすることをお勧めします。 アマゾン詐欺検出器. Amazon Fraud Detector を使用すると、ML の経験がないお客様でも、AWS と Amazon.com の 20 年以上にわたる不正検出の専門知識を活用して、データ用にカスタマイズされた不正検出モデルの構築を自動化できます。

ソリューションの概要

このソリューションは、SageMaker を使用してクレジットカード詐欺検出システムのコアを構築します。 アルゴリズムを使用して、教師なし異常検出モデルをトレーニングすることから始めます。 ランダム カット フォレスト (RCF). 次に、アルゴリズムを使用して XNUMX つの教師付き分類モデルをトレーニングします。 XGブースト、XNUMX つはベースライン モデルとして、もう XNUMX つは予測を行うためのもので、さまざまな戦略を使用してデータの極端なクラスの不均衡に対処します。 最後に、最適な XGBoost モデルをトレーニングします。 ハイパーパラメーター最適化(HPO) モデルのパフォーマンスをさらに向上させます。

サンプル データセットでは、公開された匿名化されたクレジット カード トランザクションを使用します。 データセット の一部として最初にリリースされた 研究 ワールドラインとのコラボレーション ULBの機械学習グループ (ブリュッセル自由大学)。 このチュートリアルでは、ソリューションをカスタマイズして独自のデータを使用する方法についても説明します。

ソリューションの出力は次のとおりです。

  • 教師なし セージメーカー RCF モデル。 このモデルは、トランザクションごとに異常スコアを出力します。 低いスコア値は、トランザクションが正常 (不正ではない) と見なされることを示します。 高い値は、トランザクションが不正であることを示します。 低と高の定義はアプリケーションによって異なりますが、一般的な慣例では、平均スコアから XNUMX 標準偏差を超えるスコアは異常と見なされます。
  • 監督下 SageMaker XGBoost 非常に不均衡なデータの問題に対処するために、組み込みの重み付けスキーマを使用してトレーニングされたモデル。
  • を使用してトレーニングされた、監視された SageMaker XGBoost モデル 合成少数派のオーバーサンプリング手法 (SMOTE)。
  • HPO を使用したトレーニング済みの SageMaker XGBoost モデル。
  • 各トランザクションが不正である確率の予測。 トランザクションの推定確率がしきい値を超えている場合、それは不正として分類されます。

既存のビジネス インフラストラクチャでこのソリューションを使用する方法を示すために、デプロイされたモデル エンドポイントに対して REST API 呼び出しを行う例も含めます。 AWSラムダ RCF モデルと XGBoost モデルの両方をトリガーします。

次の図は、ソリューションのアーキテクチャを示しています。

前提条件

自分のアカウントでソリューションを試すには、次の条件が整っていることを確認してください。

Studioインスタンスの準備ができたら、Studioを起動してJumpStartにアクセスできます。 JumpStartソリューションはSageMakerノートブックインスタンスでは利用できず、SageMakerAPIまたは AWSコマンドラインインターフェイス (AWS CLI)。

ソリューションを起動する

ソリューションを起動するには、次の手順を実行します。

  1. でJumpStartランチャーを使用してJumpStartを開きます 始める セクションまたは左側のサイドバーのJumpStartアイコンを選択します。
  2. ソリューション、選択する 悪意のあるユーザーとトランザクションを検出 別の[スタジオ]タブでソリューションを開きます。
    解決策を見つける
  3. ソリューション タブで、 起動する ソリューションを起動します。
    ソリューションを起動する
    ソリューションリソースがプロビジョニングされ、展開の進行状況を示す別のタブが開きます。 展開が完了すると、 ノートブックを開く ボタンが表示されます。
  4. 選択する ノートブックを開く Studioでソリューションノートブックを開きます。
    ノートを開く

データの調査と処理

元のフィーチャは を使用して変換されているため、デフォルトのデータセットには数値フィーチャのみが含まれます 主成分分析 (PCA) ユーザーのプライバシーを保護します。 その結果、データセットには 28 個の PCA コンポーネント (V1 ~ V28) と、変換されていない XNUMX つの機能 (Amount と Time) が含まれています。 金額はトランザクションの金額を表し、時間はデータ内のトランザクションと最初のトランザクションの間に経過した秒数です。

クラス列は、トランザクションが不正かどうかに対応します。

サンプルデータ

合計 284,807 の例のうち、492 (0.173%) のみが不正であるため、大部分が不正ではないことがわかります。 これは極端なクラスの不均衡のケースであり、不正検出シナリオでは一般的です。

データ クラスの不均衡

次に、読み込みとトレーニングのためにデータを準備します。 データをトレーニング セットとテスト セットに分割し、前者をトレーニングに使用し、後者を使用してモデルのパフォーマンスを評価します。 クラスの不均衡を緩和する手法を適用する前に、データを分割することが重要です。 そうしないと、テスト セットからトレーニング セットに情報が漏洩し、モデルのパフォーマンスが損なわれる可能性があります。

独自のトレーニング データを取り込みたい場合は、それが CSV 形式の表形式のデータであることを確認し、データを Amazon シンプル ストレージ サービス (Amazon S3) バケットに移動し、ノートブック コードで S3 オブジェクト パスを編集します。

S3 のデータパス

データに非数値のカテゴリ列が含まれている場合は、これらの値をワンホット エンコードする必要があります (たとえば、 sklearn の OneHotEncoder) XGBoost アルゴリズムは数値データのみをサポートするためです。

教師なしランダム カット フォレスト モデルのトレーニング

不正検出のシナリオでは、通常、ラベル付けされた例はほとんどなく、不正のラベル付けには多くの時間と労力がかかる可能性があります。 したがって、手元にあるラベルのないデータからも情報を抽出したいと考えています。 これは、不正検出データセットで一般的な高いデータの不均衡を利用して、異常検出アルゴリズムを使用して行います。

異常検出は、教師なし学習の一形態であり、特徴の特性のみに基づいて異常な例を識別しようとします。 ランダム カット フォレストは、正確でスケーラブルな最先端の異常検出アルゴリズムです。 各データ例で、RCF は異常スコアを関連付けます。

SageMaker 組み込みの RCF アルゴリズムを使用して、トレーニング データセットで異常検出モデルをトレーニングし、テスト データセットで予測を行います。

まず、ポジティブ (不正) とネガティブ (非不正) の例の予測異常スコアを別々に調べてプロットします。これは、ポジティブとネガティブの例の数が大幅に異なるためです。 ポジティブ (不正) の例は異常スコアが比較的高く、ネガティブ (不正でない) の例は異常スコアが低いと予想されます。 ヒストグラムから、次のパターンを確認できます。

  • 正の例 (左側のヒストグラム) のほぼ半分は異常スコアが 0.9 を超えていますが、負の例 (右側のヒストグラム) のほとんどは異常スコアが 0.85 未満です。
  • 教師なし学習アルゴリズム RCF には、不正な例と不正でない例を正確に識別するには限界があります。 これは、ラベル情報が使用されていないためです。 ラベル情報を収集し、後の手順で教師あり学習アルゴリズムを使用することで、この問題に対処します。

予測される異常スコア

次に、異常スコアに基づいて各テスト例をポジティブ (不正) またはネガティブ (非不正) に分類する、より現実的なシナリオを想定します。 次のように、すべてのテスト例のスコア ヒストグラムをプロットし、分類のために (ヒストグラムに示されているパターンに基づいて) 1.0 のカットオフ スコアを選択します。 具体的には、サンプルの異常スコアが 1.0 以下の場合、それはネガティブ (非不正) として分類されます。 それ以外の場合、例はポジティブ (不正) として分類されます。

テスト サンプルのスコアのヒストグラム

最後に、分類結果をグラウンド トゥルース ラベルと比較し、評価指標を計算します。 データセットが不均衡であるため、評価指標を使用します バランスの取れた精度, コーエンのカッパスコア, F1スコア, ROCAUCこれは、データ内の各クラスの頻度が考慮されているためです。 これらすべてのメトリックについて、値が大きいほど予測パフォーマンスが優れていることを示します。 このステップでは、ROC AUC をまだ計算できないことに注意してください。これは、各例の RCF モデルから正と負のクラスの推定確率がないためです。 教師あり学習アルゴリズムを使用して、後のステップでこのメトリクスを計算します。

. RCF
バランスの取れた精度 0.560023
コーエンのカッパ 0.003917
F1 0.007082
ROCAUC

このステップから、教師なしモデルがすでにクラス間のある程度の分離を達成できていることがわかります。より高い異常スコアは不正な例と相関しています。

組み込みの重み付けスキーマを使用して XGBoost モデルをトレーニングする

十分な量のラベル付きトレーニング データを収集したら、教師あり学習アルゴリズムを使用して、特徴とクラスの間の関係を発見できます。 XGBoost アルゴリズムを選択したのは、実績があり、スケーラビリティが高く、欠損データに対処できるためです。 今回はデータの不均衡を処理する必要があります。そうしないと、多数派クラス (不正でない例、または否定的な例) が学習を支配してしまいます。

SageMaker の組み込み XGBoost アルゴリズム コンテナを使用して、最初の教師ありモデルをトレーニングしてデプロイします。 これが当社のベースモデルです。 データの不均衡を処理するために、ハイパーパラメータを使用します scale_pos_weight、負のクラスの例に対する正のクラスの例の重みをスケーリングします。 データセットは非常に歪んでいるため、このハイパーパラメータを保守的な値に設定します。 sqrt(num_nonfraud/num_fraud).

次のようにモデルをトレーニングしてデプロイします。

  1. SageMaker XGBoost コンテナ URI を取得します。
  2. データの不均衡を処理するものを含め、モデルのトレーニングに使用するハイパーパラメーターを設定します。 scale_pos_weight.
  3. XGBoost エスティメーターを作成し、トレーニング データセットでトレーニングします。
  4. トレーニング済みの XGBoost モデルを SageMaker 管理エンドポイントにデプロイします。
  5. このベースライン モデルをテスト データセットで評価します。

次に、前のステップで説明したのと同じ XNUMX つのメトリックでモデルを評価します。 今回は、ROC AUC メトリックも計算できます。

. RCF XGブースト
バランスの取れた精度 0.560023 0.847685
コーエンのカッパ 0.003917 0.743801
F1 0.007082 0.744186
ROCAUC 0.983515

重み付けスキーマを使用した教師あり学習法 XGBoost (ハイパーパラメータを使用) scale_pos_weight) は、教師なし学習法 RCF よりも大幅に優れたパフォーマンスを実現します。 ただし、パフォーマンスを改善する余地はまだあります。 特に、Cohen のカッパ スコアを 0.8 より上に上げると、一般的に非常に有利になります。

単一値のメトリックとは別に、クラスごとのパフォーマンスを示すメトリックを確認することも役立ちます。 たとえば、混同行列、クラスごとの精度、再現率、および F1 スコアは、モデルのパフォーマンスに関するより多くの情報を提供できます。

XGBoost モデルの混同行列

. 精度 リコール f1スコア サポート
非詐欺 1.00 1.00 1.00 28435
詐欺 0.80 0.70 0.74 46

Lambda 経由でエンドポイントにテスト トラフィックを送信し続ける

実稼働システムでモデルを使用する方法を示すために、REST API を構築しました。 アマゾンAPIゲートウェイ そしてラムダ関数。 クライアント アプリケーションが HTTP 推論リクエストを REST API に送信すると、Lambda 関数がトリガーされ、次に RCF および XGBoost モデル エンドポイントが呼び出され、モデルから予測が返されます。 Lambda 関数コードを読み取り、Lambda コンソールで呼び出しを監視できます。

また、テスト データを入力データとして、REST API に対して HTTP 推論要求を行う Python スクリプトも作成しました。 これがどのように行われたかを確認するには、 generate_endpoint_traffic.py ソリューションのソース コード内のファイル。 予測出力は、 Amazon Kinesis データ ファイアホース 配信ストリーム。 Kinesis Data Firehose コンソールで送信先の S3 バケット名を見つけ、S3 バケットで予測結果を確認できます。

オーバーサンプリング手法 SMOTE を使用して XGBoost モデルをトレーニングする

XGBoost を使用したベースライン モデルができたので、不均衡な問題のために特別に設計されたサンプリング手法がモデルのパフォーマンスを改善できるかどうかを確認できます。 を使用しております 合成少数派のオーバーサンプリング (SMOTE)、既存のデータ ポイント間に新しいデータ ポイントを補間することにより、マイノリティ クラスをオーバーサンプリングします。

手順は以下の通りです。

  1. SMOTE を使用して、トレーニング データセットのマイノリティ クラス (不正なクラス) をオーバーサンプリングします。 SMOTE は、マイノリティ クラスを約 0.17 ~ 50% オーバーサンプリングします。 これは、少数派クラスの極端なオーバーサンプリングのケースであることに注意してください。 別の方法として、より小さなリサンプリング比を使用することもできます。 sqrt(non_fraud/fraud) 多数のサンプル、またはより高度なリサンプリング手法を使用します。 その他のオーバーサンプリング オプションについては、次を参照してください。 オーバーサンプリング サンプラーの比較.
  2. XNUMX 番目の XGBoost をトレーニングするためのハイパーパラメーターを定義して、scale_pos_weight が削除され、他のハイパーパラメーターがベースライン XGBoost モデルをトレーニングするときと同じままになるようにします。 SMOTE で既に処理しているため、このハイパーパラメーターでデータの不均衡を処理する必要はもうありません。
  3. SMOTE で処理されたトレーニング データセットで、新しいハイパーパラメーターを使用して XNUMX 番目の XGBoost モデルをトレーニングします。
  4. 新しい XGBoost モデルを SageMaker 管理エンドポイントにデプロイします。
  5. テスト データセットを使用して新しいモデルを評価します。

新しいモデルを評価すると、SMOTE を使用すると、XGBoost はバランスの取れた精度でより優れたパフォーマンスを達成することがわかりますが、Cohen のカッパと F1 スコアではそうではありません。 この理由は、SMOTE が不正クラスをオーバーサンプリングしすぎたため、非不正ケースとの特徴空間での重複が増加したためです。 Cohen のカッパはバランスのとれた精度よりも誤検知に重みを与えるため、メトリクスは大幅に低下し、不正事例の精度と F1 スコアも低下します。

. RCF XGブースト XGBoost SMOTE
バランスの取れた精度 0.560023 0.847685 0.912657
コーエンのカッパ 0.003917 0.743801 0.716463
F1 0.007082 0.744186 0.716981
ROCAUC 0.983515 0.967497

ただし、分類のしきい値を調整することで、メトリック間のバランスを取り戻すことができます。 これまで、データ ポイントが不正であるかどうかを示すしきい値として 0.5 を使用してきました。 0.1 ~ 0.9 のさまざまなしきい値を試した後、コーエンのカッパは、バランスの取れた精度を大幅に損なうことなく、しきい値とともに増加し続けることがわかります。

さまざまなしきい値を試して、指標間のバランスを取り戻す

これにより、モデルに有用なキャリブレーションが追加されます。 不正なケース (偽陰性) を見逃さないことが優先される場合は、低いしきい値を使用できます。または、しきい値を上げて偽陽性の数を最小限に抑えることができます。

HPO を使用して最適な XGBoost モデルをトレーニングする

このステップでは、ハイパーパラメーターの最適化を使用して XNUMX 番目の XGBoost モデルをトレーニングすることにより、モデルのパフォーマンスを向上させる方法を示します。 複雑な ML システムを構築する場合、ハイパーパラメータ値の考えられるすべての組み合わせを手動で調査することは非現実的です。 SageMaker の HPO 機能は、ユーザーに代わってモデルのさまざまなバリエーションを試すことで、生産性を向上させることができます。 指定した範囲内のハイパーパラメーター値の最も有望な組み合わせに注目することで、最適なモデルを自動的に探します。

HPO プロセスには検証データセットが必要なので、最初にトレーニング データをさらにトレーニング データセットと検証データセットに分割します。 層化抽出法. データの不均衡の問題に取り組むために、XGBoost の重み付けスキーマを再度使用し、 scale_pos_weight へのハイパーパラメータ sqrt(num_nonfraud/num_fraud).

SageMaker 組み込みの XGBoost アルゴリズム コンテナを使用して XGBoost エスティメータを作成し、客観的な評価メトリクスと実験したいハイパーパラメータ範囲を指定します。 これらを使用して、 ハイパーパラメータチューナー そして、最適なハイパーパラメーターの組み合わせを探して、複数のモデルを並行してトレーニングする HPO チューニング ジョブを開始します。

チューニング ジョブが完了すると、その分析レポートが表示され、各モデルのハイパーパラメータ、トレーニング ジョブ情報、および客観的な評価指標に対するパフォーマンスが検査されます。

チューニング ジョブからの各モデルの情報のリスト

次に、最適なモデルをデプロイし、テスト データセットで評価します。

同じテスト データですべてのモデルのパフォーマンスを評価して比較する

これで、RCF、XGBoost ベースライン、SMOTE を使用した XGBoost、および HPO を使用した XGBoost の XNUMX つのモデルすべての評価結果が得られました。 それぞれの性能を比較してみましょう。

. RCF XGブースト SMOTE を使用した XGBoost HPO を使用した XGBoost
バランスの取れた精度 0.560023 0.847685 0.912657 0.902156
コーエンのカッパ 0.003917 0.743801 0.716463 0.880778
F1 0.007082 0.744186 0.716981 0.880952
ROCAUC 0.983515 0.967497 0.981564

HPO を使用した XGBoost は、SMOTE メソッドを使用した場合よりもさらに優れたパフォーマンスを達成していることがわかります。 特に、Cohen のカッパ スコアと F1 は 0.8 を超えており、モデルのパフォーマンスが最適であることを示しています。

クリーンアップ

このソリューションを終了したら、意図しない料金が発生しないように、不要なAWSリソースをすべて削除してください。 の中に ソリューションを削除する [ソリューション]タブのセクションで、 すべてのリソースを削除する このソリューションの起動時に自動的に作成されたリソースを削除します。

ソリューションを削除してクリーンアップする

また、 AWS CloudFormation ソリューションとノートブックによって自動的に作成されたすべての標準リソースを削除します。 このアプローチを使用するには、AWS CloudFormation コンソールで、説明に機械学習を使用した不正検出が含まれている CloudFormation スタックを見つけて削除します。 これは親スタックであり、このスタックの削除を選択すると、ネストされたスタックが自動的に削除されます。

CloudFormation によるクリーンアップ

どちらの方法でも、このノートブックで作成した可能性のある余分なリソースを手動で削除する必要があります。 いくつかの例には、追加のS3バケット(ソリューションのデフォルトバケットに加えて)、追加のSageMakerエンドポイント(カスタム名を使用)、および追加の Amazon エラスティック コンテナ レジストリ (Amazon ECR)リポジトリ。

まとめ

この投稿では、ML と SageMaker を使用して、動的で自己改善型の保守可能なクレジット カード詐欺検出システムのコアを構築する方法を紹介しました。 教師なし RCF 異常検出モデル、ベースラインとしての教師あり XGBoost モデル、データの不均衡の問題に対処するための SMOTE を使用した別の教師あり XGBoost モデル、および HPO で最適化された最終的な XGBoost モデルを構築、トレーニング、デプロイしました。 データの不均衡を処理し、ソリューションで独自のデータを使用する方法について説明しました。 また、既存のビジネス インフラストラクチャでシステムを使用する方法を示すために、API Gateway と Lambda を使用した REST API 実装の例も含めました。

自分で試してみるには、 SageMaker スタジオ JumpStart ソリューションを起動します。 ソリューションの詳細については、その GitHubリポジトリ.


著者について

シェン・シャオリシェン・シャオリ アマゾン ウェブ サービスのソリューション アーキテクトおよび Machine Learning Technical Field Community (TFC) メンバーです。 彼女は、顧客がクラウド上で設計し、AWS サービスを活用してビジネス価値を引き出すのを支援することに重点を置いています。 AWS に入社する前は、クラウド上でデータ集約型の分散システムを構築するテクニカル リードおよびシニア フルスタック エンジニアでした。

Amazon SageMaker PlatoBlockchain Data Intelligence による機械学習を使用して、不正なトランザクションを検出します。 垂直検索。 あい。XinHuang博士 は、AmazonSageMakerJumpStartおよびAmazonSageMakerの組み込みアルゴリズムの応用科学者です。 彼はスケーラブルな機械学習アルゴリズムの開発に焦点を当てています。 彼の研究対象は、自然言語処理、表形式データに関する説明可能な深層学習、および非パラメトリック時空間クラスタリングの堅牢な分析の分野です。 彼は、ACL、ICDM、KDD会議、およびRoyal Statistics Society:SeriesAジャーナルに多くの論文を発表しています。

Amazon SageMaker PlatoBlockchain Data Intelligence による機械学習を使用して、不正なトランザクションを検出します。 垂直検索。 あい。ヴェダントジャイン はシニアAI/MLスペシャリストソリューションアーキテクトであり、お客様がAWSの機械学習エコシステムから価値を引き出すのを支援しています。 AWSに参加する前は、Vedantは、Databricks、Hortonworks(現在はCloudera)、JPMorganChaseなどのさまざまな企業でML/データサイエンススペシャリティの役職を歴任してきました。 彼の仕事以外では、ヴェダントは音楽を作ることに情熱を注いでおり、科学を使って有意義な生活を送り、世界中のおいしいベジタリアン料理を探求しています。

タイムスタンプ:

より多くの AWS機械学習