Byg en virksomheds kreditvurderingsklassificering ved hjælp af grafmaskineindlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Byg en klassificering af virksomhedens kreditvurderinger ved hjælp af grafisk maskinlæring i Amazon SageMaker JumpStart

I dag udgiver vi en ny løsning til finansiel grafmaskineindlæring (ML) i Amazon SageMaker JumpStart. JumpStart hjælper dig med hurtigt at komme i gang med ML og giver et sæt løsninger til de mest almindelige use cases, der kan trænes og implementeres med blot et par klik.

Den nye JumpStart-løsning (Graph-Based Credit Scoring) viser, hvordan man konstruerer et virksomhedsnetværk ud fra SEC-arkiveringer (langformede tekstdata), kombinerer dette med økonomiske nøgletal (tabeldata) og bruger grafiske neurale netværk (GNN'er) til at opbygge kredit. vurderingsforudsigelsesmodeller. I dette indlæg forklarer vi, hvordan du kan bruge denne fuldt tilpassede løsning til kreditvurdering, så du kan accelerere din graf-ML-rejse. Graph ML er ved at blive et frugtbart område for finansiel ML, fordi det muliggør brugen af ​​netværksdata i forbindelse med traditionelle tabeldatasæt. For mere information, se Amazon på WSDM: Fremtiden for grafiske neurale netværk.

Løsningsoversigt

Du kan forbedre kreditscoring ved at udnytte data om forretningsforbindelser, for hvilke du kan konstruere en graf, betegnet som CorpNet (en forkortelse for corporate network) i denne løsning. Du kan derefter anvende graf-ML-klassificering ved hjælp af GNN'er på denne graf og et tabelfunktionssæt for noderne for at se, om du kan bygge en bedre ML-model ved yderligere at udnytte informationen i netværksrelationer. Derfor tilbyder denne løsning en skabelon til forretningsmodeller, der udnytter netværksdata, såsom brug af grafer for forsyningskædeforhold, sociale netværksgrafer og mere.

Løsningen udvikler flere nye artefakter ved at konstruere et virksomhedsnetværk og generere syntetiske økonomiske data og kombinerer begge former for data for at skabe modeller ved hjælp af graf ML.

Løsningen viser, hvordan man konstruerer et netværk af forbundne virksomheder ved hjælp af MD&A-sektionen fra SEC 10-K/Q-arkiver. Virksomheder med lignende fremadrettede udsagn vil sandsynligvis blive forbundet til kreditbegivenheder. Disse forbindelser er repræsenteret i en graf. Til grafknudefunktioner bruger løsningen variablerne i Altman Z-score-modellen og branchekategorien for hver virksomhed. Disse leveres i et syntetisk datasæt, der er tilgængeligt til demonstrationsformål. Grafdataene og tabeldataene bruges til at passe til en klassificeringsklassificering ved hjælp af GNN'er. Til illustrative formål sammenligner vi ydeevnen af ​​modeller med og uden grafoplysningerne.

Brug den grafbaserede kreditscoringsløsning

For at begynde at bruge JumpStart, se Kom godt i gang med Amazon SageMaker. JumpStart-kortet til den grafbaserede kreditscoringsløsning er tilgængelig via Amazon SageMaker Studio.

Byg en virksomheds kreditvurderingsklassificering ved hjælp af grafmaskineindlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

  1. Vælg modelkortet, og vælg derefter Launch at igangsætte løsningen.
    Byg en virksomheds kreditvurderingsklassificering ved hjælp af grafmaskineindlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Løsningen genererer en slutningsmodel og et slutpunkt til brug med en notesbog.

  1. Vent, indtil de er klar, og status viser som Complete.
  2. Vælg Åbn Notesbog for at åbne den første notesbog, som er til træning og implementering af slutpunkter.
    Byg en virksomheds kreditvurderingsklassificering ved hjælp af grafmaskineindlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Du kan arbejde gennem denne notesbog for at lære, hvordan du bruger denne løsning og derefter ændre den til andre applikationer på dine egne data. Løsningen leveres med syntetiske data og bruger en delmængde af dem til at eksemplificere de trin, der er nødvendige for at træne modellen, implementere den til et slutpunkt og derefter kalde slutpunktet til inferens. Notesbogen indeholder også kode til at implementere dit eget slutpunkt.

  1. For at åbne den anden notesbog (bruges til slutning), skal du vælge Brug Endpoint i Notebook ved siden af ​​endepunktsartefakten.

I denne notesbog kan du se, hvordan du forbereder dataene til at påkalde eksempelendepunktet for at udføre slutninger på en batch af eksempler.
Byg en virksomheds kreditvurderingsklassificering ved hjælp af grafmaskineindlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Endepunktet returnerer forudsagte vurderinger, som bruges til at vurdere modellens ydeevne, som vist i det følgende skærmbillede af den sidste kodeblok i inferensnotebooken.
Byg en virksomheds kreditvurderingsklassificering ved hjælp af grafmaskineindlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Du kan bruge denne løsning som skabelon til en grafforbedret kreditvurderingsmodel. Du er ikke begrænset til funktionssættet i dette eksempel – du kan ændre både grafdata og tabeldata til dit eget brug. Omfanget af nødvendige kodeændringer er minimalt. Vi anbefaler at gennemgå vores skabeloneksempel for at forstå strukturen af ​​løsningen og derefter ændre den efter behov.

Denne løsning er kun til demonstrationsformål. Det er ikke finansiel rådgivning og bør ikke påberåbes som finansiel eller investeringsrådgivning. De tilknyttede notebooks, inklusive den trænede model, bruger syntetiske data og er ikke beregnet til produktionsbrug. Selvom tekst fra SEC-arkivering bruges, er de finansielle data syntetisk og tilfældigt genereret og har ingen relation til nogen virksomheds sande økonomi. Derfor har de syntetisk genererede ratings heller ikke nogen relation til nogen reel virksomheds sande rating.

Data brugt i løsningen

Datasættet har syntetiske tabeldata såsom forskellige regnskabsforhold (numeriske) og branchekoder (kategoriske). Datasættet har 𝑁=3286 rækker. Klassificeringsetiketter er også tilføjet. Dette er de nodefunktioner, der skal bruges med graf ML.

Datasættet indeholder også en virksomhedsgraf, som er urettet og uvægtet. Denne løsning giver dig mulighed for at justere strukturen af ​​grafen ved at variere den måde, hvorpå links indgår. Hver virksomhed i tabeldatasættet er repræsenteret af en node i virksomhedsgrafen. Funktionen construct_network_data() hjælper med at konstruere grafen, som omfatter lister over kildenoder og destinationsknuder.

Ratingetiketter bruges til klassificering ved hjælp af GNN'er, som kan være multikategorier for alle vurderinger eller binære, opdelt mellem investeringsgrad (AAA, AA, A, BBB) og ikke-investeringsgrad (BB, B, CCC, CC, C, D). D står her for defaulted.

Den komplette kode til at læse dataene og køre løsningen findes i løsningens notesbog. Følgende skærmbillede viser strukturen af ​​de syntetiske tabeldata.

Byg en virksomheds kreditvurderingsklassificering ved hjælp af grafmaskineindlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Grafinformationen videregives til Deep Graph Library og kombineret med tabeldataene til at foretage graf ML. Hvis du medbringer din egen graf, skal du blot levere den som et sæt kildenoder og destinationsknuder.

Model træning

Til sammenligning træner vi først en model kun på tabeldata vha AutoGluon, der efterligner den traditionelle tilgang til kreditvurdering af virksomheder. Vi tilføjer derefter grafdata og bruger GNN'er til træning. Fuldstændige detaljer er angivet i notesbogen, og en kort oversigt tilbydes i dette indlæg. Notesbogen giver også et hurtigt overblik over graf ML med udvalgte referencer.

Træning af GNN udføres som følger. Vi bruger en tilpasning af GraphSAGE model implementeret i Deep Graph Library.

  1. Læs grafdata fra Amazon Simple Storage Service (Amazon S3) og opret kilde- og destinationsknudelisterne for CorpNet.
  2. Læs grafknudefunktionssættene (træn og test). Normaliser dataene efter behov.
  3. Indstil afstembare hyperparametre. Kald den specialiserede graf ML-beholder, der kører PyTorch, så den passer til GNN uden hyperparameteroptimering (HPO).
  4. Gentag graf ML med HPO.

For at gøre implementeringen ligetil og stabil kører vi modeltræning i en container ved hjælp af følgende kode (opsætningskoden forud for denne træningskode er i løsningsnotesbogen):

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

Den aktuelle træningsproces udføres i en transduktiv indstilling, hvor funktionerne i testdatasættet (ikke inklusive målkolonnen) bruges til at konstruere grafen, og testknudepunkterne er derfor inkluderet i træningsprocessen. Ved afslutningen af ​​træningen genereres og gemmes forudsigelserne på testdatasættet output_location i S3 spanden.

Selvom træningen er transduktiv, bruges etiketterne på testdatasættet ikke til træning, og vores øvelse er rettet mod at forudsige disse etiketter ved hjælp af nodeindlejringer til testdatasætnoder. Et vigtigt træk ved GraphSAGE er, at induktiv læring på nye observationer, der ikke er en del af grafen, også er mulig, selvom den ikke udnyttes i denne løsning.

Hyperparameter optimering

Denne løsning udvides yderligere ved at udføre HPO på GNN. Dette gøres i SageMaker. Se følgende kode:

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

Vi satte derefter træningsmålet op for at maksimere F1-score i dette tilfælde:

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

Etabler det valgte miljø og træningsressourcer på 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,
)

Kør endelig træningsjobbet med hyperparameteroptimering:

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

Resultater

Inkluderingen af ​​netværksdata og hyperparameteroptimering giver forbedrede resultater. Ydeevnemålingerne i følgende tabel viser fordelen ved at tilføje CorpNet til standarddatasæt i tabelform, der bruges til kreditvurdering.

Resultaterne for AutoGluon bruger ikke grafen, kun tabeldataene. Når vi tilføjer grafdata og bruger HPO, får vi en væsentlig gevinst i ydeevne.

F1 score ROC AUC Nøjagtighed MCC Balanceret nøjagtighed Precision Recall
AutoGluon 0.72 0.74323 0.68037 0.35233 0.67323 0.68528 0.75843
GCN Uden HPO 0.64 0.84498 0.69406 0.45619 0.71154 0.88177 0.50281
GCN med HPO 0.81 0.87116 0.78082 0.563 0.77081 0.75119 0.89045

(Bemærk: MCC er Matthews korrelationskoefficient; https://en.wikipedia.org/wiki/Phi_coefficient.)

Ryd op

Når du er færdig med at bruge denne notesbog, skal du slette modelartefakter og andre ressourcer for at undgå at pådrage dig yderligere omkostninger. Du skal manuelt slette ressourcer, som du muligvis har oprettet, mens du kørte notesbogen, såsom S3-bøtter til modelartefakter, træningsdatasæt, behandlingsartefakter og amazoncloudwatch log grupper.

Resumé

I dette indlæg introducerede vi en grafbaseret kreditvurderingsløsning i JumpStart for at hjælpe dig med at accelerere din graf-ML-rejse. Notebook'en giver en pipeline, som du kan ændre og udnytte grafer med eksisterende tabelmodeller for at opnå bedre ydeevne.

For at komme i gang kan du finde den grafbaserede kreditscoringsløsning i JumpStart in SageMaker Studio.


Om forfatterne

Byg en virksomheds kreditvurderingsklassificering ved hjælp af grafmaskineindlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Dr. Sanjiv Das er Amazon Scholar og Terry-professor i finans- og datavidenskab ved Santa Clara University. Han har postgraduate grader i finans (M.Phil og Ph.D. fra New York University) og Computer Science (MS fra UC Berkeley) og en MBA fra Indian Institute of Management, Ahmedabad. Før han blev akademiker, arbejdede han i derivatbranchen i Asien-Stillehavsområdet som Vice President hos Citibank. Han arbejder med multimodal maskinlæring inden for finansielle applikationer.

Byg en virksomheds kreditvurderingsklassificering ved hjælp af grafmaskineindlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Dr. Xin Huang er anvendt videnskabsmand for Amazon SageMaker JumpStart , Amazon SageMaker indbyggede algoritmer. Han fokuserer på at udvikle skalerbare maskinlæringsalgoritmer. Hans forskningsinteresser er inden for områderne naturlig sprogbehandling, dyb læring på tabeldata og robust analyse af ikke-parametrisk rum-tid-klynger.

Byg en virksomheds kreditvurderingsklassificering ved hjælp af grafmaskineindlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Soji Adeshina er en Applied Scientist hos AWS, hvor han udvikler grafiske neurale netværksbaserede modeller til maskinlæring på grafopgaver med applikationer til bedrageri og misbrug, vidensgrafer, anbefalingssystemer og biovidenskab. I sin fritid nyder han at læse og lave mad.

Byg en virksomheds kreditvurderingsklassificering ved hjælp af grafmaskineindlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Patrick Yang er softwareudviklingsingeniør hos Amazon SageMaker. Han fokuserer på at bygge maskinlæringsværktøjer og produkter til kunder.

Tidsstempel:

Mere fra AWS maskinindlæring