Oppdag falske transaksjoner ved hjelp av maskinlæring med Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Oppdag falske transaksjoner ved hjelp av maskinlæring med Amazon SageMaker

Bedrifter kan tape milliarder av dollar hvert år på grunn av ondsinnede brukere og uredelige transaksjoner. Etter hvert som flere og flere virksomheter beveger seg på nettet, øker også svindel og misbruk i nettbaserte systemer. For å bekjempe svindel på nettet har mange bedrifter brukt regelbaserte svindeloppdagelsessystemer.

Imidlertid er tradisjonelle svindeldeteksjonssystemer avhengige av et sett med regler og filtre håndlaget av menneskelige spesialister. Filtrene kan ofte være sprø og reglene fanger kanskje ikke opp hele spekteret av uredelige signaler. Videre, mens uredelig atferd er i stadig utvikling, gjør den statiske naturen til forhåndsdefinerte regler og filtre det vanskelig å vedlikeholde og forbedre tradisjonelle svindeldeteksjonssystemer effektivt.

I dette innlegget viser vi deg hvordan du bygger et dynamisk, selvforbedrende og vedlikeholdbart system for oppdagelse av kredittkortsvindel med maskinlæring (ML) ved å bruke Amazon SageMaker.

Alternativt, hvis du leter etter en fullstendig administrert tjeneste for å bygge tilpassede svindeldeteksjonsmodeller uten å skrive kode, anbefaler vi å sjekke ut Amazon-svindeldetektor. Amazon Fraud Detector gjør det mulig for kunder uten ML-erfaring å automatisere bygging av svindeldeteksjonsmodeller tilpasset dataene deres, ved å utnytte mer enn 20 års ekspertise for svindeldeteksjon fra AWS og Amazon.com.

Løsningsoversikt

Denne løsningen bygger kjernen i et system for oppdagelse av kredittkortsvindel ved hjelp av SageMaker. Vi starter med å trene opp en uovervåket anomalideteksjonsmodell ved hjelp av algoritmen Random Cut Forest (RCF). Deretter trener vi to veiledede klassifikasjonsmodeller ved hjelp av algoritmen Xgboost, den ene som en grunnlinjemodell og den andre for å lage spådommer, ved å bruke forskjellige strategier for å adressere den ekstreme klasseubalansen i data. Til slutt trener vi en optimal XGBoost-modell med hyperparameteroptimalisering (HPO) for å forbedre modellens ytelse ytterligere.

For eksempeldatasettet bruker vi offentlige, anonymiserte kredittkorttransaksjoner datasett som opprinnelig ble utgitt som en del av en forskning samarbeid mellom Worldline og Machine Learning Group ved ULB (Université Libre de Bruxelles). I gjennomgangen diskuterer vi også hvordan du kan tilpasse løsningen til å bruke dine egne data.

Utgangene til løsningen er som følger:

  • En uten tilsyn SageMaker RCF modell. Modellen gir en uregelmessig poengsum for hver transaksjon. En lav poengverdi indikerer at transaksjonen anses som normal (ikke-svindel). En høy verdi indikerer at transaksjonen er uredelig. Definisjonene av lav og høy avhenger av applikasjonen, men vanlig praksis antyder at skårer utover tre standardavvik fra gjennomsnittsskåren anses som unormale.
  • En overvåket SageMaker XGBoost modell trent ved å bruke det innebygde vektingsskjemaet for å løse problemet med svært ubalanserte data.
  • En overvåket SageMaker XGBoost-modell trent ved hjelp av Syntetisk minoritetsoverprøveteknikk (SMOTE).
  • En trent SageMaker XGBoost-modell med HPO.
  • Spådommer om sannsynligheten for at hver transaksjon er uredelig. Hvis den estimerte sannsynligheten for en transaksjon er over en terskel, er den klassifisert som uredelig.

For å demonstrere hvordan du kan bruke denne løsningen i din eksisterende forretningsinfrastruktur, inkluderer vi også et eksempel på å foreta REST API-anrop til det utplasserte modellendepunktet ved å bruke AWS Lambda for å utløse både RCF- og XGBoost-modellene.

Følgende diagram illustrerer løsningsarkitekturen.

Forutsetninger

For å prøve ut løsningen på din egen konto, sørg for at du har følgende på plass:

Når Studio-forekomsten er klar, kan du starte Studio og få tilgang til JumpStart. JumpStart-løsninger er ikke tilgjengelige i SageMaker notebook-forekomster, og du kan ikke få tilgang til dem gjennom SageMaker APIer eller AWS kommandolinjegrensesnitt (AWS CLI).

Start løsningen

For å starte løsningen, fullfør følgende trinn:

  1. Åpne JumpStart ved å bruke JumpStart-startprogrammet i Kom i gang eller ved å velge JumpStart-ikonet i venstre sidefelt.
  2. Under Solutions, velg Oppdag ondsinnede brukere og transaksjoner for å åpne løsningen i en annen Studio-fane.
    Finn løsningen
  3. På løsningsfanen velger du Start for å lansere løsningen.
    Start løsningen
    Løsningsressursene er klargjort og en annen fane åpnes som viser distribusjonsfremdriften. Når distribusjonen er fullført, an Åpne Notebook knappen vises.
  4. Velg Åpne Notebook for å åpne løsningsnotisboken i Studio.
    Åpne notatboken

Undersøke og behandle dataene

Standarddatasettet inneholder bare numeriske funksjoner, fordi de opprinnelige funksjonene har blitt transformert ved hjelp av Hovedkomponentanalyse (PCA) for å beskytte brukernes personvern. Som et resultat inneholder datasettet 28 PCA-komponenter, V1–V28, og to funksjoner som ikke har blitt transformert, Mengde og Tid. Beløp refererer til transaksjonsbeløpet, og Tid er sekundene som har gått mellom enhver transaksjon i dataene og den første transaksjonen.

Klasse-kolonnen tilsvarer hvorvidt en transaksjon er uredelig eller ikke.

Eksempeldata

Vi kan se at flertallet ikke er svindel, fordi av de totalt 284,807 492 eksemplene er det bare 0.173 (XNUMX %) som er uredelige. Dette er et tilfelle av ekstrem klasseubalanse, som er vanlig i scenarier for svindeloppdagelse.

Dataklasse ubalanse

Vi forbereder deretter dataene våre for lasting og opplæring. Vi deler dataene inn i et togsett og et testsett, og bruker førstnevnte til å trene og sistnevnte til å evaluere ytelsen til modellen vår. Det er viktig å dele dataene før du bruker noen teknikker for å lindre klasseubalansen. Ellers kan vi lekke informasjon fra testsettet inn i togsettet og skade modellens ytelse.

Hvis du vil ta med dine egne treningsdata, sørg for at det er tabelldata i CSV-format, last opp dataene til en Amazon enkel lagringstjeneste (Amazon S3)-bøtte, og rediger S3-objektbanen i notatbokkoden.

Databane i S3

Hvis dataene dine inkluderer kategoriske kolonner med ikke-numeriske verdier, må du enkelt kode disse verdiene (ved å bruke f.eks. sklearns OneHotEncoder) fordi XGBoost-algoritmen bare støtter numeriske data.

Tren en uovervåket Random Cut Forest-modell

I et svindeloppdagelsesscenario har vi vanligvis svært få merkede eksempler, og merkesvindel kan ta mye tid og krefter. Derfor ønsker vi også å trekke ut informasjon fra de umerkede dataene som er tilgjengelig. Vi gjør dette ved å bruke en anomalideteksjonsalgoritme, og drar fordel av den høye dataubalansen som er vanlig i datasett for svindeldeteksjon.

Anomalideteksjon er en form for uovervåket læring der vi prøver å identifisere unormale eksempler utelukkende basert på egenskapene deres. Random Cut Forest er en toppmoderne anomalideteksjonsalgoritme som er både nøyaktig og skalerbar. Med hvert dataeksempel knytter RCF en anomalipoengsum.

Vi bruker SageMaker innebygde RCF-algoritme for å trene opp en anomalideteksjonsmodell på treningsdatasettet vårt, og foreta deretter spådommer på testdatasettet vårt.

Først undersøker og plotter vi de forutsagte anomali-skårene for positive (svindel) og negative (ikke-svindel) eksempler separat, fordi antallet positive og negative eksempler varierer betydelig. Vi forventer at de positive (uredelige) eksemplene har relativt høye anomali-skårer, og de negative (ikke-svindel) har lave anomali-skårer. Fra histogrammene kan vi se følgende mønstre:

  • Nesten halvparten av de positive eksemplene (venstre histogram) har anomali skårer høyere enn 0.9, mens de fleste av de negative eksemplene (høyre histogram) har anomali skårer lavere enn 0.85.
  • Den uovervåkede læringsalgoritmen RCF har begrensninger for å identifisere uredelige og ikke-svindelige eksempler nøyaktig. Dette er fordi det ikke brukes etikettinformasjon. Vi løser dette problemet ved å samle inn etikettinformasjon og bruke en overvåket læringsalgoritme i senere trinn.

Forutsagt anomali-score

Deretter antar vi et mer virkelighetsscenario der vi klassifiserer hvert testeksempel som enten positivt (uredelig) eller negativt (ikke-svindel) basert på dens anomalipoengsum. Vi plotter scorehistogrammet for alle testeksempler som følger, og velger en cutoff-score på 1.0 (basert på mønsteret vist i histogrammet) for klassifisering. Spesifikt, hvis et eksempels anomalipoengsum er mindre enn eller lik 1.0, klassifiseres det som negativt (ikke-svindel). Ellers er eksemplet klassifisert som positivt (svindel).

Histogram av poengsum for testprøver

Til slutt sammenligner vi klassifiseringsresultatet med grunnsannhetsetikettene og beregner evalueringsverdiene. Fordi datasettet vårt er ubalansert, bruker vi evalueringsberegningene balansert nøyaktighet, Cohens Kappa-score, F1-poengsumog ROC AUC, fordi de tar hensyn til frekvensen til hver klasse i dataene. For alle disse beregningene indikerer en større verdi en bedre prediktiv ytelse. Merk at i dette trinnet kan vi ikke beregne ROC AUC ennå, fordi det ikke er noen estimert sannsynlighet for positive og negative klasser fra RCF-modellen på hvert eksempel. Vi beregner denne beregningen i senere trinn ved å bruke overvåkede læringsalgoritmer.

. RCF
Balansert nøyaktighet 0.560023
Cohens Kappa 0.003917
F1 0.007082
ROC AUC -

Fra dette trinnet kan vi se at den uovervåkede modellen allerede kan oppnå en viss separasjon mellom klassene, med høyere anomali-skårer korrelert med uredelige eksempler.

Tren en XGBoost-modell med det innebygde vektskjemaet

Etter at vi har samlet inn en tilstrekkelig mengde merket treningsdata, kan vi bruke en overvåket læringsalgoritme for å oppdage sammenhenger mellom funksjonene og klassene. Vi velger XGBoost-algoritmen fordi den har en bevist merittliste, er svært skalerbar og kan håndtere manglende data. Vi må håndtere dataubalansen denne gangen, ellers vil majoritetsklassen (de ikke-svindelige eller negative eksemplene) dominere læringen.

Vi trener og distribuerer vår første overvåkede modell ved hjelp av SageMaker innebygde XGBoost-algoritmebeholder. Dette er vår grunnmodell. For å håndtere dataubalansen bruker vi hyperparameteren scale_pos_weight, som skalerer vektene til de positive klasseeksemplene mot de negative klasseeksemplene. Fordi datasettet er svært skjevt, setter vi denne hyperparameteren til en konservativ verdi: sqrt(num_nonfraud/num_fraud).

Vi trener og implementerer modellen som følger:

  1. Hent SageMaker XGBoost container URI.
  2. Angi hyperparametrene vi vil bruke for modellopplæringen, inkludert den vi nevnte som håndterer dataubalanse, scale_pos_weight.
  3. Lag en XGBoost-estimator og tren den med togdatasettet vårt.
  4. Distribuer den trente XGBoost-modellen til et SageMaker-administrert endepunkt.
  5. Evaluer denne grunnmodellen med vårt testdatasett.

Deretter evaluerer vi modellen vår med de samme fire metrikkene som nevnt i siste trinn. Denne gangen kan vi også beregne ROC AUC-metrikken.

. RCF Xgboost
Balansert nøyaktighet 0.560023 0.847685
Cohens Kappa 0.003917 0.743801
F1 0.007082 0.744186
ROC AUC - 0.983515

Vi kan se at en overvåket læringsmetode XGBoost med vektskjemaet (ved hjelp av hyperparameteren scale_pos_weight) oppnår betydelig bedre ytelse enn den uovervåkede læringsmetoden RCF. Det er fortsatt rom for å forbedre ytelsen. Spesielt vil det generelt være svært gunstig å heve Cohens Kappa-score over 0.8.

Bortsett fra beregninger med én verdi, er det også nyttig å se på beregninger som indikerer ytelse per klasse. For eksempel kan forvirringsmatrisen, presisjon per klasse, tilbakekalling og F1-score gi mer informasjon om modellens ytelse.

XGBoost-modellens forvirringsmatrise

. presisjon husker f1-score støtte
ikke-svindel 1.00 1.00 1.00 28435
svindel 0.80 0.70 0.74 46

Fortsett å sende testtrafikk til endepunktet via Lambda

For å demonstrere hvordan vi bruker modellene våre i et produksjonssystem, bygde vi en REST API med Amazon API-gateway og en lambdafunksjon. Når klientapplikasjoner sender HTTP-inferensforespørsler til REST API, som utløser Lambda-funksjonen, som igjen påkaller RCF- og XGBoost-modellendepunktene og returnerer spådommene fra modellene. Du kan lese Lambda-funksjonskoden og overvåke påkallingene på Lambda-konsollen.

Vi har også laget et Python-skript som sender HTTP-slutningsforespørsler til REST API, med testdataene våre som inngangsdata. For å se hvordan dette ble gjort, sjekk generate_endpoint_traffic.py fil i løsningens kildekode. Prediksjonsutgangene logges til en S3-bøtte gjennom en Amazon Kinesis Data Firehose leveringsstrøm. Du kan finne destinasjons S3-bøttenavnet på Kinesis Data Firehose-konsollen, og sjekke prediksjonsresultatene i S3-bøtten.

Tren en XGBoost-modell med oversamplingsteknikken SMOTE

Nå som vi har en grunnlinjemodell som bruker XGBoost, kan vi se om prøvetakingsteknikker som er designet spesielt for ubalanserte problemer kan forbedre ytelsen til modellen. Vi bruker Syntetisk minoritet Over-sampling (SMOTE), som oversampler minoritetsklassen ved å interpolere nye datapunkter mellom eksisterende.

Trinnene er som følger:

  1. Bruk SMOTE til å oversample minoritetsklassen (den uredelige klassen) i togdatasettet vårt. SMOTE oversampler minoritetsklassen fra omtrent 0.17–50 %. Merk at dette er et tilfelle av ekstrem oversampling av minoritetsklassen. Et alternativ ville være å bruke et mindre resamplingsforhold, for eksempel å ha en minoritetsklasseprøve for hver sqrt(non_fraud/fraud) majoritetsprøve, eller ved å bruke mer avanserte resampling-teknikker. For flere alternativer for oversampling, se Sammenlign over-sampling prøvetakere.
  2. Definer hyperparametrene for å trene den andre XGBoost slik at scale_pos_weight fjernes og de andre hyperparametrene forblir de samme som når du trener grunnlinje XGBoost-modellen. Vi trenger ikke håndtere dataubalanse med denne hyperparameteren lenger, fordi vi allerede har gjort det med SMOTE.
  3. Tren den andre XGBoost-modellen med de nye hyperparametrene på det SMOTE-behandlede togdatasettet.
  4. Distribuer den nye XGBoost-modellen til et SageMaker-administrert endepunkt.
  5. Evaluer den nye modellen med testdatasettet.

Når vi evaluerer den nye modellen, kan vi se at med SMOTE oppnår XGBoost en bedre ytelse på balansert nøyaktighet, men ikke på Cohens Kappa- og F1-score. Grunnen til dette er at SMOTE har oversamplet svindelklassen så mye at den har økt overlappingen i funksjonsområdet med ikke-svindelsakene. Fordi Cohens Kappa vektlegger falske positiver mer enn balansert nøyaktighet, synker metrikken betydelig, det samme gjør presisjonen og F1-score for svindelsaker.

. RCF Xgboost XGBoost SMOTE
Balansert nøyaktighet 0.560023 0.847685 0.912657
Cohens Kappa 0.003917 0.743801 0.716463
F1 0.007082 0.744186 0.716981
ROC AUC - 0.983515 0.967497

Vi kan imidlertid bringe tilbake balansen mellom beregninger ved å justere klassifiseringsterskelen. Så langt har vi brukt 0.5 som terskel for å merke om et datapunkt er uredelig eller ikke. Etter å ha eksperimentert med forskjellige terskler fra 0.1–0.9, kan vi se at Cohens Kappa fortsetter å øke sammen med terskelen, uten et betydelig tap i balansert nøyaktighet.

Eksperimenter forskjellige terskler for å få tilbake balansen mellom beregninger

Dette gir en nyttig kalibrering til modellen vår. Vi kan bruke en lav terskel hvis det er vår prioritet å ikke gå glipp av svindelsaker (falske negativer), eller vi kan øke terskelen for å minimere antallet falske positive.

Tren en optimal XGBoost-modell med HPO

I dette trinnet viser vi hvordan vi kan forbedre modellytelsen ved å trene vår tredje XGBoost-modell med hyperparameteroptimalisering. Når du bygger komplekse ML-systemer, er det upraktisk å manuelt utforske alle mulige kombinasjoner av hyperparameterverdier. HPO-funksjonen i SageMaker kan akselerere produktiviteten din ved å prøve mange varianter av en modell på dine vegne. Den ser automatisk etter den beste modellen ved å fokusere på de mest lovende kombinasjonene av hyperparameterverdier innenfor områdene du angir.

HPO-prosessen trenger et valideringsdatasett, så vi deler først opplæringsdataene våre i opplærings- og valideringsdatasett ved å bruke stratifisert prøvetaking. For å takle dataubalanseproblemet bruker vi XGBoosts vektskjema igjen, og stiller inn scale_pos_weight hyperparameter til sqrt(num_nonfraud/num_fraud).

Vi lager en XGBoost-estimator ved å bruke SageMaker innebygde XGBoost-algoritmebeholder, og spesifiserer den objektive evalueringsmetrikken og hyperparameterområdene vi ønsker å eksperimentere innenfor. Med disse lager vi så en HyperparameterTuner og starter HPO-innstillingsjobben, som trener flere modeller parallelt, på jakt etter optimale hyperparameterkombinasjoner.

Når innstillingsjobben er fullført, kan vi se analyserapporten og inspisere hver modells hyperparametre, informasjon om opplæringsjobben og ytelsen i forhold til den objektive evalueringsmetrikken.

Liste over hver modells informasjon fra innstillingsjobben

Deretter distribuerer vi den beste modellen og evaluerer den med testdatasettet vårt.

Evaluer og sammenlign all modellytelse på de samme testdataene

Nå har vi evalueringsresultatene fra alle fire modellene: RCF, XGBoost baseline, XGBoost med SMOTE og XGBoost med HPO. La oss sammenligne ytelsen deres.

. RCF Xgboost XGBoost med SMOTE XGBoost med HPO
Balansert nøyaktighet 0.560023 0.847685 0.912657 0.902156
Cohens Kappa 0.003917 0.743801 0.716463 0.880778
F1 0.007082 0.744186 0.716981 0.880952
ROC AUC - 0.983515 0.967497 0.981564

Vi kan se at XGBoost med HPO oppnår enda bedre ytelse enn det med SMOTE-metoden. Spesielt er Cohens Kappa-score og F1 over 0.8, noe som indikerer en optimal modellytelse.

Rydd opp

Når du er ferdig med denne løsningen, sørg for at du sletter alle uønskede AWS-ressurser for å unngå utilsiktede belastninger. I Slett løsning på løsningsfanen, velg Slett alle ressurser for å slette ressurser som ble opprettet automatisk ved lansering av denne løsningen.

Rydd opp ved å slette løsningen

Alternativt kan du bruke AWS skyformasjon for å slette alle standardressurser som er opprettet automatisk av løsningen og notatboken. For å bruke denne tilnærmingen, på AWS CloudFormation-konsollen, finn CloudFormation-stakken hvis beskrivelse inneholder svindeldeteksjon-bruker maskinlæring, og slett den. Dette er en overordnet stabel, og hvis du velger å slette denne stabelen, slettes de nestede stabelene automatisk.

Rydd opp gjennom CloudFormation

Med begge tilnærmingene må du fortsatt manuelt slette eventuelle ekstra ressurser du kan ha opprettet i denne notatboken. Noen eksempler inkluderer ekstra S3-bøtter (i tillegg til løsningens standardbøtte), ekstra SageMaker-endepunkter (med et tilpasset navn) og ekstra Amazon Elastic Container Registry (Amazon ECR) depoter.

konklusjonen

I dette innlegget viste vi deg hvordan du bygger kjernen i et dynamisk, selvforbedrende og vedlikeholdbart system for oppdagelse av kredittkortsvindel ved å bruke ML med SageMaker. Vi bygde, trente og implementerte en uovervåket RCF-anomalideteksjonsmodell, en overvåket XGBoost-modell som baseline, en annen overvåket XGBoost-modell med SMOTE for å takle dataubalanseproblemet, og en endelig XGBoost-modell optimalisert med HPO. Vi diskuterte hvordan man håndterer dataubalanse og bruker egne data i løsningen. Vi inkluderte også et eksempel på REST API-implementering med API Gateway og Lambda for å demonstrere hvordan du bruker systemet i din eksisterende forretningsinfrastruktur.

For å prøve det selv, åpne SageMaker Studio og start JumpStart-løsningen. For å lære mer om løsningen, sjekk ut den GitHub repository.


Om forfatterne

Xiaoli ShenXiaoli Shen er medlem av Solutions Architect and Machine Learning Technical Field Community (TFC) hos Amazon Web Services. Hun har fokusert på å hjelpe kunder med å bygge nettskyen og utnytte AWS-tjenester for å oppnå forretningsverdi. Før hun begynte i AWS, var hun teknisk leder og senior fullstack-ingeniør som bygde dataintensive distribuerte systemer på skyen.

Oppdag falske transaksjoner ved hjelp av maskinlæring med Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Dr. Xin Huang er en Applied Scientist for Amazon SageMaker JumpStart og Amazon SageMaker innebygde algoritmer. Han fokuserer på å utvikle skalerbare maskinlæringsalgoritmer. Hans forskningsinteresser er innen naturlig språkbehandling, forklarbar dyp læring på tabelldata og robust analyse av ikke-parametrisk rom-tid-klynger. Han har publisert mange artikler i ACL, ICDM, KDD-konferanser og Royal Statistical Society: Series A journal.

Oppdag falske transaksjoner ved hjelp av maskinlæring med Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Vedant Jain er en Sr. AI/ML spesialistløsningsarkitekt, og hjelper kunder med å hente verdi ut av maskinlæringsøkosystemet hos AWS. Før han begynte i AWS, har Vedant hatt ML/Data Science Specialty-stillinger i forskjellige selskaper som Databricks, Hortonworks (nå Cloudera) og JP Morgan Chase. Utenom arbeidet hans er Vedant lidenskapelig opptatt av å lage musikk, bruke Science til å leve et meningsfylt liv og utforske deilig vegetarisk mat fra hele verden.

Tidstempel:

Mer fra AWS maskinlæring