使用 Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence 中的图形机器学习构建企业信用评级分类器。 垂直搜索。 哎。

在 Amazon SageMaker JumpStart 中使用图形机器学习构建企业信用评级分类器

今天,我们发布了一个新的金融图机器学习 (ML) 解决方案 亚马逊SageMaker JumpStart. JumpStart 可帮助您快速开始使用 ML,并为最常见的用例提供一组解决方案,只需单击几下即可进行培训和部署。

新的 JumpStart 解决方案(基于图形的信用评分)演示了如何根据 SEC 文件(长文本数据)构建企业网络,将其与财务比率(表格数据)相结合,并使用图形神经网络 (GNN) 来建立信用评级预测模型。 在这篇文章中,我们将解释如何使用这种完全可定制的信用评分解决方案,从而加快您的图机器学习之旅。 Graph ML 正在成为金融 ML 的一个富有成果的领域,因为它可以将网络数据与传统的表格数据集结合使用。 有关详细信息,请参阅 WSDM 上的亚马逊:图神经网络的未来.

解决方案概述

您可以通过利用有关业务联系的数据来提高信用评分,您可以为此构建一个图表,在此解决方案中表示为 CorpNet(公司网络的缩写)。 然后,您可以使用此图上的 GNN 和节点的表格特征集应用图 ML 分类,以查看是否可以通过进一步利用网络关系中的信息来构建更好的 ML 模型。 因此,该解决方案为利用网络数据的业务模型提供了模板,例如使用供应链关系图、社交网络图等。

该解决方案通过构建企业网络和生成合成财务数据来开发几个新工件,并结合这两种形式的数据以使用图 ML 创建模型。

该解决方案展示了如何使用 SEC 10-K/Q 文件中的 MD&A 部分构建互联公司网络。 具有类似前瞻性陈述的公司可能与信用事件有关。 这些连接用图表表示。 对于图节点特征,该解决方案使用 Altman Z-score 模型中的变量和每个公司的行业类别。 这些是在可用于演示目的的合成数据集中提供的。 图形数据和表格数据用于拟合使用 GNN 的评级分类器。 出于说明目的,我们比较了有和没有图表信息的模型的性能。

使用基于图表的信用评分解决方案

要开始使用 JumpStart,请参阅 开始使用 Amazon SageMaker. 基于图形的信用评分解决方案的 JumpStart 卡可通过以下方式获得 亚马逊SageMaker Studio.

使用 Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence 中的图形机器学习构建企业信用评级分类器。 垂直搜索。 哎。

  1. 选择型号卡,然后选择 实行 启动解决方案。
    使用 Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence 中的图形机器学习构建企业信用评级分类器。 垂直搜索。 哎。

该解决方案生成一个推理模型和一个与笔记本一起使用的端点。

  1. 等到他们准备好并且状态显示为 Complete.
  2. 打开笔记本 打开第一个笔记本,用于训练和端点部署。
    使用 Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence 中的图形机器学习构建企业信用评级分类器。 垂直搜索。 哎。

您可以通过此笔记本了解如何使用此解决方案,然后根据您自己的数据为其他应用程序修改它。 该解决方案附带合成数据,并使用其中的一个子集来举例说明训练模型所需的步骤,将其部署到端点,然后调用端点进行推理。 该笔记本还包含用于部署您自己的端点的代码。

  1. 要打开第二个笔记本(用于推理),请选择 在笔记本中使用端点 在端点工件旁边。

在此笔记本中,您可以了解如何准备数据以调用示例端点以对一批示例执行推理。
使用 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 S3) 并为 CorpNet 创建源和目标节点列表。
  2. 读入图节点特征集(训练和测试)。 根据需要规范化数据。
  3. 设置可调的超参数。 调用运行 PyTorch 的专用图 ML 容器以适应 GNN,无需超参数优化 (HPO)。
  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分数 中华民国 准确性 中冶 平衡精度 平台精度 记得
自动胶 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 为 Matthews 相关系数; https://en.wikipedia.org/wiki/Phi_coefficient.)

清理

使用完此笔记本后,请删除模型工件和其他资源以避免产生更多费用。 您需要手动删除在运行 notebook 时可能创建的资源,例如用于模型工件、训练数据集、处理工件和 亚马逊CloudWatch 日志组。

总结

在这篇文章中,我们在 JumpStart 中介绍了基于图的信用评分解决方案,以帮助您加快图 ML 之旅。 Notebook 提供了一个管道,您可以使用现有的表格模型修改和利用图形以获得更好的性能。

要开始使用,您可以在 JumpStart 中找到基于图形的信用评分解决方案 SageMaker 工作室.


作者简介

使用 Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence 中的图形机器学习构建企业信用评级分类器。 垂直搜索。 哎。桑吉夫·达斯博士 是亚马逊学者和圣克拉拉大学金融与数据科学特里教授。 他拥有金融学(纽约大学哲学硕士和博士学位)和计算机科学(加州大学伯克利分校理学硕士)的研究生学位,以及艾哈迈达巴德印度管理学院的 MBA 学位。 在成为一名学者之前,他曾在花旗银行担任亚太地区的衍生品业务副总裁。 他致力于金融应用领域的多模式机器学习。

使用 Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence 中的图形机器学习构建企业信用评级分类器。 垂直搜索。 哎。黄鑫博士 是一名应用科学家 亚马逊SageMaker JumpStartAmazon SageMaker 内置算法. 他专注于开发可扩展的机器学习算法。 他的研究兴趣是自然语言处理、表格数据的深度学习以及非参数时空聚类的稳健分析。

使用 Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence 中的图形机器学习构建企业信用评级分类器。 垂直搜索。 哎。索吉·阿德西纳 是 AWS 的一名应用科学家,在那里他开发了基于图神经网络的模型,用于在图任务上进行机器学习,并应用于欺诈和滥用、知识图谱、推荐系统和生命科学。 在业余时间,他喜欢阅读和烹饪。

使用 Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence 中的图形机器学习构建企业信用评级分类器。 垂直搜索。 哎。帕特里克·杨 是 Amazon SageMaker 的软件开发工程师。 他专注于为客户构建机器学习工具和产品。

时间戳记:

更多来自 AWS机器学习