Forøg svigtransaktioner ved hjælp af syntetiske data i Amazon SageMaker PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Forøg svigtransaktioner ved hjælp af syntetiske data i Amazon SageMaker

Udvikling og træning af svindelmodeller med succesfuld maskinlæring (ML) kræver adgang til store mængder data af høj kvalitet. Indhentning af disse data er udfordrende, fordi tilgængelige datasæt nogle gange ikke er store nok eller tilstrækkeligt upartiske til at træne ML-modellen nyttigt og kan kræve betydelige omkostninger og tid. Regulering og privatlivskrav forhindrer yderligere databrug eller deling selv inden for en virksomhedsorganisation. Processen med at godkende brugen af ​​og adgangen til følsomme data forsinker eller afsporer ofte ML-projekter. Alternativt kan vi tackle disse udfordringer ved at generere og bruge syntetiske data.

Syntetiske data beskriver kunstigt oprettede datasæt, der efterligner indholdet og mønstrene i det originale datasæt for at adressere regulatoriske risici og overholdelse, tid og omkostninger ved sourcing. Syntetiske datageneratorer bruger de rigtige data til at lære relevante funktioner, korrelationer og mønstre for at generere nødvendige mængder af syntetiske data, der matcher de statistiske kvaliteter af det oprindeligt indtagne datasæt.

Syntetiske data har været i brug i laboratoriemiljøer for over to årtier; markedet har beviser på nytteværdi, der accelererer indførelse i kommercielle og offentlige sektorer. Gartner forudsiger at i 2024 vil 60 procent af de data, der bruges til udvikling af ML- og analyseløsninger, være syntetisk genereret, og at brugen af ​​syntetiske data vil fortsætte med at stige betydeligt.

Financial Conduct Authority, et britisk tilsynsorgan, anerkender at "Adgang til data er katalysatoren for innovation, og syntetiske finansielle data kan spille en rolle i at understøtte innovation og gøre det muligt for nye aktører at udvikle, teste og demonstrere værdien af ​​nye løsninger."

Amazon SageMaker GroundTruth understøtter i øjeblikket generering af syntetiske data af mærkede syntetiske billeddata. Dette blogindlæg udforsker generering af syntetiske data i tabelform. Strukturerede data, såsom enkelt- og relationelle tabeller, og tidsseriedata er de typer, man oftest støder på i virksomhedsanalyse.

Dette er et todelt blogindlæg; vi opretter syntetiske data i første del og vurderer deres kvalitet i del to.

I dette blogindlæg lærer du, hvordan du bruger open source-biblioteket ydata-syntetisk , AWS SageMaker notesbøger at syntetisere tabeldata til et tilfælde af svindel, hvor vi ikke har nok svigagtige transaktioner til at træne en højnøjagtig svindelmodel. Den generelle proces med at træne en svindelmodel er dækket af denne indlæg.

Overblik over løsningen

Formålet med denne tutorial er at syntetisere minoritetsklassen i et meget ubalanceret kreditkortsvindeldatasæt ved hjælp af et optimeret Generative Adversarial Network (GAN) kaldet WGAN-GP at lære originale datas mønstre og statistiske egenskaber og derefter skabe endeløse prøver af syntetiske data, der ligner de originale data. Denne proces kan også bruges til at forbedre de originale data ved at up-sampling sjældne hændelser som svindel eller til at generere kantsager, der ikke er til stede i originalen.

Vi bruger et datasæt for kreditkortsvindel udgivet af ULB, som kan downloades fra Kaggle. Generering af syntetiske data for minoritetsklassen hjælper med at løse problemer relateret til ubalancerede datasæt, som kan hjælpe med at udvikle mere nøjagtige modeller.

Vi bruger AWS-tjenester, herunder Amazon SageMaker og Amazon S3, som medfører omkostninger ved brug af cloud-ressourcer.

Indstil udviklingsmiljøet

SageMaker leverer en administreret Jupyter notebook-instans til modelbygning, træning og implementering.

Forudsætninger:

Du skal have en AWS-konto for at køre SageMaker. Du kan få påbegyndt med SageMaker og prøv praktiske tutorials.

For instruktioner om opsætning af din Jupyter Notebook arbejdsmiljø, se Kom godt i gang med Amazon SageMaker Notebook Instances.

Trin 1: Konfigurer din Amazon SageMaker-instans

  1. Log ind på AWS-konsollen og søg efter "SageMaker".
  2. Type studie.
  3. Type Notebook-forekomster på venstre bjælke, og vælg Opret notesbogsforekomst.
  4. Fra næste side (som vist på det følgende billede), vælg konfigurationerne af den virtuelle maskine (VM) i henhold til dine behov, og vælg Opret notesbogsforekomst. Bemærk, at vi brugte en ML-optimeret VM uden GPU og 5 GB data, ml.t3.medium, der kører en Amazon Linux 2, og Jupyter Lab 3-kerne.
    Opret notesbogsforekomst
  5. En notebook-instans vil være klar til brug inden for få minutter.
  6. Type Åbn JupyterLab at starte.
    Forøg svigtransaktioner ved hjælp af syntetiske data i Amazon SageMaker PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
  7. Nu hvor vi har et JupyterLab med vores påkrævede specifikationer, vil vi installere det syntetiske bibliotek.
pip install ydata-synthetic

Trin 2: Download eller udtræk det rigtige datasæt for at skabe syntetiske data

Download referencedataene fra Kaggle enten manuelt, som vi gør her, eller programmatisk gennem Kaggle API, hvis du har en Kaggle-konto. Hvis du udforsker dette datasæt, vil du bemærke, at "fraud"-klassen indeholder meget færre data end "not fraud"-klassen.

Hvis du bruger disse data direkte til maskinlæringsforudsigelser, lærer modellerne måske altid at forudsige "ikke svindel". En model vil nemt have en højere nøjagtighed i sager uden for svig, da svigsager er sjældne. Men da det er vores mål i denne øvelse at opdage svindelsagerne, vil vi booste svindelklassetallene med syntetiske data modelleret på de rigtige data.

Opret en datamappe i JupyterLab og upload Kaggle-datafilen til den. Dette vil lade dig bruge dataene i notesbogen siden SageMaker kommer med opbevaring som du ville have angivet, da du instansierede notesbogen.

Forøg svigtransaktioner ved hjælp af syntetiske data i Amazon SageMaker PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Dette datasæt er på 144 MB

Forøg svigtransaktioner ved hjælp af syntetiske data i Amazon SageMaker PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Du kan derefter læse dataene ved hjælp af standardkode via pandas-biblioteket:

import pandas as pd
data = pd.read_csv('./data/creditcard.csv')

Svigopdagelsesdata har visse karakteristika, nemlig:

  • Store klasseubalancer (typisk i forhold til datapunkter uden bedrageri).
  • Privatlivsrelaterede bekymringer (på grund af tilstedeværelsen af ​​følsomme data).
  • En vis grad af dynamik, idet en ondsindet bruger altid forsøger at undgå opdagelse ved systemer, der overvåger for svigagtige transaktioner.
  • De tilgængelige datasæt er meget store og ofte umærkede.

Nu hvor du har inspiceret datasættet, lad os filtrere minoritetsklassen (“svindel”-klassen fra kreditkortdatasættet) og udføre transformationer efter behov. Du kan tjekke datatransformationerne fra dette notesbog.

Når dette minoritetsklassedatasæt syntetiseres og føjes tilbage til det originale datasæt, tillader det generering af et større syntetiseret datasæt, der adresserer ubalancen i data. Vi kan opnå større forudsigelsesnøjagtighed ved uddannelse af en model for opdagelse af bedrageri ved hjælp af det nye datasæt.

Lad os syntetisere det nye svindeldatasæt.

Trin 3: Træn synthesizerne og lav modellen

Da du har dataene let tilgængelige i SageMaker, er det tid til at sætte vores syntetiske GAN-modeller i gang.

Et generativt modstridende netværk (GAN) har to dele:

generator lærer at generere plausible data. De genererede tilfælde bliver negative træningseksempler for diskriminatoren.

diskriminator lærer at skelne generatorens falske data fra rigtige data. Diskriminatoren straffer generatoren for at producere usandsynlige resultater.

Når træningen begynder, producerer generatoren åbenlyst falske data, og diskriminatoren lærer hurtigt at fortælle, at det er falsk. Efterhånden som træningen skrider frem, kommer generatoren tættere på at producere output, der kan narre diskriminatoren. Endelig, hvis generatortræningen går godt, bliver diskriminatoren dårligere til at kende forskel på ægte og falsk. Det begynder at klassificere falske data som ægte, og dets nøjagtighed falder.

Både generatoren og diskriminatoren er neurale netværk. Generatorudgangen er forbundet direkte til diskriminatorindgangen. igennem tilbageudbredelse, giver diskriminatorens klassifikation et signal, som generatoren bruger til at opdatere sine vægte.

Trin 4: Prøve syntetiske data fra synthesizeren

Nu hvor du har bygget og trænet din model, er det tid til at prøve de nødvendige data ved at tilføre støj til modellen. Dette giver dig mulighed for at generere så mange syntetiske data, som du ønsker.

I dette tilfælde genererer du samme mængde syntetiske data som mængden af ​​faktiske data, fordi det gør det nemmere at sammenligne de lignende stikprøvestørrelser i trin 5.

Vi har mulighed for at prøve rækker, der indeholder svigagtige transaktioner – som, når de kombineres med de ikke-syntetiske svindeldata, vil føre til en ligelig fordeling af klasserne "bedrageri" og "ikke-svig". Den oprindelige Kaggle datasæt indeholdt 492 bedragerier ud af 284,807 transaktioner, så vi opretter en samme prøve fra synthesizeren.

# use the same shape as the real data
synthetic_fraud = synthesizer.sample(492)

Vi har mulighed for at up-sample rækker, der indeholder svigagtige transaktioner, i en proces kaldet dataforøgelse - som, når det kombineres med de ikke-syntetiske svindeldata, vil føre til en ligelig fordeling af "svig"- og "ikke-svig"-klasser.

Trin 5: Sammenlign og vurder de syntetiske data mod de rigtige data

Selvom dette trin er valgfrit, kan du kvalitativt visualisere og vurdere de genererede syntetiske data i forhold til de faktiske data ved hjælp af et scatterplot.

Dette hjælper os med at iterere vores model ved at justere parametre, ændre prøvestørrelsen og foretage andre transformationer for at generere de mest nøjagtige syntetiske data. Denne karakter af nøjagtighed afhænger altid af formålet med syntesen

Billedet nedenfor viser, hvor ens den faktiske svindel og de syntetiske svindeldatapunkter er på tværs af træningstrinnene. Dette giver en god kvalitativ inspektion af ligheden mellem de syntetiske og de faktiske data, og hvordan det forbedres, når vi kører det gennem flere epoker (transit af hele træningsdatasæt gennem algoritme). Bemærk, at efterhånden som vi kører flere epoker, kommer det syntetiske datamønstersæt tættere på de originale data.

Forøg svigtransaktioner ved hjælp af syntetiske data i Amazon SageMaker PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Trin 6: Ryd op

Stop endelig din notebook-forekomst, når du er færdig med syntesen for at undgå uventede omkostninger.

Konklusion

Som maskinlæringsalgoritmer og kodningsrammer udvikle sig hurtigt, højkvalitetsdata i stor skala er den knappeste ressource i ML. Syntetiske datasæt af god kvalitet kan bruges til en række forskellige opgaver.

I dette blogindlæg lærte du vigtigheden af ​​at syntetisere datasættet ved at bruge et open source-bibliotek, der bruger WGAN-GP. Dette er et aktivt forskningsområde med tusindvis af artikler om GAN'er offentliggjort og mange hundrede navngivne GAN'er tilgængelige for dig at eksperimentere med. Der er varianter, der er optimeret til specifikke use cases som relationelle tabeller og tidsseriedata.

Du kan finde al den kode, der er brugt til denne artikel i denne notesbog, og selvfølgelig er flere tutorials som denne tilgængelige fra SageMaker officiel dokumentationsside.

I anden del i denne todelte blogindlægsserie vil vi dykke dybt ned i, hvordan man kan evaluere kvaliteten af ​​de syntetiske data ud fra et perspektiv af troskab, nytte og privatliv.


Om forfatteren

Forøg svigtransaktioner ved hjælp af syntetiske data i Amazon SageMaker PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Faris Haddad er Data & Insights Lead i AABG Strategic Pursuits-teamet. Han hjælper virksomheder med at blive datadrevne.

Tidsstempel:

Mere fra AWS maskinindlæring