Bygg en företagsklassificerare för kreditbetyg med hjälp av grafmaskininlärning i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Bygg en företagsklassificerare för kreditbetyg med hjälp av grafisk maskininlärning i Amazon SageMaker JumpStart

Idag släpper vi en ny lösning för maskininlärning av finansiella grafer (ML) i Amazon SageMaker JumpStart. JumpStart hjälper dig att snabbt komma igång med ML och tillhandahåller en uppsättning lösningar för de vanligaste användningsfallen som kan tränas och distribueras med bara några få klick.

Den nya JumpStart-lösningen (Graph-Based Credit Scoring) visar hur man konstruerar ett företagsnätverk från SEC-anmälningar (långformad textdata), kombinerar detta med finansiella nyckeltal (tabelldata) och använder grafiska neurala nätverk (GNN) för att bygga krediter bedömningsmodeller. I det här inlägget förklarar vi hur du kan använda denna helt anpassningsbara lösning för kreditvärdering, så att du kan påskynda din graf-ML-resa. Graph ML håller på att bli ett fruktbart område för finansiell ML eftersom det möjliggör användning av nätverksdata i samband med traditionella tabelluppsättningar. För mer information, se Amazon på WSDM: The future of graph neural networks.

Lösningsöversikt

Du kan förbättra kreditvärderingen genom att utnyttja data om affärskopplingar, för vilka du kan konstruera en graf, betecknad som CorpNet (förkortning för företagsnätverk) i denna lösning. Du kan sedan tillämpa graf-ML-klassificering med hjälp av GNN på denna graf och en tabelluppsättning av funktioner för noderna, för att se om du kan bygga en bättre ML-modell genom att ytterligare utnyttja informationen i nätverksrelationer. Därför erbjuder den här lösningen en mall för affärsmodeller som utnyttjar nätverksdata, som att använda grafer för försörjningskedjan, grafer för sociala nätverk och mer.

Lösningen utvecklar flera nya artefakter genom att konstruera ett företagsnätverk och generera syntetisk finansiell data, och kombinerar båda formerna av data för att skapa modeller med graf ML.

Lösningen visar hur man konstruerar ett nätverk av anslutna företag med hjälp av MD&A-sektionen från SEC 10-K/Q-anmälningar. Företag med liknande framtidsinriktade uttalanden kommer sannolikt att vara kopplade till kredithändelser. Dessa kopplingar representeras i en graf. För grafiska nodfunktioner använder lösningen variablerna i Altman Z-score-modellen och branschkategorin för varje företag. Dessa tillhandahålls i en syntetisk datauppsättning som görs tillgänglig för demonstrationsändamål. Grafdata och tabelldata används för att passa en klassificeringsklassificerare som använder GNN. I illustrativt syfte jämför vi prestanda för modeller med och utan grafinformationen.

Använd den grafbaserade kreditvärderingslösningen

För att börja använda JumpStart, se Komma igång med Amazon SageMaker. JumpStart-kortet för den grafbaserade kreditvärderingslösningen är tillgängligt via Amazon SageMaker Studio.

Bygg en företagsklassificerare för kreditbetyg med hjälp av grafmaskininlärning i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

  1. Välj modellkort och välj sedan Starta för att initiera lösningen.
    Bygg en företagsklassificerare för kreditbetyg med hjälp av grafmaskininlärning i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Lösningen genererar en modell för slutledning och en slutpunkt att använda med en anteckningsbok.

  1. Vänta tills de är klara och statusen visas som Complete.
  2. Välja Öppna Notebook för att öppna den första anteckningsboken, som är avsedd för utbildning och slutpunktsinstallation.
    Bygg en företagsklassificerare för kreditbetyg med hjälp av grafmaskininlärning i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Du kan gå igenom den här anteckningsboken för att lära dig hur du använder den här lösningen och sedan modifiera den för andra applikationer på din egen data. Lösningen kommer med syntetisk data och använder en delmängd av den för att exemplifiera stegen som behövs för att träna modellen, distribuera den till en slutpunkt och sedan anropa slutpunkten för slutledning. Den bärbara datorn innehåller också kod för att distribuera en egen slutpunkt.

  1. För att öppna den andra anteckningsboken (används för slutledning), välj Använd Endpoint i Notebook bredvid ändpunktsartefakten.

I den här anteckningsboken kan du se hur du förbereder data för att anropa exemplets slutpunkt för att utföra slutledning på en grupp med exempel.
Bygg en företagsklassificerare för kreditbetyg med hjälp av grafmaskininlärning i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Slutpunkten returnerar förutsagda betyg, som används för att bedöma modellens prestanda, som visas i följande skärmdump av det sista kodblocket i slutledningsanteckningsboken.
Bygg en företagsklassificerare för kreditbetyg med hjälp av grafmaskininlärning i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Du kan använda den här lösningen som en mall för en grafförbättrad kreditvärderingsmodell. Du är inte begränsad till funktionsuppsättningen i det här exemplet – du kan ändra både grafdata och tabelldata för ditt eget bruk. Omfattningen av kodändringar som krävs är minimal. Vi rekommenderar att du går igenom vårt mallexempel för att förstå lösningens struktur och sedan ändrar det efter behov.

Denna lösning är endast avsedd för demonstrationsändamål. Det är inte finansiell rådgivning och bör inte litas på som finansiell rådgivning eller investeringsrådgivning. De tillhörande bärbara datorerna, inklusive den utbildade modellen, använder syntetiska data och är inte avsedda för produktionsanvändning. Även om text från SEC-anmälningar används, genereras den finansiella informationen syntetiskt och slumpmässigt och har ingen relation till något företags verkliga ekonomi. Därför har de syntetiskt genererade betygen inte heller någon relation till något verkligt företags verkliga betyg.

Data som används i lösningen

Datauppsättningen har syntetiska tabelldata såsom olika redovisningsförhållanden (numeriska) och branschkoder (kategoriska). Datauppsättningen har 𝑁=3286 rader. Klassificeringsetiketter läggs också till. Dessa är nodfunktionerna som ska användas med graf ML.

Datauppsättningen innehåller också en företagsgraf, som är oriktad och oviktad. Denna lösning låter dig justera strukturen på grafen genom att variera hur länkar ingår. Varje företag i datauppsättningen i tabellform representeras av en nod i företagsdiagrammet. Funktionen construct_network_data() hjälper till att konstruera grafen, som innehåller listor över källnoder och destinationsnoder.

Klassificeringsetiketter används för klassificering med hjälp av GNN:er, som kan vara flerkategorier för alla betyg eller binära, uppdelade mellan investeringsklass (AAA, AA, A, BBB) och icke-investeringsklass (BB, B, CCC, CC, C, D). D står här för defaulted.

Den fullständiga koden för att läsa in data och köra lösningen finns i lösningens anteckningsbok. Följande skärmdump visar strukturen för de syntetiska tabelldata.

Bygg en företagsklassificerare för kreditbetyg med hjälp av grafmaskininlärning i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Grafinformationen skickas till Deep Graph Library och kombinerat med tabelldata för att utföra graf ML. Om du tar med din egen graf, tillhandahåller den helt enkelt som en uppsättning källnoder och destinationsnoder.

Modellutbildning

Som jämförelse tränar vi först en modell endast på tabelldata med hjälp av AutoGluon, som efterliknar den traditionella metoden för kreditvärdering av företag. Vi lägger sedan till grafdata och använder GNN för träning. Fullständig information finns i anteckningsboken, och en kort översikt ges i det här inlägget. Anteckningsboken ger också en snabb översikt över graf ML med valda referenser.

Utbildning av GNN sker enligt följande. Vi använder en anpassning av GraphSAGE modell implementeras i Deep Graph Library.

  1. Läs in grafdata från Amazon enkel lagringstjänst (Amazon S3) och skapa käll- och destinationsnodlistor för CorpNet.
  2. Läs in grafnodens funktionsuppsättningar (träna och testa). Normalisera data efter behov.
  3. Ställ in avstämbara hyperparametrar. Kalla den specialiserade grafen ML-behållare som kör PyTorch för att passa GNN utan hyperparameteroptimering (HPO).
  4. Upprepa graf ML med HPO.

För att göra implementeringen enkel och stabil kör vi modellträning i en container med följande kod (inställningskoden före denna utbildningskod finns i lösningens anteckningsbok):

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 aktuella träningsprocessen genomförs i en transduktiv miljö, där funktionerna i testdatauppsättningen (inte inklusive målkolumnen) används för att konstruera grafen och därför ingår testnoderna i träningsprocessen. I slutet av träningen genereras och sparas förutsägelserna i testdatauppsättningen output_location i S3-skopan.

Även om träningen är transduktiv, används inte etiketterna för testdatauppsättningen för träning, och vår övning syftar till att förutsäga dessa etiketter med hjälp av nodinbäddningar för testdatasetnoderna. En viktig egenskap hos GraphSAGE är att induktiv inlärning av nya observationer som inte är en del av grafen också är möjlig, även om den inte utnyttjas i denna lösning.

Hyperparameteroptimering

Denna lösning utökas ytterligare genom att genomföra HPO på GNN. Detta görs inom SageMaker. Se följande kod:

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 sedan upp träningsmålet för att maximera F1-poängen i det här fallet:

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

Upprätta den valda miljön och utbildningsresurserna 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 slutligen 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

Resultat

Inkluderandet av nätverksdata och hyperparameteroptimering ger förbättrade resultat. Prestandamåtten i följande tabell visar fördelen med att lägga till CorpNet till standarddatauppsättningar i tabellform som används för kreditvärdering.

Resultaten för AutoGluon använder inte grafen, bara tabelldata. När vi lägger till grafdata och använder HPO får vi en väsentlig vinst i prestanda.

F1-poäng ROC AUC Noggrannhet MCC Balanserad noggrannhet Precision Recall
AutoGluon 0.72 0.74323 0.68037 0.35233 0.67323 0.68528 0.75843
GCN Utan 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

(Notera: MCC är Matthews korrelationskoefficient; https://en.wikipedia.org/wiki/Phi_coefficient.)

Städa upp

När du är klar med att använda den här anteckningsboken, radera modellartefakterna och andra resurser för att undvika ytterligare avgifter. Du måste manuellt radera resurser som du kan ha skapat när du körde anteckningsboken, såsom S3-hinkar för modellartefakter, träningsdatauppsättningar, bearbetningsartefakter och amazoncloudwatch logga grupper.

Sammanfattning

I det här inlägget introducerade vi en grafbaserad kreditvärderingslösning i JumpStart för att hjälpa dig att påskynda din graf-ML-resa. Den bärbara datorn tillhandahåller en pipeline som du kan modifiera och utnyttja grafer med befintliga tabellmodeller för att få bättre prestanda.

För att komma igång kan du hitta den grafbaserade kreditvärderingslösningen i JumpStart in SageMaker Studio.


Om författarna

Bygg en företagsklassificerare för kreditbetyg med hjälp av grafmaskininlärning i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Dr Sanjiv Das är en Amazon Scholar och Terry-professor i finans- och datavetenskap vid Santa Clara University. Han har en doktorsexamen i finans (M.Phil och Ph.D. från New York University) och datavetenskap (MS från UC Berkeley), och en MBA från Indian Institute of Management, Ahmedabad. Innan han blev akademiker arbetade han inom derivatverksamheten i Asien-Stillahavsområdet som vice VD på Citibank. Han arbetar med multimodal maskininlärning inom området finansiella tillämpningar.

Bygg en företagsklassificerare för kreditbetyg med hjälp av grafmaskininlärning i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Dr Xin Huang är tillämpad vetenskapsman för Amazon SageMaker JumpStart och Amazon SageMaker inbyggda algoritmer. Han fokuserar på att utveckla skalbara maskininlärningsalgoritmer. Hans forskningsintressen är inom områdena naturlig språkbehandling, djupinlärning av tabelldata och robust analys av icke-parametrisk rum-tid-klustring.

Bygg en företagsklassificerare för kreditbetyg med hjälp av grafmaskininlärning i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Soji Adeshina är en tillämpad vetenskapsman på AWS, där han utvecklar grafiska neurala nätverksbaserade modeller för maskininlärning på grafuppgifter med tillämpningar för bedrägeri och missbruk, kunskapsdiagram, rekommendatorsystem och biovetenskap. På fritiden tycker han om att läsa och laga mat.

Bygg en företagsklassificerare för kreditbetyg med hjälp av grafmaskininlärning i Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Patrick Yang är en mjukvaruutvecklingsingenjör på Amazon SageMaker. Han fokuserar på att bygga verktyg och produkter för maskininlärning för kunder.

Tidsstämpel:

Mer från AWS maskininlärning