Créez un classificateur de notations de crédit d'entreprise à l'aide de l'apprentissage automatique graphique dans Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Créer un classificateur de notations de crédit d'entreprise à l'aide de l'apprentissage automatique de graphes dans Amazon SageMaker JumpStart

Aujourd'hui, nous lançons une nouvelle solution pour l'apprentissage automatique (ML) des graphes financiers dans Amazon SageMaker JumpStart. JumpStart vous aide à démarrer rapidement avec le ML et fournit un ensemble de solutions pour les cas d'utilisation les plus courants qui peuvent être formées et déployées en quelques clics seulement.

La nouvelle solution JumpStart (Graph-Based Credit Scoring) montre comment construire un réseau d'entreprise à partir de documents déposés auprès de la SEC (données textuelles longues), combiner cela avec des ratios financiers (données tabulaires) et utiliser des réseaux de neurones graphiques (GNN) pour créer du crédit. modèles de prédiction de notation. Dans cet article, nous expliquons comment vous pouvez utiliser cette solution entièrement personnalisable pour la notation de crédit, afin d'accélérer votre parcours de ML graphique. Graph ML devient un domaine fructueux pour le ML financier car il permet l'utilisation de données réseau en conjonction avec des ensembles de données tabulaires traditionnels. Pour plus d'informations, voir Amazon au WSDM : l'avenir des réseaux de neurones graphiques.

Vue d'ensemble de la solution

Vous pouvez améliorer la notation de crédit en exploitant les données sur les liens commerciaux, pour lesquels vous pouvez construire un graphique, noté CorpNet (abréviation de réseau d'entreprise) dans cette solution. Vous pouvez ensuite appliquer la classification ML du graphique à l'aide de GNN sur ce graphique et d'un ensemble de fonctionnalités tabulaires pour les nœuds, pour voir si vous pouvez créer un meilleur modèle ML en exploitant davantage les informations dans les relations réseau. Par conséquent, cette solution propose un modèle pour les modèles commerciaux qui exploitent les données du réseau, par exemple en utilisant des graphiques de relations avec la chaîne d'approvisionnement, des graphiques de réseaux sociaux, etc.

La solution développe plusieurs nouveaux artefacts en construisant un réseau d'entreprise et en générant des données financières synthétiques, et combine les deux formes de données pour créer des modèles à l'aide de graph ML.

La solution montre comment construire un réseau d'entreprises connectées à l'aide de la section MD&A des dépôts SEC 10-K/Q. Les sociétés ayant des déclarations prospectives similaires seront probablement liées à des événements de crédit. Ces connexions sont représentées dans un graphique. Pour les fonctionnalités des nœuds graphiques, la solution utilise les variables du modèle Altman Z-score et la catégorie industrielle de chaque entreprise. Celles-ci sont fournies dans un ensemble de données synthétiques mis à disposition à des fins de démonstration. Les données graphiques et les données tabulaires sont utilisées pour ajuster un classificateur de notation à l'aide de GNN. À des fins d'illustration, nous comparons les performances des modèles avec et sans les informations graphiques.

Utilisez la solution de notation de crédit basée sur un graphique

Pour commencer à utiliser JumpStart, consultez Premiers pas avec Amazon SageMaker. La carte JumpStart pour la solution Graph-Based Credit Scoring est disponible via Amazon SageMakerStudio.

Créez un classificateur de notations de crédit d'entreprise à l'aide de l'apprentissage automatique graphique dans Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

  1. Choisissez la carte modèle, puis choisissez Lancement pour initier la solution.
    Créez un classificateur de notations de crédit d'entreprise à l'aide de l'apprentissage automatique graphique dans Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

La solution génère un modèle d'inférence et un point de terminaison à utiliser avec un notebook.

  1. Attendez qu'ils soient prêts et que l'état s'affiche comme suit : Complete.
  2. Selectionnez Cahier ouvert pour ouvrir le premier bloc-notes, destiné à la formation et au déploiement des points de terminaison.
    Créez un classificateur de notations de crédit d'entreprise à l'aide de l'apprentissage automatique graphique dans Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Vous pouvez parcourir ce cahier pour apprendre à utiliser cette solution, puis la modifier pour d'autres applications sur vos propres données. La solution est fournie avec des données synthétiques et en utilise un sous-ensemble pour illustrer les étapes nécessaires pour entraîner le modèle, le déployer sur un point de terminaison, puis appeler le point de terminaison pour l'inférence. Le bloc-notes contient également du code pour déployer votre propre point de terminaison.

  1. Pour ouvrir le deuxième bloc-notes (utilisé pour l'inférence), choisissez Utiliser le point de terminaison dans Notebook à côté de l’artefact du point de terminaison.

Dans ce bloc-notes, vous pouvez voir comment préparer les données pour appeler l'exemple de point de terminaison afin d'effectuer une inférence sur un lot d'exemples.
Créez un classificateur de notations de crédit d'entreprise à l'aide de l'apprentissage automatique graphique dans Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Le point de terminaison renvoie les notes prévues, qui sont utilisées pour évaluer les performances du modèle, comme illustré dans la capture d'écran suivante du dernier bloc de code du bloc-notes d'inférence.
Créez un classificateur de notations de crédit d'entreprise à l'aide de l'apprentissage automatique graphique dans Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Vous pouvez utiliser cette solution comme modèle pour un modèle de notation de crédit amélioré par un graphique. Vous n'êtes pas limité aux fonctionnalités définies dans cet exemple : vous pouvez modifier à la fois les données graphiques et les données tabulaires pour votre propre cas d'utilisation. L’étendue des modifications de code requises est minime. Nous vous recommandons de consulter notre exemple de modèle pour comprendre la structure de la solution, puis de la modifier si nécessaire.

Cette solution est uniquement à des fins de démonstration. Il ne s’agit pas de conseils financiers et ne doivent pas être considérés comme des conseils financiers ou d’investissement. Les notebooks associés, y compris le modèle entraîné, utilisent des données synthétiques et ne sont pas destinés à une utilisation en production. Bien que le texte des documents déposés auprès de la SEC soit utilisé, les données financières sont générées de manière synthétique et aléatoire et n’ont aucun rapport avec les véritables données financières d’une entreprise. Par conséquent, les notes générées synthétiquement n’ont aucun rapport avec la véritable note d’une entreprise réelle.

Données utilisées dans la solution

L'ensemble de données contient des données tabulaires synthétiques telles que divers ratios comptables (numériques) et codes industriels (catégoriques). L'ensemble de données a 𝑁=3286 lignes. Des étiquettes de notation sont également ajoutées. Ce sont les fonctionnalités de nœud à utiliser avec graph ML.

L'ensemble de données contient également un graphique d'entreprise, non orienté et non pondéré. Cette solution permet d'ajuster la structure du graphique en variant la manière dont les liens sont inclus. Chaque entreprise de l'ensemble de données tabulaires est représentée par un nœud dans le graphique d'entreprise. La fonction construct_network_data() aide à construire le graphique, qui comprend des listes de nœuds sources et de nœuds de destination.

Les étiquettes de notation sont utilisées pour la classification à l'aide des GNN, qui peuvent être multicatégories pour toutes les notations ou binaires, divisées entre la catégorie investissement (AAA, AA, A, BBB) et la catégorie non investissement (BB, B, CCC, CC, C, D). D signifie ici par défaut.

Le code complet pour lire les données et exécuter la solution est fourni dans le bloc-notes de la solution. La capture d'écran suivante montre la structure des données tabulaires synthétiques.

Créez un classificateur de notations de crédit d'entreprise à l'aide de l'apprentissage automatique graphique dans Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Les informations du graphique sont transmises au Bibliothèque de graphes profonds et combiné avec les données tabulaires pour entreprendre le graphique ML. Si vous apportez votre propre graphique, fournissez-le simplement sous la forme d'un ensemble de nœuds sources et de nœuds de destination.

Formation de modèle

À titre de comparaison, nous formons d'abord un modèle uniquement sur des données tabulaires en utilisant AutoGluon, imitant l’approche traditionnelle de la notation de crédit des entreprises. Nous ajoutons ensuite les données du graphique et utilisons les GNN pour la formation. Tous les détails sont fournis dans le cahier et un bref aperçu est proposé dans cet article. Le cahier offre également un aperçu rapide du graphique ML avec des références sélectionnées.

La formation du GNN se déroule comme suit. Nous utilisons une adaptation du Modèle GraphSAGE implémenté dans la bibliothèque Deep Graph.

  1. Lire dans les données graphiques de Service de stockage simple Amazon (Amazon S3) et créez les listes de nœuds source et de destination pour CorpNet.
  2. Lisez les ensembles de fonctionnalités du nœud graphique (entraînement et test). Normalisez les données si nécessaire.
  3. Définissez des hyperparamètres réglables. Appelez le conteneur ML de graphes spécialisé exécutant PyTorch pour adapter le GNN sans optimisation des hyperparamètres (HPO).
  4. Répétez le graphique ML avec HPO.

Pour rendre la mise en œuvre simple et stable, nous exécutons la formation du modèle dans un conteneur en utilisant le code suivant (le code de configuration précédant ce code de formation se trouve dans le cahier de solution) :

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

Le processus de formation actuel est entrepris dans un cadre transductif, où les caractéristiques de l'ensemble de données de test (sans compter la colonne cible) sont utilisées pour construire le graphique et, par conséquent, les nœuds de test sont inclus dans le processus de formation. A la fin de la formation, les prédictions sur l'ensemble de données de test sont générées et enregistrées dans output_location dans le compartiment S3.

Même si la formation est transductive, les étiquettes de l'ensemble de données de test ne sont pas utilisées pour la formation, et notre exercice vise à prédire ces étiquettes à l'aide d'intégrations de nœuds pour les nœuds de l'ensemble de données de test. Une fonctionnalité importante de GraphSAGE est que l’apprentissage inductif sur de nouvelles observations qui ne font pas partie du graphique est également possible, bien que non exploité dans cette solution.

Optimisation hyperparamétrique

Cette solution est encore étendue en effectuant HPO sur le GNN. Cela se fait dans SageMaker. Voir le code suivant :

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

Nous mettons ensuite en place l'objectif d'entraînement, pour maximiser le score F1 dans ce cas :

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

Établir l'environnement choisi et les ressources de formation sur 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,
)

Enfin, exécutez la tâche de formation avec l'optimisation des hyperparamètres :

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

Résultats

L'inclusion des données réseau et l'optimisation des hyperparamètres donnent de meilleurs résultats. Les mesures de performances du tableau suivant démontrent l'avantage de l'ajout de CorpNet aux ensembles de données tabulaires standard utilisés pour la notation de crédit.

Les résultats pour AutoGluon n’utilisent pas le graphique, uniquement les données tabulaires. Lorsque nous ajoutons les données graphiques et utilisons HPO, nous obtenons un gain matériel en performances.

Score F1 AUC ROC Précision CMC Précision équilibrée La précision Rappeler
AutoGluon 0.72 0.74323 0.68037 0.35233 0.67323 0.68528 0.75843
GCN sans HPO 0.64 0.84498 0.69406 0.45619 0.71154 0.88177 0.50281
GCN avec HPO 0.81 0.87116 0.78082 0.563 0.77081 0.75119 0.89045

(Remarque : MCC est le coefficient de corrélation de Matthews ; https://en.wikipedia.org/wiki/Phi_coefficient.)

Nettoyer

Une fois que vous avez fini d'utiliser ce bloc-notes, supprimez les artefacts de modèle et les autres ressources pour éviter d'encourir des frais supplémentaires. Vous devez supprimer manuellement les ressources que vous avez peut-être créées lors de l'exécution du notebook, telles que les compartiments S3 pour les artefacts de modèle, les ensembles de données de formation, les artefacts de traitement et Amazon Cloud Watch groupes de journaux.

Résumé

Dans cet article, nous avons présenté une solution de notation de crédit basée sur des graphiques dans JumpStart pour vous aider à accélérer votre parcours de ML graphique. Le notebook fournit un pipeline que vous pouvez modifier et exploiter des graphiques avec des modèles tabulaires existants pour obtenir de meilleures performances.

Pour commencer, vous pouvez trouver la solution Graph-Based Credit Scoring dans JumpStart en Studio SageMaker.


À propos des auteurs

Créez un classificateur de notations de crédit d'entreprise à l'aide de l'apprentissage automatique graphique dans Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Dr Sanjiv Das est Amazon Scholar et professeur Terry de finance et de science des données à l'Université de Santa Clara. Il est titulaire de diplômes d'études supérieures en finance (M.Phil et Ph.D. de l'Université de New York) et en informatique (M.S. de l'UC Berkeley), ainsi que d'un MBA de l'Institut indien de gestion d'Ahmedabad. Avant de devenir universitaire, il a travaillé dans le secteur des produits dérivés dans la région Asie-Pacifique en tant que vice-président chez Citibank. Il travaille sur l'apprentissage automatique multimodal dans le domaine des applications financières.

Créez un classificateur de notations de crédit d'entreprise à l'aide de l'apprentissage automatique graphique dans Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Dr Xin Huang est un scientifique appliqué pour Amazon SageMaker JumpStart ainsi que le Algorithmes intégrés d'Amazon SageMaker. Il se concentre sur le développement d’algorithmes d’apprentissage automatique évolutifs. Ses intérêts de recherche portent sur les domaines du traitement du langage naturel, de l'apprentissage profond sur des données tabulaires et de l'analyse robuste du regroupement spatio-temporel non paramétrique.

Créez un classificateur de notations de crédit d'entreprise à l'aide de l'apprentissage automatique graphique dans Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Soji Adeshina est un scientifique appliqué chez AWS, où il développe des modèles basés sur des réseaux neuronaux graphiques pour l'apprentissage automatique sur des tâches graphiques avec des applications sur la fraude et les abus, les graphiques de connaissances, les systèmes de recommandation et les sciences de la vie. Dans ses temps libres, il aime lire et cuisiner.

Créez un classificateur de notations de crédit d'entreprise à l'aide de l'apprentissage automatique graphique dans Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Patrick Yang est ingénieur en développement logiciel chez Amazon SageMaker. Il se concentre sur la création d'outils et de produits d'apprentissage automatique pour les clients.

Horodatage:

Plus de Apprentissage automatique AWS