Bygg en bedrifts kredittvurderingsklassifisering ved hjelp av grafisk maskinlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Bygg en klassifisering av bedriftens kredittvurderinger ved å bruke grafisk maskinlæring i Amazon SageMaker JumpStart

I dag slipper vi en ny løsning for maskinlæring av finansielle grafer (ML) i Amazon SageMaker JumpStart. JumpStart hjelper deg raskt å komme i gang med ML og gir et sett med løsninger for de vanligste brukstilfellene som kan trenes og distribueres med bare noen få klikk.

Den nye JumpStart-løsningen (Graph-Based Credit Scoring) demonstrerer hvordan man konstruerer et bedriftsnettverk fra SEC-arkivering (langformede tekstdata), kombinerer dette med økonomiske forhold (tabelldata) og bruker grafiske nevrale nettverk (GNN) for å bygge kreditt vurderingsprediksjonsmodeller. I dette innlegget forklarer vi hvordan du kan bruke denne fullstendig tilpassbare løsningen for kredittscoring, slik at du kan akselerere din graf-ML-reise. Graph ML er i ferd med å bli et fruktbart område for finansiell ML fordi det muliggjør bruk av nettverksdata i forbindelse med tradisjonelle tabelldatasett. For mer informasjon, se Amazon på WSDM: Fremtiden til grafiske nevrale nettverk.

Løsningsoversikt

Du kan forbedre kredittscoring ved å utnytte data om forretningsforbindelser, som du kan lage en graf for, betegnet som CorpNet (forkortelse for bedriftsnettverk) i denne løsningen. Du kan deretter bruke graf-ML-klassifisering ved å bruke GNN-er på denne grafen og et tabellfunksjonssett for nodene, for å se om du kan bygge en bedre ML-modell ved å utnytte informasjonen i nettverksrelasjoner ytterligere. Derfor tilbyr denne løsningen en mal for forretningsmodeller som utnytter nettverksdata, for eksempel bruk av grafer for forsyningskjedeforhold, sosiale nettverksgrafer og mer.

Løsningen utvikler flere nye artefakter ved å konstruere et bedriftsnettverk og generere syntetiske økonomiske data, og kombinerer begge former for data for å lage modeller ved hjelp av graf ML.

Løsningen viser hvordan du kan konstruere et nettverk av tilknyttede selskaper ved å bruke MD&A-delen fra SEC 10-K/Q-filene. Selskaper med lignende fremtidsrettede utsagn vil sannsynligvis bli knyttet til kreditthendelser. Disse forbindelsene er representert i en graf. For grafnodefunksjoner bruker løsningen variablene i Altman Z-score-modellen og bransjekategorien til hvert firma. Disse er gitt i et syntetisk datasett som er gjort tilgjengelig for demonstrasjonsformål. Grafdataene og tabelldataene brukes for å passe til en klassifiseringsklassifisering ved bruk av GNN-er. For illustrative formål sammenligner vi ytelsen til modeller med og uten grafinformasjonen.

Bruk den grafbaserte kredittscoringsløsningen

For å begynne å bruke JumpStart, se Komme i gang med Amazon SageMaker. JumpStart-kortet for den grafbaserte kredittscoringsløsningen er tilgjengelig via Amazon SageMaker Studio.

Bygg en bedrifts kredittvurderingsklassifisering ved hjelp av grafisk maskinlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

  1. Velg modellkortet, og velg deretter Start for å sette i gang løsningen.
    Bygg en bedrifts kredittvurderingsklassifisering ved hjelp av grafisk maskinlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Løsningen genererer en modell for slutning og et endepunkt som kan brukes med en bærbar PC.

  1. Vent til de er klare og statusen vises som Complete.
  2. Velg Åpne Notebook for å åpne den første notatboken, som er for opplæring og endepunktsdistribusjon.
    Bygg en bedrifts kredittvurderingsklassifisering ved hjelp av grafisk maskinlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Du kan gå gjennom denne notatboken for å lære hvordan du bruker denne løsningen og deretter endre den for andre applikasjoner på dine egne data. Løsningen kommer med syntetiske data og bruker et undersett av det for å eksemplifisere trinnene som trengs for å trene modellen, distribuere den til et endepunkt og deretter påkalle endepunktet for slutning. Den bærbare datamaskinen inneholder også kode for å distribuere et eget endepunkt.

  1. For å åpne den andre notatboken (brukt til slutning), velg Bruk endepunkt i Notebook ved siden av endepunktartefakten.

I denne notatboken kan du se hvordan du forbereder dataene for å påkalle eksempelendepunktet for å utføre inferens på en gruppe eksempler.
Bygg en bedrifts kredittvurderingsklassifisering ved hjelp av grafisk maskinlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Endepunktet returnerer predikerte vurderinger, som brukes til å vurdere modellytelse, som vist i følgende skjermbilde av den siste kodeblokken i inferensnotatboken.
Bygg en bedrifts kredittvurderingsklassifisering ved hjelp av grafisk maskinlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Du kan bruke denne løsningen som en mal for en grafforbedret kredittvurderingsmodell. Du er ikke begrenset til funksjonssettet i dette eksemplet – du kan endre både grafdata og tabelldata for ditt eget bruk. Omfanget av kodeendringer som kreves er minimalt. Vi anbefaler å gå gjennom maleksemplet vårt for å forstå strukturen til løsningen, og deretter endre det etter behov.

Denne løsningen er kun for demonstrasjonsformål. Det er ikke finansiell rådgivning og bør ikke stoles på som finansiell eller investeringsrådgivning. De tilknyttede bærbare PC-ene, inkludert den opplærte modellen, bruker syntetiske data og er ikke beregnet for produksjonsbruk. Selv om tekst fra SEC-registreringer brukes, er de økonomiske dataene syntetisk og tilfeldig generert og har ingen relasjon til noe selskaps sanne økonomi. Derfor har de syntetisk genererte vurderingene heller ikke noen relasjon til et ekte selskaps sanne vurdering.

Data brukt i løsningen

Datasettet har syntetiske tabelldata som ulike regnskapsforhold (numeriske) og bransjekoder (kategoriske). Datasettet har 𝑁=3286 rader. Vurderingsetiketter er også lagt til. Dette er nodefunksjonene som skal brukes med graf ML.

Datasettet inneholder også en bedriftsgraf, som er urettet og uvektet. Denne løsningen lar deg justere strukturen til grafen ved å variere måten lenker er inkludert på. Hvert selskap i det tabellformede datasettet er representert med en node i bedriftsgrafen. Funksjonen construct_network_data() hjelper til med å konstruere grafen, som omfatter lister over kildenoder og destinasjonsnoder.

Rangeringsetiketter brukes for klassifisering ved bruk av GNN-er, som kan være multi-kategorier for alle vurderinger eller binære, delt mellom investeringsgrad (AAA, AA, A, BBB) og ikke-investeringsgrad (BB, B, CCC, CC, C, D). D står her for misligholdt.

Den komplette koden for å lese inn dataene og kjøre løsningen er gitt i løsningsnotisboken. Følgende skjermbilde viser strukturen til de syntetiske tabelldataene.

Bygg en bedrifts kredittvurderingsklassifisering ved hjelp av grafisk maskinlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Grafinformasjonen sendes inn til Deep Graph Library og kombinert med tabelldataene for å gjennomføre grafen ML. Hvis du tar med din egen graf, oppgir du den som et sett med kildenoder og destinasjonsnoder.

Modelltrening

Til sammenligning trener vi først en modell kun på tabelldata ved hjelp av AutoGluon, som etterligner den tradisjonelle tilnærmingen til kredittvurdering av selskaper. Vi legger deretter inn grafdata og bruker GNN-er for trening. Fullstendige detaljer er gitt i notatboken, og en kort oversikt tilbys i dette innlegget. Notatboken gir også en rask oversikt over graf ML med utvalgte referanser.

Opplæring av GNN utføres som følger. Vi bruker en tilpasning av GraphSAGE modell implementert i Deep Graph Library.

  1. Les inn grafdata fra Amazon enkel lagringstjeneste (Amazon S3) og lag kilde- og destinasjonsnodelistene for CorpNet.
  2. Les inn grafnodens funksjonssett (tren og test). Normaliser dataene etter behov.
  3. Angi justerbare hyperparametre. Kall den spesialiserte grafen ML-beholderen som kjører PyTorch for å passe til GNN uten hyperparameteroptimalisering (HPO).
  4. Gjenta graf ML med HPO.

For å gjøre implementeringen enkel og stabil, kjører vi modellopplæring i en beholder ved å bruke følgende kode (oppsettkoden før denne opplæringskoden er i løsningsnotisboken):

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 nåværende treningsprosessen utføres i en transduktiv setting, der funksjonene til testdatasettet (ikke inkludert målkolonnen) brukes til å konstruere grafen, og derfor er testnodene inkludert i treningsprosessen. På slutten av treningen genereres og lagres spådommene på testdatasettet output_location i S3-bøtta.

Selv om opplæringen er transduktiv, brukes ikke etikettene til testdatasettet til trening, og øvelsen vår tar sikte på å forutsi disse etikettene ved å bruke nodeinnbygginger for testdatasettets noder. En viktig funksjon ved GraphSAGE er at induktiv læring på nye observasjoner som ikke er en del av grafen også er mulig, men ikke utnyttet i denne løsningen.

Optimalisering av hyperparameter

Denne løsningen utvides ytterligere ved å gjennomføre HPO på GNN. Dette gjø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 deretter opp treningsmålet, for å maksimere F1-poengsummen i dette tilfellet:

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

Etabler det valgte miljøet og opplæringsressursene 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,
)

Til slutt, kjør treningsjobben med hyperparameteroptimalisering:

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

Inkludering av nettverksdata og hyperparameteroptimalisering gir forbedrede resultater. Ytelsesberegningene i tabellen nedenfor viser fordelen med å legge til CorpNet til standard tabelldatasett som brukes for kredittscoring.

Resultatene for AutoGluon bruker ikke grafen, bare tabelldataene. Når vi legger inn grafdata og bruker HPO, får vi en vesentlig gevinst i ytelse.

F1-poengsum ROC AUC Nøyaktighet MCC Balansert nøyaktighet Precision Husker
AutoGluon 0.72 0.74323 0.68037 0.35233 0.67323 0.68528 0.75843
GCN uten 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

(Merk: MCC er Matthews korrelasjonskoeffisient; https://en.wikipedia.org/wiki/Phi_coefficient.)

Rydd opp

Når du er ferdig med å bruke denne notatboken, sletter du modellartefakter og andre ressurser for å unngå å pådra deg ytterligere kostnader. Du må manuelt slette ressurser du kan ha opprettet mens du kjørte den bærbare datamaskinen, for eksempel S3-bøtter for modellartefakter, opplæringsdatasett, behandlingsartefakter og Amazon CloudWatch logggrupper.

Oppsummering

I dette innlegget introduserte vi en grafbasert kredittscoringsløsning i JumpStart for å hjelpe deg med å akselerere din graf-ML-reise. Den bærbare datamaskinen gir en pipeline som du kan endre og utnytte grafer med eksisterende tabellmodeller for å oppnå bedre ytelse.

For å komme i gang kan du finne den grafbaserte kredittscoringsløsningen i JumpStart in SageMaker Studio.


Om forfatterne

Bygg en bedrifts kredittvurderingsklassifisering ved hjelp av grafisk maskinlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Dr. Sanjiv Das er en Amazon-stipendiat og Terry-professor i finans og datavitenskap ved Santa Clara University. Han har postgraduate grader i finans (M.Phil og Ph.D. fra New York University) og informatikk (MS fra UC Berkeley), og en MBA fra Indian Institute of Management, Ahmedabad. Før han ble akademiker jobbet han i derivatbransjen i Asia-Stillehavsregionen som visepresident i Citibank. Han jobber med multimodal maskinlæring innen økonomiske applikasjoner.

Bygg en bedrifts kredittvurderingsklassifisering ved hjelp av grafisk maskinlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Dr. Xin Huang er en anvendt vitenskapsmann for Amazon SageMaker JumpStart og Amazon SageMaker innebygde algoritmer. Han fokuserer på å utvikle skalerbare maskinlæringsalgoritmer. Hans forskningsinteresser er innen områdene naturlig språkbehandling, dyp læring på tabelldata og robust analyse av ikke-parametrisk rom-tid klynging.

Bygg en bedrifts kredittvurderingsklassifisering ved hjelp av grafisk maskinlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Soji Adeshina er en Applied Scientist ved AWS, hvor han utvikler grafiske nevrale nettverksbaserte modeller for maskinlæring på grafoppgaver med applikasjoner for svindel og misbruk, kunnskapsgrafer, anbefalingssystemer og biovitenskap. På fritiden liker han å lese og lage mat.

Bygg en bedrifts kredittvurderingsklassifisering ved hjelp av grafisk maskinlæring i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Patrick Yang er programvareutviklingsingeniør hos Amazon SageMaker. Han fokuserer på å bygge maskinlæringsverktøy og produkter for kunder.

Tidstempel:

Mer fra AWS maskinlæring