Øk svindeltransaksjoner ved å bruke syntetiske data i Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Øk svindeltransaksjoner ved å bruke syntetiske data i Amazon SageMaker

Utvikling og opplæring av svindelmodeller for vellykket maskinlæring (ML) krever tilgang til store mengder data av høy kvalitet. Innhenting av disse dataene er utfordrende fordi tilgjengelige datasett noen ganger ikke er store nok eller tilstrekkelig objektive til å trene ML-modellen nyttig og kan kreve betydelige kostnader og tid. Regulering og personvernkrav forhindrer videre databruk eller deling selv innenfor en bedriftsorganisasjon. Prosessen med å godkjenne bruk av og tilgang til sensitive data forsinker eller avsporer ofte ML-prosjekter. Alternativt kan vi takle disse utfordringene ved å generere og bruke syntetiske data.

Syntetiske data beskriver kunstig opprettede datasett som etterligner innholdet og mønstrene i det originale datasettet for å adressere regulatorisk risiko og samsvar, tid og kostnader ved innkjøp. Syntetiske datageneratorer bruker de virkelige dataene til å lære relevante funksjoner, korrelasjoner og mønstre for å generere nødvendige mengder syntetiske data som samsvarer med de statistiske egenskapene til det opprinnelig inntatte datasettet.

Syntetiske data har vært i bruk i laboratoriemiljøer for over to tiår; markedet har bevis på nytte som akselererer bruken i kommersiell og offentlig sektor. Gartner spår at innen 2024 vil 60 prosent av dataene som brukes til utvikling av ML og analyseløsninger være syntetisk generert og at bruken av syntetiske data vil fortsette å øke betydelig.

Financial Conduct Authority, et britisk reguleringsorgan, erkjenner at "Tilgang til data er katalysatoren for innovasjon, og syntetiske økonomiske data kan spille en rolle i å støtte innovasjon og gjøre det mulig for nye aktører å utvikle, teste og demonstrere verdien av nye løsninger."

Amazon SageMaker GroundTruth støtter for øyeblikket generering av syntetiske data av merkede syntetiske bildedata. Dette blogginnlegget utforsker generering av syntetiske data i tabellform. Strukturerte data, som enkelt- og relasjonstabeller, og tidsseriedata er de typene man oftest møter i bedriftsanalyse.

Dette er et todelt blogginnlegg; vi lager syntetiske data i del én og vurderer kvaliteten i Andre del.

I dette blogginnlegget lærer du hvordan du bruker åpen kildekode-biblioteket ydata-syntetisk og AWS SageMaker notatbøker å syntetisere tabelldata for en svindelbrukssak, der vi ikke har nok uredelige transaksjoner til å trene opp en svindelmodell med høy nøyaktighet. Den generelle prosessen med å trene en svindelmodell er dekket i denne poste.

Oversikt over løsningen

Målet med denne opplæringen er å syntetisere minoritetsklassen til et svært ubalansert kredittkortsvindeldatasett ved hjelp av en optimert generative adversarial network (GAN) som heter WGAN-GP for å lære mønstre og statistiske egenskaper til originaldata og deretter lage endeløse prøver av syntetiske data som ligner de originale dataene. Denne prosessen kan også brukes til å forbedre de originale dataene ved å oppsample sjeldne hendelser som svindel eller for å generere kantsaker som ikke er til stede i originalen.

Vi bruker et datasett for kredittkortsvindel publisert av ULB, som kan lastes ned fra kaggle. Generering av syntetiske data for minoritetsklassen bidrar til å løse problemer knyttet til ubalanserte datasett, noe som kan bidra til å utvikle mer nøyaktige modeller.

Vi bruker AWS-tjenester, inkludert Amazon SageMaker og Amazon S3, som medfører kostnader for å bruke skyressurser.

Sett opp utviklingsmiljøet

SageMaker tilbyr en administrert Jupyter-notebook-forekomst for modellbygging, opplæring og distribusjon.

Forutsetninger:

Du må ha en AWS-konto for å kjøre SageMaker. Du kan få startet med SageMaker og prøv praktiske opplæringsprogrammer.

For instruksjoner om hvordan du setter opp Jupyter Notebook-arbeidsmiljøet, se Kom i gang med Amazon SageMaker Notebook Instances.

Trinn 1: Sett opp din Amazon SageMaker-forekomst

  1. Logg på AWS-konsollen og søk etter «SageMaker».
  2. Plukke ut studie.
  3. Plukke ut Notatboksforekomster på venstre stolpe, og velg Opprett notatbokforekomst.
  4. Fra neste side (som vist i følgende bilde), velg konfigurasjonene til den virtuelle maskinen (VM) i henhold til dine behov, og velg Opprett notatbokforekomst. Merk at vi brukte en ML-optimalisert VM uten GPU og 5 GB data, ml.t3.medium som kjører en Amazon Linux 2, og Jupyter Lab 3-kjerne.
    Opprett notatbokforekomst
  5. En notatbokforekomst vil være klar til bruk innen noen få minutter.
  6. Plukke ut Åpne JupyterLab til lansering.
    Øk svindeltransaksjoner ved å bruke syntetiske data i Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  7. Nå som vi har et JupyterLab med våre nødvendige spesifikasjoner, vil vi installere det syntetiske biblioteket.
pip install ydata-synthetic

Trinn 2: Last ned eller trekk ut det virkelige datasettet for å lage syntetiske data

Last ned referansedata fra Kaggle enten manuelt, som vi gjør her, eller programmatisk gjennom Kaggle API hvis du har en Kaggle-konto. Hvis du utforsker dette datasettet, vil du legge merke til at "fraud"-klassen inneholder mye mindre data enn "not fraud"-klassen.

Hvis du bruker disse dataene direkte til maskinlæringsforutsigelser, kan modellene alltid lære å forutsi «ikke svindel». En modell vil lett ha høyere nøyaktighet i saker som ikke er svindel siden svindelsaker er sjeldne. Men siden det er målet vårt i denne øvelsen å oppdage svindeltilfellene, vil vi øke svindelklassetallene med syntetiske data modellert på de virkelige dataene.

Opprett en datamappe i JupyterLab og last opp Kaggle-datafilen til den. Dette lar deg bruke dataene i notatboken siden SageMaker kommer med oppbevaring som du ville ha spesifisert da du instansierte notatboken.

Øk svindeltransaksjoner ved å bruke syntetiske data i Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Dette datasettet er på 144 MB

Øk svindeltransaksjoner ved å bruke syntetiske data i Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Du kan deretter lese dataene ved å bruke standardkode via pandas-biblioteket:

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

Data for svindeldeteksjon har visse egenskaper, nemlig:

  • Store klasseubalanser (vanligvis mot datapunkter som ikke er svindel).
  • Personvernrelaterte bekymringer (på grunn av tilstedeværelsen av sensitive data).
  • En viss grad av dynamikk, ved at en ondsinnet bruker alltid prøver å unngå oppdagelse ved systemovervåking for uredelige transaksjoner.
  • De tilgjengelige datasettene er svært store og ofte umerket.

Nå som du har inspisert datasettet, la oss filtrere minoritetsklassen («svindel»-klassen fra kredittkortdatasettet) og utføre transformasjoner etter behov. Du kan sjekke ut datatransformasjonene fra dette bærbare.

Når dette minoritetsklassedatasettet syntetiseres og legges tilbake til det opprinnelige datasettet, tillater det generering av et større syntetisert datasett som adresserer ubalansen i data. Vi kan oppnå større prediksjonsnøyaktighet ved å opplæring av en modell for oppdagelse av svindel ved å bruke det nye datasettet.

La oss syntetisere det nye svindeldatasettet.

Trinn 3: Tren synthesizerne og lag modellen

Siden du har dataene lett tilgjengelig i SageMaker, er det på tide å sette våre syntetiske GAN-modeller i gang.

Et generativt motstridende nettverk (GAN) har to deler:

De generator lærer å generere plausible data. De genererte tilfellene blir negative treningseksempler for diskriminatoren.

De diskriminator lærer å skille generatorens falske data fra ekte data. Diskriminatoren straffer generatoren for å produsere usannsynlige resultater.

Når treningen begynner, produserer generatoren åpenbart falske data, og diskriminatoren lærer raskt å fortelle at den er falsk. Etter hvert som treningen skrider frem, kommer generatoren nærmere å produsere utdata som kan lure diskriminatoren. Til slutt, hvis generatortreningen går bra, blir diskriminatoren dårligere til å se forskjellen mellom ekte og falske. Den begynner å klassifisere falske data som ekte, og nøyaktigheten reduseres.

Både generatoren og diskriminatoren er nevrale nettverk. Generatorutgangen er koblet direkte til diskriminatorinngangen. Gjennom tilbakemelding, gir diskriminatorens klassifisering et signal som generatoren bruker for å oppdatere sine vekter.

Trinn 4: Prøv syntetiske data fra synthesizeren

Nå som du har bygget og trent modellen din, er det på tide å prøve de nødvendige dataene ved å sende støy til modellen. Dette lar deg generere så mye syntetisk data du vil.

I dette tilfellet genererer du en lik mengde syntetiske data som mengden faktiske data, fordi dette gjør det lettere å sammenligne de lignende prøvestørrelsene i trinn 5.

Vi har muligheten til å prøve rader som inneholder uredelige transaksjoner – som, kombinert med ikke-syntetiske svindeldata, vil føre til en lik fordeling av "svindel"- og "ikke-svindel"-klasser. Den opprinnelige Kaggle datasett inneholdt 492 svindel av 284,807 XNUMX transaksjoner, så vi lager en samme prøve fra synthesizeren.

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

Vi har muligheten til å opp-sample rader som inneholder uredelige transaksjoner i en prosess som kalles dataforsterkning – som, kombinert med ikke-syntetiske svindeldata, vil føre til en lik fordeling av "svindel"- og "ikke-svindel"-klasser.

Trinn 5: Sammenlign og vurder de syntetiske dataene mot de virkelige dataene

Selv om dette trinnet er valgfritt, kan du kvalitativt visualisere og vurdere de genererte syntetiske dataene mot de faktiske dataene ved hjelp av et spredningsplott.

Dette hjelper oss å iterere modellen vår ved å justere parametere, endre prøvestørrelse og gjøre andre transformasjoner for å generere de mest nøyaktige syntetiske dataene. Denne nøyaktigheten avhenger alltid av formålet med syntesen

Bildet nedenfor viser hvor like den faktiske svindelen og de syntetiske svindeldatapunktene er på tvers av opplæringstrinnene. Dette gir en god kvalitativ inspeksjon av likheten mellom de syntetiske og de faktiske dataene og hvordan det forbedres etter hvert som vi kjører det gjennom flere epoker (overføring av hele treningsdatasettet gjennom algoritme). Merk at etter hvert som vi kjører flere epoker, kommer det syntetiske datamønstersettet nærmere de originale dataene.

Øk svindeltransaksjoner ved å bruke syntetiske data i Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Trinn 6: Rydd opp

Til slutt, stopp den bærbare forekomsten når du er ferdig med syntesen for å unngå uventede kostnader.

konklusjonen

Som maskinlæringsalgoritmer og kodingsrammeverk utvikle seg raskt, høykvalitetsdata i stor skala er den knappeste ressursen i ML. Syntetiske datasett av god kvalitet kan brukes i en rekke oppgaver.

I dette blogginnlegget lærte du viktigheten av å syntetisere datasettet ved å bruke et åpen kildekode-bibliotek som bruker WGAN-GP. Dette er et aktivt forskningsområde med tusenvis av artikler om GAN-er publisert og mange hundre navngitte GAN-er tilgjengelig for deg å eksperimentere med. Det finnes varianter som er optimalisert for spesifikke brukstilfeller som relasjonstabeller og tidsseriedata.

Du kan finne all koden som er brukt for denne artikkelen i denne bærbare, og selvfølgelig er flere opplæringsprogrammer som dette tilgjengelig fra SageMaker offisiell dokumentasjonsside.

andre del av denne todelte blogginnleggsserien vil vi gjøre et dypdykk i hvordan vi kan evaluere kvaliteten på de syntetiske dataene fra et perspektiv av troskap, nytte og personvern.


om forfatteren

Øk svindeltransaksjoner ved å bruke syntetiske data i Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Faris Haddad er Data & Insights Lead i AABG Strategic Pursuits-teamet. Han hjelper bedrifter med å bli datadrevne.

Tidstempel:

Mer fra AWS maskinlæring