Bouw een classificator voor zakelijke kredietbeoordelingen met behulp van machine learning op basis van grafieken in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Bouw een classificatie voor kredietbeoordelingen voor bedrijven met behulp van machine learning op basis van grafieken in Amazon SageMaker JumpStart

Vandaag brengen we een nieuwe oplossing uit voor financiële grafische machine learning (ML) in Amazon SageMaker JumpStart. JumpStart helpt u snel aan de slag te gaan met ML en biedt een reeks oplossingen voor de meest voorkomende use-cases die met slechts een paar klikken kunnen worden getraind en geïmplementeerd.

De nieuwe JumpStart-oplossing (Graph-Based Credit Scoring) laat zien hoe een bedrijfsnetwerk kan worden opgebouwd uit SEC-deponeringen (lange tekstgegevens), dit kan worden gecombineerd met financiële ratio's (tabelgegevens) en hoe neurale netwerken van grafieken (GNN's) kunnen worden gebruikt om voorspellingsmodellen voor kredietbeoordelingen te bouwen. In dit bericht leggen we uit hoe u deze volledig aanpasbare oplossing voor kredietscores kunt gebruiken, zodat u uw Graph ML-traject kunt versnellen. Graph ML wordt een vruchtbaar gebied voor financiële ML omdat het het gebruik van netwerkgegevens mogelijk maakt in combinatie met traditionele datasets in tabelvorm. Voor meer informatie, zie Amazon op WSDM: de toekomst van grafische neurale netwerken.

Overzicht oplossingen

U kunt de kredietscore verbeteren door gebruik te maken van gegevens over zakelijke koppelingen, waarvoor u een grafiek kunt maken, in deze oplossing aangeduid als CorpNet (afkorting van bedrijfsnetwerk). Vervolgens kunt u grafiek-ML-classificatie toepassen met behulp van GNN's op deze grafiek en een functieset in tabelvorm voor de knooppunten, om te zien of u een beter ML-model kunt bouwen door de informatie in netwerkrelaties verder te benutten. Daarom biedt deze oplossing een sjabloon voor bedrijfsmodellen die gebruik maken van netwerkgegevens, zoals het gebruik van grafieken van toeleveringsketenrelaties, grafieken van sociale netwerken en meer.

De oplossing ontwikkelt verschillende nieuwe artefacten door een bedrijfsnetwerk te bouwen en synthetische financiële gegevens te genereren, en combineert beide vormen van gegevens om modellen te creëren met behulp van grafiek ML.

De oplossing laat zien hoe een netwerk van aangesloten bedrijven kan worden opgebouwd met behulp van de MD&A-sectie uit SEC 10-K/Q-deponeringen. Bedrijven met vergelijkbare toekomstgerichte verklaringen zijn waarschijnlijk verbonden voor kredietgebeurtenissen. Deze verbindingen worden weergegeven in een grafiek. Voor grafiekknooppuntfuncties gebruikt de oplossing de variabelen in het Altman Z-score-model en de branchecategorie van elk bedrijf. Deze worden geleverd in een synthetische dataset die beschikbaar wordt gesteld voor demonstratiedoeleinden. De grafiekgegevens en tabelgegevens worden gebruikt om te passen in een beoordelingsclassificator met behulp van GNN's. Ter illustratie vergelijken we de prestaties van modellen met en zonder de grafiekinformatie.

Gebruik de Graph-Based Credit Scoring-oplossing

Om JumpStart te gebruiken, zie Aan de slag met Amazon SageMaker. De JumpStart-kaart voor de Graph-Based Credit Scoring-oplossing is beschikbaar via Amazon SageMaker Studio.

Bouw een classificator voor zakelijke kredietbeoordelingen met behulp van machine learning op basis van grafieken in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

  1. Kies de modelkaart en kies vervolgens Lancering om de oplossing in gang te zetten.
    Bouw een classificator voor zakelijke kredietbeoordelingen met behulp van machine learning op basis van grafieken in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

De oplossing genereert een model voor inferentie en een eindpunt voor gebruik met een notebook.

  1. Wacht tot ze klaar zijn en de status wordt weergegeven als Complete.
  2. Kies Notitieblok openen om de eerste notebook te openen, die bedoeld is voor training en implementatie van eindpunten.
    Bouw een classificator voor zakelijke kredietbeoordelingen met behulp van machine learning op basis van grafieken in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

U kunt dit notitieblok doornemen om te leren hoe u deze oplossing kunt gebruiken en deze vervolgens aanpassen voor andere toepassingen op uw eigen gegevens. De oplossing wordt geleverd met synthetische gegevens en gebruikt een subset ervan om de stappen te illustreren die nodig zijn om het model te trainen, het op een eindpunt te implementeren en vervolgens het eindpunt aan te roepen voor gevolgtrekking. De notebook bevat ook code om een ​​eigen eindpunt te implementeren.

  1. Kies om het tweede notitieboek te openen (gebruikt voor inferentie). Eindpunt gebruiken in Notebook naast het eindpuntartefact.

In dit notitieblok kunt u zien hoe u de gegevens voorbereidt om het voorbeeldeindpunt aan te roepen om gevolgtrekkingen uit te voeren op een reeks voorbeelden.
Bouw een classificator voor zakelijke kredietbeoordelingen met behulp van machine learning op basis van grafieken in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Het eindpunt retourneert voorspelde beoordelingen, die worden gebruikt om de modelprestaties te beoordelen, zoals weergegeven in de volgende schermafbeelding van het laatste codeblok van het deductienotitieblok.
Bouw een classificator voor zakelijke kredietbeoordelingen met behulp van machine learning op basis van grafieken in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

U kunt deze oplossing gebruiken als sjabloon voor een grafisch verbeterd kredietbeoordelingsmodel. U bent niet beperkt tot de functieset in dit voorbeeld: u kunt zowel de grafiekgegevens als de tabelgegevens voor uw eigen gebruik wijzigen. De omvang van de vereiste codewijzigingen is minimaal. We raden aan om ons sjabloonvoorbeeld door te nemen om de structuur van de oplossing te begrijpen en deze vervolgens indien nodig aan te passen.

Deze oplossing is alleen voor demonstratieve doeleinden. Het is geen financieel advies en mag niet worden gebruikt als financieel of beleggingsadvies. De bijbehorende notebooks, inclusief het getrainde model, gebruiken synthetische gegevens en zijn niet bedoeld voor productiegebruik. Hoewel tekst uit SEC-deponeringen wordt gebruikt, worden de financiële gegevens synthetisch en willekeurig gegenereerd en hebben ze geen relatie met de werkelijke financiële gegevens van een bedrijf. Daarom hebben de synthetisch gegenereerde beoordelingen ook geen enkele relatie met de werkelijke beoordeling van een echt bedrijf.

Gegevens gebruikt in de oplossing

De dataset bevat synthetische tabelgegevens, zoals verschillende boekhoudkundige ratio's (numeriek) en branchecodes (categorisch). De dataset heeft 𝑁=3286 rijen. Er zijn ook beoordelingslabels toegevoegd. Dit zijn de knooppuntfuncties die moeten worden gebruikt met grafiek ML.

De dataset bevat ook een bedrijfsgrafiek, die ongericht en ongewogen is. Met deze oplossing kunt u de structuur van de grafiek aanpassen door de manier waarop koppelingen worden opgenomen te variëren. Elk bedrijf in de dataset in tabelvorm wordt vertegenwoordigd door een knooppunt in de bedrijfsgrafiek. De functie construct_network_data() helpt bij het construeren van de grafiek, die lijsten met bronknooppunten en bestemmingsknooppunten bevat.

Ratinglabels worden gebruikt voor classificatie met behulp van GNN's, die meerdere categorieën kunnen hebben voor alle ratings of binair zijn, verdeeld over investment grade (AAA, AA, A, BBB) en non-investment grade (BB, B, CCC, CC, C, D). D staat hier voor defaulted.

De volledige code om de gegevens in te lezen en de oplossing uit te voeren, vindt u in het oplossingsnotitieblok. De volgende schermafbeelding toont de structuur van de synthetische tabelgegevens.

Bouw een classificator voor zakelijke kredietbeoordelingen met behulp van machine learning op basis van grafieken in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

De grafiekinformatie wordt doorgegeven aan de Diepe grafiekenbibliotheek en gecombineerd met de tabelgegevens om grafiek ML uit te voeren. Als u uw eigen grafiek meebrengt, levert u deze eenvoudig op als een set bronknooppunten en bestemmingsknooppunten.

Modeltraining

Ter vergelijking trainen we een model eerst alleen op tabelgegevens met behulp van AutoGluon, waarmee de traditionele benadering van de kredietwaardigheid van bedrijven wordt nagebootst. Vervolgens voegen we de grafiekgegevens toe en gebruiken we GNN's voor training. Volledige details zijn te vinden in het notitieboek en een kort overzicht wordt aangeboden in dit bericht. De notebook biedt ook een snel overzicht van grafiek ML met geselecteerde referenties.

Het trainen van de GNN gaat als volgt. We gebruiken een aanpassing van de GraphSAGE-model geïmplementeerd in de Deep Graph Library.

  1. Grafiekgegevens inlezen van Amazon eenvoudige opslagservice (Amazon S3) en maak de bron- en bestemmingsknooppuntlijsten voor CorpNet.
  2. Lees de functiesets van de knooppunten van de grafiek in (trainen en testen). Normaliseer de gegevens zoals vereist.
  3. Stel instelbare hyperparameters in. Roep de gespecialiseerde grafiek-ML-container met PyTorch aan om te passen bij de GNN zonder hyperparameteroptimalisatie (HPO).
  4. Herhaal grafiek ML met HPO.

Om de implementatie eenvoudig en stabiel te maken, voeren we modeltraining uit in een container met behulp van de volgende code (de installatiecode voorafgaand aan deze trainingscode bevindt zich in het oplossingsboek):

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

Het huidige trainingsproces wordt uitgevoerd in een transductieve setting, waarbij de kenmerken van de testdataset (exclusief de doelkolom) worden gebruikt om de grafiek te construeren en daarom worden de testknooppunten opgenomen in het trainingsproces. Aan het einde van de training worden de voorspellingen op de testdataset gegenereerd en opgeslagen output_location in de S3-bucket.

Hoewel de training transductief is, worden de labels van de testdataset niet gebruikt voor training, en onze oefening is gericht op het voorspellen van deze labels met behulp van node-inbeddingen voor de testdataset-nodes. Een belangrijk kenmerk van GraphSAGE is dat inductief leren van nieuwe waarnemingen die geen deel uitmaken van de grafiek ook mogelijk is, hoewel dit in deze oplossing niet wordt benut.

Optimalisatie van hyperparameters

Deze oplossing wordt verder uitgebreid door HPO uit te voeren op het GNN. Dit gebeurt binnen SageMaker. Zie de volgende code:

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

Vervolgens stellen we het trainingsdoel op, om in dit geval de F1-score te maximaliseren:

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

Bepaal de gekozen omgeving en trainingsbronnen op 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,
)

Voer ten slotte de trainingstaak uit met hyperparameteroptimalisatie:

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

Resultaten

De opname van netwerkgegevens en hyperparameteroptimalisatie levert verbeterde resultaten op. De prestatiestatistieken in de volgende tabel demonstreren het voordeel van het toevoegen van CorpNet aan standaard datasets in tabelvorm die worden gebruikt voor kredietscores.

De resultaten voor AutoGluon gebruiken niet de grafiek, alleen de tabelgegevens. Wanneer we de grafiekgegevens toevoegen en HPO gebruiken, krijgen we een materiële prestatiewinst.

F1-score ROC AUC Nauwkeurigheid MCC Evenwichtige nauwkeurigheid precisie Terugroepen
AutoGluon 0.72 0.74323 0.68037 0.35233 0.67323 0.68528 0.75843
GCN Zonder HPO 0.64 0.84498 0.69406 0.45619 0.71154 0.88177 0.50281
GCN met HPO 0.81 0.87116 0.78082 0.563 0.77081 0.75119 0.89045

(Opmerking: MCC is de Matthews-correlatiecoëfficiënt; https://en.wikipedia.org/wiki/Phi_coefficient.)

Opruimen

Nadat u klaar bent met het gebruik van dit notitieblok, verwijdert u de modelartefacten en andere bronnen om te voorkomen dat er verdere kosten in rekening worden gebracht. U moet handmatig bronnen verwijderen die u mogelijk hebt gemaakt tijdens het uitvoeren van de notebook, zoals S3-buckets voor modelartefacten, trainingsgegevenssets, verwerkingsartefacten en Amazon Cloud Watch log groepen.

Samengevat

In dit bericht hebben we een op grafieken gebaseerde oplossing voor kredietscores geïntroduceerd in JumpStart om u te helpen uw reis met grafiek-ML te versnellen. De notebook biedt een pijplijn waarmee u grafieken kunt wijzigen en gebruiken met bestaande tabelmodellen om betere prestaties te verkrijgen.

Om aan de slag te gaan, vindt u de Graph-Based Credit Scoring-oplossing in JumpStart in SageMaker Studio.


Over de auteurs

Bouw een classificator voor zakelijke kredietbeoordelingen met behulp van machine learning op basis van grafieken in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Dr Sanjiv Das is een Amazon Scholar en de Terry Professor of Finance and Data Science aan de Santa Clara University. Hij heeft postdoctorale diploma's in Finance (M.Phil en Ph.D. van New York University) en Computer Science (MS van UC Berkeley), en een MBA van het Indian Institute of Management, Ahmedabad. Voordat hij academicus werd, werkte hij in de derivatenhandel in de regio Azië-Pacific als Vice President bij Citibank. Hij werkt aan multimodaal machine learning op het gebied van financiële toepassingen.

Bouw een classificator voor zakelijke kredietbeoordelingen met behulp van machine learning op basis van grafieken in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Dr Xin Huang is toegepast wetenschapper voor Amazon SageMaker JumpStart en Ingebouwde algoritmen van Amazon SageMaker. Hij richt zich op het ontwikkelen van schaalbare machine learning-algoritmen. Zijn onderzoeksinteresses liggen op het gebied van natuurlijke taalverwerking, diep leren op tabelgegevens en robuuste analyse van niet-parametrische ruimte-tijd clustering.

Bouw een classificator voor zakelijke kredietbeoordelingen met behulp van machine learning op basis van grafieken in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Soji Adeshin is Applied Scientist bij AWS, waar hij op grafen gebaseerde neurale netwerkmodellen ontwikkelt voor machine learning op grafentaken met toepassingen voor fraude en misbruik, kennisgrafieken, aanbevelingssystemen en life sciences. In zijn vrije tijd houdt hij van lezen en koken.

Bouw een classificator voor zakelijke kredietbeoordelingen met behulp van machine learning op basis van grafieken in Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Patrick Yang is een Software Development Engineer bij Amazon SageMaker. Hij richt zich op het bouwen van machine learning-tools en -producten voor klanten.

Tijdstempel:

Meer van AWS-machine learning