成功する機械学習 (ML) 詐欺モデルの開発とトレーニングには、大量の高品質データへのアクセスが必要です。 利用可能なデータセットは、ML モデルを有効にトレーニングするのに十分な大きさではないか、偏りが十分でない場合があり、多大なコストと時間が必要になる場合があるため、このデータの調達は困難です。 規制とプライバシーの要件により、企業組織内であってもデータの使用や共有がさらに妨げられます。 機密データの使用とアクセスを承認するプロセスは、多くの場合、ML プロジェクトを遅らせたり脱線させたりします。 または、合成データを生成して使用することで、これらの課題に取り組むことができます。
合成データは、規制リスクとコンプライアンス、調達の時間とコストに対処するために、元のデータセットのコンテンツとパターンを模倣する人為的に作成されたデータセットを表します。 合成データ ジェネレーターは、実際のデータを使用して関連する特徴、相関関係、およびパターンを学習し、最初に取り込まれたデータセットの統計的品質に一致する必要な量の合成データを生成します。
合成データは、ラボ環境で使用されています XNUMX年以上; 市場には、商用および公共部門での採用が加速している有用性の証拠があります。 ガートナー 予測 2024 年までに、ML および分析ソリューションの開発に使用されるデータの 60% が合成的に生成され、合成データの使用は引き続き大幅に増加すると予測されています。
英国の規制機関である Financial Conduct Authority は、 謝辞 「データへのアクセスはイノベーションの触媒であり、合成金融データはイノベーションをサポートし、新規参入者が新しいソリューションの価値を開発、テスト、および実証できるようにする役割を果たします。」
Amazon SageMaker GroundTruth 現在サポートしています 合成データの生成 ラベル付けされた合成画像データの。 このブログ投稿では、表形式の合成データの生成について説明します。 単一テーブルやリレーショナル テーブルなどの構造化データ、および時系列データは、エンタープライズ分析で最も頻繁に使用されるタイプです。
これは XNUMX 部構成のブログ投稿です。 パートXNUMXで合成データを作成し、パートXNUMXでその品質を評価します パート2.
このブログ投稿では、オープンソース ライブラリの使用方法を学習します。 ydata-合成 & AWS SageMaker ノートブック 高精度の詐欺モデルをトレーニングするのに十分な詐欺トランザクションがない場合に、詐欺のユース ケース用に表形式のデータを合成します。 不正モデルをトレーニングする一般的なプロセスは、このセクションでカバーされています。 役職.
ソリューションの概要
このチュートリアルの目的は、最適化されたアルゴリズムを使用して、非常に不均衡なクレジット カード詐欺データセットのマイノリティ クラスを合成することです。 敵対的生成ネットワーク (GAN) 呼ばれます WGAN-GP 元のデータのパターンと統計的特性を学習し、元のデータに似た合成データの無限のサンプルを作成します。 このプロセスは、詐欺などのまれなイベントをアップサンプリングすることによって元のデータを強化したり、元のデータには存在しないエッジ ケースを生成したりするためにも使用できます。
によって公開されたクレジット カード詐欺データセットを使用します。 ULB、からダウンロードできます Kaggle. マイノリティ クラスの合成データを生成すると、不均衡なデータセットに関連する問題に対処するのに役立ち、より正確なモデルの開発に役立ちます。
Amazon SageMaker や Amazon S3 など、クラウド リソースを使用するためのコストが発生する AWS のサービスを使用しています。
開発環境を整える
SageMaker は、モデルの構築、トレーニング、およびデプロイ用の管理された Jupyter ノートブック インスタンスを提供します。
受験資格:
SageMaker を実行するには、AWS アカウントが必要です。 得られる 開始 SageMaker を使って試す 実践的なチュートリアル.
Jupyter Notebook の作業環境をセットアップする手順については、次を参照してください。 AmazonSageMakerNotebookインスタンスの使用を開始する.
ステップ 1: Amazon SageMaker インスタンスをセットアップする
- AWS コンソールにサインインし、「SageMaker」を検索します。
- 選択 Studio.
- 選択 ノートブックインスタンス をクリックし、選択します ノートブックインスタンスを作成.
- 次のページから (次の図に示すように)、必要に応じて仮想マシン (VM) の構成を選択し、 ノートブックインスタンスを作成. GPU なしで 5 GB のデータを備えた ML 最適化 VM、Amazon Linux 3 を実行する ml.t2.medium、および Jupyter Lab 3 カーネルを使用したことに注意してください。
- ノートブック インスタンスは、数分以内に使用できるようになります。
- 選択 JupyterLabを開く 打ち上げへ。
- 必要な仕様を備えた JupyterLab ができたので、合成ライブラリをインストールします。
ステップ 2: 実際のデータセットをダウンロードまたは抽出して合成データを作成する
参照データをダウンロードする ここで行っているように手動で Kaggle から、または Kaggle アカウントを持っている場合は Kaggle API を介してプログラムで。 このデータセットを調べると、「不正」クラスに含まれるデータが「非不正」クラスよりもはるかに少ないことがわかります。
このデータを機械学習予測に直接使用すると、モデルは常に「不正ではない」と予測することを学習する可能性があります。 詐欺のケースはめったにないため、モデルは非詐欺のケースで簡単に精度が高くなります。 ただし、この演習では不正事例を検出することが目的であるため、実際のデータに基づいてモデル化された合成データを使用して不正クラスの数を増やします。
JupyterLab でデータ フォルダーを作成し、Kaggle データ ファイルをそこにアップロードします。 これにより、SageMaker 以降のノートブック内のデータを使用できるようになります 収納付き これは、ノートブックをインスタンス化したときに指定したものです。
このデータセットは 144 MB です
次に、pandas ライブラリを介して標準コードを使用してデータを読み取ることができます。
不正検出データには、次のような特定の特性があります。
- 大規模なクラスの不均衡 (通常、非不正データ ポイントに向けて)。
- プライバシー関連の懸念 (機密データの存在による)。
- 悪意のあるユーザーが、不正なトランザクションを監視するシステムによる検出を常に回避しようとしているという点で、ある程度のダイナミズム。
- 利用可能なデータ セットは非常に大きく、多くの場合、ラベルが付けられていません。
データセットを調べたので、マイノリティ クラス (クレジット カード データセットの「詐欺」クラス) をフィルター処理し、必要に応じて変換を実行しましょう。 ここからデータ変換を確認できます ノート.
このマイノリティ クラスのデータセットが合成され、元のデータセットに追加されると、データの不均衡に対処する、より大きな合成されたデータセットの生成が可能になります。 より高い予測精度を達成するには、 不正検出モデルのトレーニング 新しいデータセットを使用します。
新しい不正データセットを合成しましょう。
ステップ 3: シンセサイザーをトレーニングしてモデルを作成する
SageMaker 内でデータをすぐに利用できるようになったので、合成 GAN モデルを機能させる時が来ました。
敵対的生成ネットワーク (GAN) には、次の XNUMX つの部分があります。
ジェネレータ もっともらしいデータを生成することを学びます。 生成されたインスタンスは、ディスクリミネーターのネガティブ トレーニング サンプルになります。
弁別器 ジェネレーターの偽のデータと実際のデータを区別することを学習します。 ディスクリミネータは、信じがたい結果を生成するジェネレータにペナルティを課します。
トレーニングが開始されると、ジェネレーターは明らかに偽のデータを生成し、ディスクリミネーターはそれが偽物であることをすぐに学習します。 トレーニングが進むにつれて、ジェネレーターはディスクリミネーターをだますことができる出力の生成に近づきます。 最後に、ジェネレータのトレーニングがうまくいくと、弁別器は本物と偽物を見分ける能力が低下します。 偽のデータを本物として分類し始め、精度が低下します。
ジェネレーターとディスクリミネーターはどちらもニューラル ネットワークです。 ジェネレーターの出力は、ディスクリミネーターの入力に直接接続されています。 使って 誤差逆伝播法、ディスクリミネーターの分類は、ジェネレーターがその重みを更新するために使用する信号を提供します。
ステップ 4: シンセサイザーからの合成データのサンプル
モデルを構築してトレーニングしたので、モデルにノイズを与えて必要なデータをサンプリングします。 これにより、必要なだけ合成データを生成できます。
この場合、実際のデータの量と同じ量の合成データを生成します。これにより、ステップ 5 で同様のサンプル サイズを比較しやすくなります。
不正なトランザクションを含む行をサンプリングするオプションがあります。これを非合成の不正データと組み合わせると、「不正」クラスと「不正でない」クラスが均等に分布します。 オリジナル Kaggleデータセット 492 件のトランザクションのうち 284,807 件の詐欺が含まれていたため、シンセサイザーから同じサンプルを作成しました。
データ拡張と呼ばれるプロセスで、不正なトランザクションを含む行をアップサンプリングするオプションがあります。これは、合成されていない不正データと組み合わせると、「不正」クラスと「非不正」クラスの均等な分布につながります。
ステップ 5: 合成データを実際のデータと比較して評価する
このステップはオプションですが、散布図を使用して、生成された合成データを実際のデータに対して定性的に視覚化し、評価することができます。
これにより、パラメーターの微調整、サンプル サイズの変更、その他の変換を行ってモデルを反復し、最も正確な合成データを生成することができます。 この精度の性質は、常に合成の目的に依存します
以下の画像は、実際の不正と合成不正のデータ ポイントがトレーニング ステップ全体でどのように類似しているかを示しています。 これにより、合成データと実際のデータの間の類似性と、より多くのエポック (アルゴリズムを介したトレーニング データセット全体の通過) を実行するにつれてそれがどのように改善されるかについて、質の高い検査が得られます。 より多くのエポックを実行するにつれて、合成データ パターン セットが元のデータに近づくことに注意してください。
ステップ6:クリーンアップ
最後に、予期しないコストを回避するために、合成が完了したらノートブック インスタンスを停止します。
まとめ
機械学習アルゴリズムおよびコーディング フレームワークとして 急速に進化する、大規模な高品質データは、ML で最も希少なリソースです。 高品質の合成データセットは、さまざまなタスクで使用できます。
このブログ投稿では、オープンソース ライブラリを使用してデータセットを合成することの重要性を学びました。 WGAN-GP. これは活発な研究分野であり、GAN に関する何千もの論文が公開されており、何百もの名前付き GAN を実験することができます。 リレーショナル テーブルや時系列データなど、特定のユース ケース向けに最適化されたバリアントがあります。
この記事で使用したすべてのコードは、この にあります。 ノート、そしてもちろん、このようなチュートリアルは SageMaker から入手できます。 公式ドキュメントページ。
第二部 この XNUMX 部構成のブログ投稿シリーズでは、忠実度、有用性、およびプライバシーの観点から合成データの品質を評価する方法について深く掘り下げます。
著者について
ファリス・ハダッド AABG Strategic Pursuits チームの Data & Insights Lead です。 彼は、企業がデータ駆動型になるのを支援しています。