Crie um classificador de classificações de crédito corporativo usando machine learning de gráfico no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Crie um classificador de classificações de crédito corporativas usando machine learning gráfico no Amazon SageMaker JumpStart

Hoje, estamos lançando uma nova solução para machine learning (ML) de gráficos financeiros em JumpStart do Amazon SageMaker. O JumpStart ajuda você a começar a usar o ML rapidamente e fornece um conjunto de soluções para os casos de uso mais comuns que podem ser treinados e implantados com apenas alguns cliques.

A nova solução JumpStart (Graph-Based Credit Scoring) demonstra como construir uma rede corporativa a partir de arquivamentos da SEC (dados de texto de formato longo), combinar isso com índices financeiros (dados tabulares) e usar redes neurais gráficas (GNNs) para construir crédito modelos de previsão de classificação. Neste post, explicamos como você pode usar essa solução totalmente personalizável para pontuação de crédito, para acelerar sua jornada de ML do gráfico. O Graph ML está se tornando uma área frutífera para o ML financeiro porque permite o uso de dados de rede em conjunto com conjuntos de dados tabulares tradicionais. Para mais informações, veja Amazon no WSDM: O futuro das redes neurais gráficas.

Visão geral da solução

Você pode melhorar a pontuação de crédito explorando dados sobre vínculos de negócios, para os quais você pode construir um gráfico, denotado como CorpNet (abreviação de rede corporativa) nesta solução. Você pode então aplicar a classificação de ML de gráfico usando GNNs neste gráfico e um conjunto de recursos tabulares para os nós, para ver se pode construir um modelo de ML melhor explorando ainda mais as informações nos relacionamentos de rede. Portanto, esta solução oferece um modelo para modelos de negócios que exploram dados de rede, como o uso de gráficos de relacionamento da cadeia de suprimentos, gráficos de redes sociais e muito mais.

A solução desenvolve vários novos artefatos construindo uma rede corporativa e gerando dados financeiros sintéticos, e combina as duas formas de dados para criar modelos usando ML de gráfico.

A solução mostra como construir uma rede de empresas conectadas usando a seção MD&A dos arquivamentos SEC 10-K/Q. As empresas com declarações prospectivas semelhantes provavelmente estarão conectadas para eventos de crédito. Essas conexões são representadas em um gráfico. Para recursos de nó de gráfico, a solução usa as variáveis ​​do modelo Altman Z-score e a categoria do setor de cada empresa. Estes são fornecidos em um conjunto de dados sintético disponibilizado para fins de demonstração. Os dados do gráfico e os dados tabulares são usados ​​para ajustar um classificador de classificação usando GNNs. Para fins ilustrativos, comparamos o desempenho dos modelos com e sem as informações do gráfico.

Use a solução Graph-Based Credit Scoring

Para começar a usar o JumpStart, consulte Introdução ao Amazon SageMaker. O cartão JumpStart para a solução Graph-Based Credit Scoring está disponível através Estúdio Amazon SageMaker.

Crie um classificador de classificações de crédito corporativo usando machine learning de gráfico no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

  1. Escolha o cartão modelo e, em seguida, escolha Apresentação livro para iniciar a solução.
    Crie um classificador de classificações de crédito corporativo usando machine learning de gráfico no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

A solução gera um modelo para inferência e um endpoint para usar com um notebook.

  1. Aguarde até que eles estejam prontos e o status seja exibido como Complete.
  2. Escolha Abra o Notebook para abrir o primeiro notebook, que é para treinamento e implantação de endpoint.
    Crie um classificador de classificações de crédito corporativo usando machine learning de gráfico no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Você pode trabalhar com este notebook para aprender a usar essa solução e modificá-la para outros aplicativos em seus próprios dados. A solução vem com dados sintéticos e usa um subconjunto deles para exemplificar as etapas necessárias para treinar o modelo, implantá-lo em um endpoint e, em seguida, invocar o endpoint para inferência. O notebook também contém código para implantar um endpoint próprio.

  1. Para abrir o segundo notebook (usado para inferência), escolha Usar endpoint no notebook ao lado do artefato do terminal.

Neste notebook, você pode ver como preparar os dados para invocar o endpoint de exemplo para realizar inferência em um lote de exemplos.
Crie um classificador de classificações de crédito corporativo usando machine learning de gráfico no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

O endpoint retorna classificações previstas, que são usadas para avaliar o desempenho do modelo, conforme mostrado na captura de tela a seguir do último bloco de código do notebook de inferência.
Crie um classificador de classificações de crédito corporativo usando machine learning de gráfico no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Você pode usar esta solução como um modelo para um modelo de classificação de crédito aprimorado por gráficos. Você não está restrito ao conjunto de recursos neste exemplo — você pode alterar os dados do gráfico e os dados tabulares para seu próprio caso de uso. A extensão das alterações de código necessárias é mínima. Recomendamos trabalhar com nosso exemplo de modelo para entender a estrutura da solução e modificá-la conforme necessário.

Esta solução é apenas para fins demonstrativos. Não é aconselhamento financeiro e não deve ser considerado como aconselhamento financeiro ou de investimento. Os notebooks associados, incluindo o modelo treinado, usam dados sintéticos e não se destinam ao uso em produção. Embora o texto dos arquivos da SEC seja usado, os dados financeiros são gerados de forma sintética e aleatória e não têm relação com as finanças verdadeiras de nenhuma empresa. Portanto, os ratings gerados sinteticamente também não têm relação com o rating real de nenhuma empresa real.

Dados usados ​​na solução

O conjunto de dados possui dados tabulares sintéticos, como vários índices contábeis (numéricos) e códigos do setor (categóricos). O conjunto de dados tem 𝑁=3286 linhas. Etiquetas de classificação também são adicionadas. Esses são os recursos de nó a serem usados ​​com o gráfico ML.

O conjunto de dados também contém um gráfico corporativo, que é não direcionado e não ponderado. Esta solução permite ajustar a estrutura do gráfico variando a forma como os links são incluídos. Cada empresa no conjunto de dados tabular é representada por um nó no gráfico corporativo. A função construct_network_data() ajuda a construir o gráfico, que inclui listas de nós de origem e nós de destino.

Os rótulos de rating são usados ​​para classificação usando GNNs, que podem ser multicategorias para todos os ratings ou binários, divididos entre grau de investimento (AAA, AA, A, BBB) e grau de não investimento (BB, B, CCC, CC, C, D). D aqui significa default.

O código completo para ler os dados e executar a solução é fornecido no bloco de anotações da solução. A captura de tela a seguir mostra a estrutura dos dados tabulares sintéticos.

Crie um classificador de classificações de crédito corporativo usando machine learning de gráfico no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

As informações do gráfico são passadas para o Biblioteca Deep Graph e combinado com os dados tabulares para realizar o gráfico ML. Se você trouxer seu próprio gráfico, simplesmente forneça-o como um conjunto de nós de origem e nós de destino.

Treinamento de modelo

Para comparação, primeiro treinamos um modelo apenas em dados tabulares usando AutoGlúon, imitando a abordagem tradicional de classificação de crédito das empresas. Em seguida, adicionamos os dados do gráfico e usamos GNNs para treinamento. Detalhes completos são fornecidos no notebook, e uma breve visão geral é oferecida neste post. O notebook também oferece uma visão geral rápida do gráfico ML com referências selecionadas.

O treinamento da GNN é realizado da seguinte forma. Usamos uma adaptação do Modelo GraphSAGE implementado na Deep Graph Library.

  1. Leia os dados do gráfico de Serviço de armazenamento simples da Amazon (Amazon S3) e crie as listas de nós de origem e destino para CorpNet.
  2. Leia nos conjuntos de recursos do nó do gráfico (treinar e testar). Normalize os dados conforme necessário.
  3. Defina hiperparâmetros ajustáveis. Chame o contêiner de ML de gráfico especializado executando o PyTorch para ajustar o GNN sem otimização de hiperparâmetro (HPO).
  4. Repita o gráfico ML com HPO.

Para tornar a implementação simples e estável, executamos o treinamento do modelo em um contêiner usando o seguinte código (o código de configuração anterior a esse código de treinamento está no notebook da solução):

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})

O processo de treinamento atual é realizado em uma configuração transdutiva, onde os recursos do conjunto de dados de teste (não incluindo a coluna de destino) são usados ​​para construir o gráfico e, portanto, os nós de teste são incluídos no processo de treinamento. No final do treinamento, as previsões no conjunto de dados de teste são geradas e salvas em output_location no balde S3.

Embora o treinamento seja transdutivo, os rótulos do conjunto de dados de teste não são usados ​​para treinamento, e nosso exercício visa prever esses rótulos usando embeddings de nós para os nós do conjunto de dados de teste. Uma característica importante do GraphSAGE é que o aprendizado indutivo em novas observações que não fazem parte do gráfico também é possível, embora não explorado nesta solução.

Otimização de hiperparâmetros

Esta solução é estendida ainda mais com a realização de HPO no GNN. Isso é feito dentro do SageMaker. Veja o seguinte código:

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),
}

Em seguida, configuramos o objetivo de treinamento, para maximizar a pontuação da F1 neste caso:

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

Estabeleça o ambiente escolhido e os recursos de treinamento no 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,
)

Por fim, execute o job de treinamento com otimização de hiperparâmetros:

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

Resultados

A inclusão de dados de rede e otimização de hiperparâmetros produz melhores resultados. As métricas de desempenho na tabela a seguir demonstram o benefício de adicionar CorpNet a conjuntos de dados tabulares padrão usados ​​para pontuação de crédito.

Os resultados para AutoGluon não usam o gráfico, apenas os dados tabulares. Quando adicionamos os dados do gráfico e usamos HPO, obtemos um ganho material no desempenho.

Pontuação F1 ROC AUC Precisão MCC Precisão equilibrada Precisão Recordar
AutoGlúon 0.72 0.74323 0.68037 0.35233 0.67323 0.68528 0.75843
GCN sem HPO 0.64 0.84498 0.69406 0.45619 0.71154 0.88177 0.50281
GCN com HPO 0.81 0.87116 0.78082 0.563 0.77081 0.75119 0.89045

(Nota: MCC é o Coeficiente de Correlação de Matthews; https://en.wikipedia.org/wiki/Phi_coefficient.)

limpar

Após terminar de usar este notebook, exclua os artefatos do modelo e outros recursos para evitar cobranças adicionais. Você precisa excluir manualmente os recursos que pode ter criado durante a execução do notebook, como buckets do S3 para artefatos de modelo, conjuntos de dados de treinamento, artefatos de processamento e Amazon CloudWatch grupos de logs.

Resumo

Neste post, apresentamos uma solução de pontuação de crédito baseada em gráficos no JumpStart para ajudá-lo a acelerar sua jornada de ML de gráficos. O notebook fornece um pipeline que você pode modificar e explorar gráficos com modelos tabulares existentes para obter melhor desempenho.

Para começar, você pode encontrar a solução Graph-Based Credit Scoring no JumpStart em Estúdio SageMaker.


Sobre os autores

Crie um classificador de classificações de crédito corporativo usando machine learning de gráfico no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Dr. é Amazon Scholar e Terry Professor of Finance and Data Science na Santa Clara University. Possui pós-graduação em Finanças (M.Phil e Ph.D. pela New York University) e Ciência da Computação (MS pela UC Berkeley) e MBA pelo Indian Institute of Management, Ahmedabad. Antes de se tornar um acadêmico, ele trabalhou no negócio de derivativos na região da Ásia-Pacífico como vice-presidente do Citibank. Ele trabalha em aprendizado de máquina multimodal na área de aplicações financeiras.

Crie um classificador de classificações de crédito corporativo usando machine learning de gráfico no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Dr.Xin Huang é um Cientista Aplicado para JumpStart do Amazon SageMaker e Algoritmos integrados do Amazon SageMaker. Ele se concentra no desenvolvimento de algoritmos de aprendizado de máquina escaláveis. Seus interesses de pesquisa estão nas áreas de processamento de linguagem natural, aprendizado profundo em dados tabulares e análise robusta de agrupamento não paramétrico de espaço-tempo.

Crie um classificador de classificações de crédito corporativo usando machine learning de gráfico no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Soji Adeshina é um Cientista Aplicado na AWS, onde desenvolve modelos baseados em redes neurais gráficas para aprendizado de máquina em tarefas de gráficos com aplicativos para fraude e abuso, gráficos de conhecimento, sistemas de recomendação e ciências da vida. Nas horas vagas, gosta de ler e cozinhar.

Crie um classificador de classificações de crédito corporativo usando machine learning de gráfico no Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Patrick Yang é engenheiro de desenvolvimento de software na Amazon SageMaker. Ele se concentra na criação de ferramentas e produtos de aprendizado de máquina para os clientes.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS