Amazon SageMaker JumpStart PlatoBlockchain Data Intelligenceのグラフ機械学習を使用して、企業の信用格付け分類子を構築します。 垂直検索。 愛。

Amazon SageMaker JumpStartでグラフ機械学習を使用して、企業の信用格付け分類子を構築します

本日、財務グラフ機械学習(ML)の新しいソリューションをリリースします。 Amazon SageMaker ジャンプスタート。 JumpStartは、MLの使用をすばやく開始するのに役立ち、数回クリックするだけでトレーニングおよび展開できる最も一般的なユースケースの一連のソリューションを提供します。

新しいJumpStartソリューション(グラフベースのクレジットスコアリング)は、SECファイリング(長い形式のテキストデータ)から企業ネットワークを構築し、これを財務比率(表形式データ)と組み合わせ、グラフニューラルネットワーク(GNN)を使用してクレジットを構築する方法を示しています格付け予測モデル。 この投稿では、この完全にカスタマイズ可能なソリューションをクレジットスコアリングに使用して、グラフのMLジャーニーを加速する方法について説明します。 グラフMLは、従来の表形式のデータセットと組み合わせてネットワークデータを使用できるため、財務MLにとって実り多い分野になりつつあります。 詳細については、を参照してください。 WSDMでのAmazon:グラフニューラルネットワークの未来.

ソリューションの概要

このソリューションではCorpNet(企業ネットワークの略)と呼ばれるグラフを作成できるビジネスリンケージのデータを活用することで、クレジットスコアを向上させることができます。 次に、このグラフのGNNとノードの表形式の機能セットを使用してグラフML分類を適用し、ネットワーク関係の情報をさらに活用して、より優れたMLモデルを構築できるかどうかを確認できます。 したがって、このソリューションは、サプライチェーン関係グラフやソーシャルネットワークグラフなどを使用するなど、ネットワークデータを活用するビジネスモデルのテンプレートを提供します。

このソリューションは、企業ネットワークを構築して合成財務データを生成することでいくつかの新しい成果物を開発し、両方の形式のデータを組み合わせてグラフMLを使用してモデルを作成します。

このソリューションは、SEC 10-K / QファイリングのMD&Aセクションを使用して、接続された企業のネットワークを構築する方法を示しています。 同様の将来の見通しに関する記述を持つ企業は、クレジットイベントにつながる可能性があります。 これらの接続はグラフで表されます。 グラフノード機能の場合、ソリューションはAltmanZスコアモデルの変数と各企業の業界カテゴリを使用します。 これらは、デモンストレーション目的で利用できるようになった合成データセットで提供されます。 グラフデータと表形式のデータは、GNNを使用して評価分類子を適合させるために使用されます。 説明のために、グラフ情報がある場合とない場合のモデルのパフォーマンスを比較します。

グラフベースのクレジットスコアリングソリューションを使用する

JumpStartの使用を開始するには、を参照してください。 AmazonSageMakerの使用を開始する。 グラフベースのクレジットスコアリングソリューションのJumpStartカードは、 Amazon SageMakerスタジオ.

Amazon SageMaker JumpStart PlatoBlockchain Data Intelligenceのグラフ機械学習を使用して、企業の信用格付け分類子を構築します。 垂直検索。 愛。

  1. モデルカードを選択してから、 起動する ソリューションを開始します。
    Amazon SageMaker JumpStart PlatoBlockchain Data Intelligenceのグラフ機械学習を使用して、企業の信用格付け分類子を構築します。 垂直検索。 愛。

このソリューションは、ノートブックで使用する推論とエンドポイントのモデルを生成します。

  1. 準備が整い、ステータスが次のように表示されるまで待ちます Complete.
  2. 選択する ノートブックを開く トレーニングとエンドポイントの展開用の最初のノートブックを開きます。
    Amazon SageMaker JumpStart PlatoBlockchain Data Intelligenceのグラフ機械学習を使用して、企業の信用格付け分類子を構築します。 垂直検索。 愛。

このノートブックを使用して、このソリューションの使用方法を学習し、自分のデータで他のアプリケーション用に変更することができます。 このソリューションには合成データが付属しており、そのサブセットを使用して、モデルをトレーニングし、エンドポイントにデプロイしてから、推論のためにエンドポイントを呼び出すために必要な手順を例示します。 ノートブックには、独自のエンドポイントをデプロイするためのコードも含まれています。

  1. XNUMX番目のノートブック(推論に使用)を開くには、 ノートブックでエンドポイントを使用する エンドポイントアーティファクトの横。

このノートブックでは、サンプルエンドポイントを呼び出してサンプルのバッチで推論を実行するためのデータを準備する方法を確認できます。
Amazon SageMaker JumpStart PlatoBlockchain Data Intelligenceのグラフ機械学習を使用して、企業の信用格付け分類子を構築します。 垂直検索。 愛。

エンドポイントは、推論ノートブックの最後のコードブロックの次のスクリーンショットに示すように、モデルのパフォーマンスを評価するために使用される予測評価を返します。
Amazon SageMaker JumpStart PlatoBlockchain Data Intelligenceのグラフ機械学習を使用して、企業の信用格付け分類子を構築します。 垂直検索。 愛。

このソリューションは、グラフで強化された信用格付けモデルのテンプレートとして使用できます。 この例の機能セットに制限されることはありません。独自のユースケースに合わせて、グラフデータと表形式データの両方を変更できます。 必要なコード変更の範囲は最小限です。 テンプレートの例を参考にしてソリューションの構造を理解し、必要に応じて変更することをお勧めします。

このソリューションは、説明のみを目的としています。 これは財務上のアドバイスではなく、財務上または投資上のアドバイスとして信頼されるべきではありません。 トレーニング済みモデルを含む関連するノートブックは、合成データを使用しており、本番環境での使用を目的としていません。 SECファイリングからのテキストが使用されますが、財務データは合成的かつランダムに生成され、企業の実際の財務とは関係ありません。 したがって、総合的に生成された格付けも、実際の企業の真の格付けとは何の関係もありません。

ソリューションで使用されるデータ

データセットには、さまざまな会計比率(数値)や業界コード(カテゴリ)などの合成表形式データが含まれています。 データセットには 𝑁=3286行。 評価ラベルも追加されます。 これらは、グラフMLで使用されるノード機能です。

データセットには、無向で重み付けされていない企業グラフも含まれています。 このソリューションでは、リンクを含める方法を変えることで、グラフの構造を調整できます。 表形式のデータセット内の各企業は、企業グラフのノードで表されます。 関数 construct_network_data() ソースノードと宛先ノードのリストで構成されるグラフの作成に役立ちます。

格付けラベルは、GNNを使用した分類に使用されます。これは、投資適格債(AAA、AA、A、BBB)と非投資適格債(BB、B、CCC、CC、C、 D)。 ここでのDはデフォルトを表します。

データを読み込んでソリューションを実行するための完全なコードは、ソリューションノートブックに記載されています。 次のスクリーンショットは、合成表形式データの構造を示しています。

Amazon SageMaker JumpStart PlatoBlockchain Data Intelligenceのグラフ機械学習を使用して、企業の信用格付け分類子を構築します。 垂直検索。 愛。

グラフ情報はに渡されます ディープグラフライブラリ 表形式のデータと組み合わせて、グラフMLを作成します。 独自のグラフを持参する場合は、ソースノードと宛先ノードのセットとしてグラフを提供するだけです。

モデルトレーニング

比較のために、最初に表形式のデータのみでモデルをトレーニングします。 オートグルオン、企業の信用格付けに対する従来のアプローチを模倣しています。 次に、グラフデータを追加し、トレーニングにGNNを使用します。 完全な詳細はノートブックに記載されており、簡単な概要がこの投稿に記載されています。 ノートブックには、選択した参照を含むグラフMLの概要も表示されます。

GNNのトレーニングは次のように行われます。 私たちはの適応を使用します GraphSAGEモデル ディープグラフライブラリに実装されています。

  1. からグラフデータを読み込む Amazon シンプル ストレージ サービス (Amazon S3)そして、CorpNetのソースノードリストと宛先ノードリストを作成します。
  2. グラフノードの機能セット(トレーニングとテスト)を読み込みます。 必要に応じてデータを正規化します。
  3. 調整可能なハイパーパラメータを設定します。 PyTorchを実行している特殊なグラフMLコンテナーを呼び出して、ハイパーパラメーター最適化(HPO)なしでGNNに適合させます。
  4. HPOでグラフMLを繰り返します。

実装を簡単で安定させるために、次のコードを使用してコンテナでモデルトレーニングを実行します(このトレーニングコードの前のセットアップコードはソリューションノートブックにあります)。

from sagemaker.pytorch import PyTorch
from time import strftime, gmtime training_job_name = sagemaker_config["SolutionPrefix"] + "-gcn-training"
print( f"You can go to SageMaker -> Training -> Hyperparameter tuning jobs -> a job name started with {training_job_name} to monitor training job status and details."
) estimator = PyTorch( entry_point='train_dgl_pytorch_entry_point.py', source_dir='graph_convolutional_network', role=role, instance_count=1, instance_type='ml.g4dn.xlarge', framework_version="1.9.0", py_version='py38', hyperparameters=hyperparameters, output_path=output_location, code_location=output_location, sagemaker_session=sess, base_job_name=training_job_name,
) estimator.fit({'train': input_location})

現在のトレーニングプロセスは、変換設定で行われ、テストデータセットの機能(ターゲット列を含まない)を使用してグラフが作成されるため、テストノードがトレーニングプロセスに含まれます。 トレーニングの最後に、テストデータセットの予測が生成され、に保存されます。 output_location S3バケット内。

トレーニングは変換的ですが、テストデータセットのラベルはトレーニングに使用されません。この演習は、テストデータセットノードのノード埋め込みを使用してこれらのラベルを予測することを目的としています。 GraphSAGEの重要な機能は、このソリューションでは活用されていませんが、グラフの一部ではない新しい観測値の帰納的学習も可能であることです。

ハイパーパラメーターの最適化

このソリューションは、GNNでHPOを実行することによってさらに拡張されます。 これはSageMaker内で行われます。 次のコードを参照してください。

from sagemaker.tuner import ( IntegerParameter, CategoricalParameter, ContinuousParameter, HyperparameterTuner,
) # Static hyperparameters we do not tune
hyperparameters = { "n-layers": 2, "aggregator-type": "pool", "target-column": target_column
}
# Dynamic hyperparameters to tune and their searching ranges. # For demonstration purpose, we skip the architecture search by skipping # tuning the hyperparameters such as 'skip_rnn_num_layers', 'rnn_num_layers', etc.
hyperparameter_ranges = { "n-hidden": CategoricalParameter([32, 64, 128, 256, 512, 1024]), 'dropout': ContinuousParameter(0.0, 0.6), 'weight-decay': ContinuousParameter(1e-5, 1e-2), 'n-epochs': IntegerParameter(70, 120), #80, 160 'lr': ContinuousParameter(0.002, 0.02),
}

次に、この場合のF1スコアを最大化するために、トレーニング目標を設定します。

objective_metric_name = "Validation F1"
metric_definitions = [{"Name": "Validation F1", "Regex": "Validation F1 (\S+)"}]
objective_type = "Maximize"

SageMakerで選択した環境とトレーニングリソースを確立します。

estimator_tuning = PyTorch( entry_point='train_dgl_pytorch_entry_point.py', source_dir='graph_convolutional_network', role=role, instance_count=1, instance_type='ml.g4dn.xlarge', framework_version="1.9.0", py_version='py38', hyperparameters=hyperparameters, output_path=output_location, code_location=output_location, sagemaker_session=sess, base_job_name=training_job_name,
)

最後に、ハイパーパラメータ最適化を使用してトレーニングジョブを実行します。

import time tuning_job_name = sagemaker_config["SolutionPrefix"] + "-gcn-hpo"
print( f"You can go to SageMaker -> Training -> Hyperparameter tuning jobs -> a job name started with {tuning_job_name} to monitor HPO tuning status and details.n" f"Note. You will be unable to successfully run the following cells until the tuning job completes. This step may take around 2 hours."
) tuner = HyperparameterTuner( estimator_tuning, # using the estimator defined in previous section objective_metric_name, hyperparameter_ranges, metric_definitions, max_jobs=30, max_parallel_jobs=10, objective_type=objective_type, base_tuning_job_name = tuning_job_name,
) start_time = time.time() tuner.fit({'train': input_location}) hpo_training_job_time_duration = time.time() - start_time

結果

ネットワークデータとハイパーパラメータの最適化を含めると、結果が向上します。 次の表のパフォーマンスメトリックは、クレジットスコアリングに使用される標準の表形式のデータセットにCorpNetを追加することの利点を示しています。

AutoGluonの結果はグラフを使用せず、表形式のデータのみを使用します。 グラフデータを追加してHPOを使用すると、パフォーマンスが大幅に向上します。

F1スコア ROCAUC 正確さ MCC バランスの取れた精度 精度 リコール
オートグルオン 0.72 0.74323 0.68037 0.35233 0.67323 0.68528 0.75843
HPOなしのGCN 0.64 0.84498 0.69406 0.45619 0.71154 0.88177 0.50281
HPOを使用したGCN 0.81 0.87116 0.78082 0.563 0.77081 0.75119 0.89045

(注:MCCはマシューズ相関係数です。 https://en.wikipedia.org/wiki/Phi_coefficient.)

クリーンアップ

このノートブックの使用を終えたら、モデルの成果物やその他のリソースを削除して、追加料金が発生しないようにします。 モデルアーティファクトのS3バケット、トレーニングデータセット、アーティファクトの処理など、ノートブックの実行中に作成した可能性のあるリソースを手動で削除する必要があります。 アマゾンクラウドウォッチ ロググループ。

まとめ

この投稿では、JumpStartにグラフベースのクレジットスコアリングソリューションを紹介し、グラフのMLジャーニーを加速するのに役立てています。 ノートブックは、既存の表形式モデルを使用してグラフを変更および活用して、パフォーマンスを向上させることができるパイプラインを提供します。

開始するには、JumpStartのグラフベースのクレジットスコアリングソリューションを見つけることができます。 SageMaker スタジオ.


著者について

Amazon SageMaker JumpStart PlatoBlockchain Data Intelligenceのグラフ機械学習を使用して、企業の信用格付け分類子を構築します。 垂直検索。 愛。サンジブ・ダス博士 アマゾンの学者であり、サンタクララ大学の財務およびデータサイエンスのテリー教授です。 彼は、財務(ニューヨーク大学でM.PhilとPh.D.)とコンピューターサイエンス(UC BerkeleyでMS)の大学院の学位を取得し、アーメダバードのインド経営研究所でMBAを取得しています。 学者になる前は、シティバンクの副社長としてアジア太平洋地域のデリバティブビジネスに従事していました。 彼は金融アプリケーションの分野でマルチモーダル機械学習に取り組んでいます。

Amazon SageMaker JumpStart PlatoBlockchain Data Intelligenceのグラフ機械学習を使用して、企業の信用格付け分類子を構築します。 垂直検索。 愛。XinHuang博士 の応用科学者です Amazon SageMaker ジャンプスタート および AmazonSageMakerの組み込みアルゴリズム。 彼はスケーラブルな機械学習アルゴリズムの開発に焦点を当てています。 彼の研究対象は、自然言語処理、表形式データの深層学習、およびノンパラメトリック時空間クラスタリングの堅牢な分析の分野です。

Amazon SageMaker JumpStart PlatoBlockchain Data Intelligenceのグラフ機械学習を使用して、企業の信用格付け分類子を構築します。 垂直検索。 愛。アデシナ宗司 AWSの応用科学者であり、詐欺や乱用、知識グラフ、レコメンダーシステム、ライフサイエンスへのアプリケーションを使用して、グラフタスクで機械学習を行うためのグラフニューラルネットワークベースのモデルを開発しています。 暇なときは、読書や料理を楽しんでいます。

Amazon SageMaker JumpStart PlatoBlockchain Data Intelligenceのグラフ機械学習を使用して、企業の信用格付け分類子を構築します。 垂直検索。 愛。パトリック・ヤン はAmazonSageMakerのソフトウェア開発エンジニアです。 彼は、顧客向けの機械学習ツールと製品の構築に注力しています。

タイムスタンプ:

より多くの AWS機械学習