Upptäck bedrägliga transaktioner med hjälp av maskininlärning med Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Upptäck bedrägliga transaktioner med hjälp av maskininlärning med Amazon SageMaker

Företag kan förlora miljarder dollar varje år på grund av illvilliga användare och bedrägliga transaktioner. I takt med att fler och fler affärsverksamheter flyttar online ökar också bedrägerier och missbruk i onlinesystem. För att bekämpa bedrägeri online har många företag använt regelbaserade system för upptäckt av bedrägerier.

Men traditionella system för upptäckt av bedrägerier förlitar sig på en uppsättning regler och filter handgjorda av mänskliga specialister. Filtren kan ofta vara sköra och reglerna kanske inte fångar upp hela spektrumet av bedrägliga signaler. Dessutom, även om bedrägliga beteenden ständigt utvecklas, gör den statiska karaktären hos fördefinierade regler och filter det svårt att underhålla och förbättra traditionella system för upptäckt av bedrägerier på ett effektivt sätt.

I det här inlägget visar vi dig hur du bygger ett dynamiskt, självförbättrande och underhållbart system för upptäckt av kreditkortsbedrägerier med maskininlärning (ML) med Amazon SageMaker.

Alternativt, om du letar efter en helt hanterad tjänst för att bygga skräddarsydda modeller för bedrägeriupptäckt utan att skriva kod, rekommenderar vi att du kollar in Amazon bedrägeri detektor. Amazon Fraud Detector gör det möjligt för kunder utan ML-erfarenhet att automatisera att bygga modeller för bedrägeriupptäckt anpassade för deras data, med mer än 20 års expertis för bedrägeriupptäckt från AWS och Amazon.com.

Lösningsöversikt

Denna lösning bygger kärnan i ett system för upptäckt av kreditkortsbedrägerier med SageMaker. Vi börjar med att träna en oövervakad anomalidetekteringsmodell med hjälp av algoritmen Random Cut Forest (RCF). Sedan tränar vi två övervakade klassificeringsmodeller med hjälp av algoritmen XGBoost, den ena som baslinjemodell och den andra för att göra förutsägelser, med hjälp av olika strategier för att hantera den extrema klassobalansen i data. Till sist tränar vi en optimal XGBoost-modell med hyperparameteroptimering (HPO) för att ytterligare förbättra modellens prestanda.

För provdatauppsättningen använder vi offentliga, anonymiserade kreditkortstransaktioner dataset som ursprungligen släpptes som en del av en forskning samarbete mellan Worldline och Machine Learning Group vid ULB (Université Libre de Bruxelles). I genomgången diskuterar vi också hur du kan anpassa lösningen för att använda din egen data.

Lösningens resultat är följande:

  • En oövervakad SageMaker RCF modell. Modellen ger en anomalipoäng för varje transaktion. Ett lågt poängvärde indikerar att transaktionen anses vara normal (icke bedräglig). Ett högt värde indikerar att transaktionen är bedräglig. Definitionerna av låg och hög beror på tillämpningen, men vanlig praxis tyder på att poäng utöver tre standardavvikelser från medelpoängen anses vara onormala.
  • En övervakad SageMaker XGBoost modell tränad med hjälp av dess inbyggda viktningsschema för att lösa problemet med mycket obalanserade data.
  • En övervakad SageMaker XGBoost-modell tränad med hjälp av Teknik för översampling av syntetisk minoritet (SMOTE).
  • En utbildad SageMaker XGBoost-modell med HPO.
  • Förutsägelser om sannolikheten för att varje transaktion är bedräglig. Om den uppskattade sannolikheten för en transaktion överstiger ett tröskelvärde, klassificeras den som bedräglig.

För att visa hur du kan använda den här lösningen i din befintliga affärsinfrastruktur inkluderar vi också ett exempel på att göra REST API-anrop till den utplacerade modellens slutpunkt med hjälp av AWS Lambda för att trigga både RCF- och XGBoost-modellerna.

Följande diagram illustrerar lösningsarkitekturen.

Förutsättningar

För att testa lösningen i ditt eget konto, se till att du har följande på plats:

När Studio-instansen är klar kan du starta Studio och komma åt JumpStart. JumpStart-lösningar är inte tillgängliga i SageMaker notebook-instanser, och du kan inte komma åt dem via SageMaker API:er eller AWS-kommandoradsgränssnitt (AWS CLI).

Starta lösningen

Utför följande steg för att starta lösningen:

  1. Öppna JumpStart genom att använda JumpStart-startprogrammet i Kom igång eller genom att välja JumpStart-ikonen i det vänstra sidofältet.
  2. Enligt Lösningarväljer Upptäck skadliga användare och transaktioner för att öppna lösningen på en annan Studio-flik.
    Hitta lösningen
  3. Välj på fliken lösning Starta för att lansera lösningen.
    Starta lösningen
    Lösningsresurserna tillhandahålls och en annan flik öppnas som visar distributionsförloppet. När utplaceringen är klar visas en Öppna Notebook knappen visas.
  4. Välja Öppna Notebook för att öppna lösningsanteckningsboken i Studio.
    Öppna anteckningsboken

Undersök och bearbeta uppgifterna

Standarddatauppsättningen innehåller endast numeriska funktioner, eftersom de ursprungliga funktionerna har transformerats med hjälp av Principal Component Analysis (PCA) för att skydda användarnas integritet. Som ett resultat innehåller datasetet 28 PCA-komponenter, V1–V28, och två funktioner som inte har transformerats, mängd och tid. Belopp hänvisar till transaktionsbeloppet, och Tid är sekunderna som förflutit mellan en transaktion i datan och den första transaktionen.

Kolumnen Klass motsvarar om en transaktion är bedräglig eller inte.

Stickprov

Vi kan se att majoriteten är icke-bedrägeri, för av de totalt 284,807 492 exemplen är endast 0.173 (XNUMX%) bedrägliga. Detta är ett fall av extrem klassobalans, vilket är vanligt i scenarier för upptäckt av bedrägerier.

Dataklassobalans

Vi förbereder sedan våra data för laddning och utbildning. Vi delar upp data i en tåguppsättning och en testuppsättning, med den förra för att träna och den senare för att utvärdera prestandan hos vår modell. Det är viktigt att dela upp data innan du använder någon teknik för att lindra klassobalansen. Annars kan vi läcka information från testsetet in i tågsetet och skada modellens prestanda.

Om du vill ta in din egen träningsdata, se till att det är tabelldata i CSV-format, ladda upp data till en Amazon enkel lagringstjänst (Amazon S3) och redigera S3-objektsökvägen i anteckningsbokens kod.

Datasökväg i S3

Om din data innehåller kategoriska kolumner med icke-numeriska värden måste du en-hot-koda dessa värden (med t.ex. sklearns OneHotEncoder) eftersom XGBoost-algoritmen endast stöder numerisk data.

Träna en oövervakad Random Cut Forest-modell

I ett bedrägeriupptäcktscenario har vi vanligtvis väldigt få märkta exempel, och märkningsbedrägerier kan ta mycket tid och ansträngning. Därför vill vi också extrahera information från de omärkta uppgifterna. Vi gör detta med hjälp av en anomalidetekteringsalgoritm, och drar fördel av den höga dataobalansen som är vanlig i datauppsättningar för bedrägeriupptäckt.

Anomalidetektering är en form av oövervakad inlärning där vi försöker identifiera avvikande exempel baserat enbart på deras egenskaper. Random Cut Forest är en toppmodern avvikelsedetekteringsalgoritm som är både exakt och skalbar. Till varje dataexempel associerar RCF en anomalipoäng.

Vi använder SageMaker inbyggda RCF-algoritm för att träna en anomalidetekteringsmodell på vår träningsdatauppsättning och sedan göra förutsägelser på vår testdatauppsättning.

Först undersöker och plottar vi de förutsagda anomalipoängen för positiva (bedrägliga) och negativa (icke-bedrägliga) exempel separat, eftersom antalet positiva och negativa exempel skiljer sig markant. Vi förväntar oss att de positiva (bedrägliga) exemplen har relativt höga anomalipoäng och de negativa (icke-bedrägliga) har låga anomalipoäng. Från histogrammen kan vi se följande mönster:

  • Nästan hälften av de positiva exemplen (vänster histogram) har anomalipoäng högre än 0.9, medan de flesta negativa exemplen (höger histogram) har anomalipoäng lägre än 0.85.
  • Den oövervakade inlärningsalgoritmen RCF har begränsningar för att identifiera bedrägliga och icke-bedrägliga exempel korrekt. Detta beror på att ingen etikettinformation används. Vi åtgärdar detta problem genom att samla in etikettinformation och använda en övervakad inlärningsalgoritm i senare steg.

Förutspådda anomalipoäng

Sedan antar vi ett mer verkligt scenario där vi klassificerar varje testexempel som antingen positivt (bedrägligt) eller negativt (icke-bedrägligt) baserat på dess anomalipoäng. Vi ritar poänghistogrammet för alla testexempel enligt följande, och väljer ett cutoff-poäng på 1.0 (baserat på mönstret som visas i histogrammet) för klassificering. Specifikt, om ett exempels anomalipoäng är mindre än eller lika med 1.0, klassificeras det som negativt (icke bedrägligt). I annat fall klassas exemplet som positivt (bedrägligt).

Histogram av poäng för testprover

Slutligen jämför vi klassificeringsresultatet med marksanningsetiketterna och beräknar utvärderingsmåtten. Eftersom vår datauppsättning är obalanserad använder vi utvärderingsmåtten balanserad noggrannhet, Cohens Kappa poäng, F1-poängoch ROC AUC, eftersom de tar hänsyn till frekvensen för varje klass i data. För alla dessa mätvärden indikerar ett högre värde en bättre prediktiv prestanda. Observera att vi i detta steg inte kan beräkna ROC AUC ännu, eftersom det inte finns någon uppskattad sannolikhet för positiva och negativa klasser från RCF-modellen i varje exempel. Vi beräknar detta mått i senare steg med hjälp av övervakade inlärningsalgoritmer.

. RCF
Balanserad noggrannhet 0.560023
Cohens Kappa 0.003917
F1 0.007082
ROC AUC -

Från detta steg kan vi se att den oövervakade modellen redan kan uppnå viss separation mellan klasserna, med högre anomalipoäng korrelerade med bedrägliga exempel.

Träna en XGBoost-modell med det inbyggda viktningsschemat

Efter att vi har samlat in en tillräcklig mängd märkt träningsdata kan vi använda en övervakad inlärningsalgoritm för att upptäcka sambanden mellan funktionerna och klasserna. Vi väljer XGBoost-algoritmen eftersom den har en bevisad meritlista, är mycket skalbar och kan hantera saknad data. Vi måste hantera dataobalansen den här gången, annars kommer majoritetsklassen (de icke-bedrägliga eller negativa exemplen) att dominera inlärningen.

Vi tränar och distribuerar vår första övervakade modell med SageMaker inbyggda XGBoost-algoritmbehållare. Detta är vår grundmodell. För att hantera dataobalansen använder vi hyperparametern scale_pos_weight, som skalar vikten av de positiva klassexemplen mot de negativa klassexemplen. Eftersom datamängden är mycket skev, sätter vi denna hyperparameter till ett konservativt värde: sqrt(num_nonfraud/num_fraud).

Vi tränar och implementerar modellen enligt följande:

  1. Hämta SageMaker XGBoost-behållarens URI.
  2. Ställ in hyperparametrarna vi vill använda för modellträningen, inklusive den vi nämnde som hanterar dataobalans, scale_pos_weight.
  3. Skapa en XGBoost-estimator och träna den med vår tågdatauppsättning.
  4. Distribuera den tränade XGBoost-modellen till en SageMaker-hanterad slutpunkt.
  5. Utvärdera denna baslinjemodell med vår testdatauppsättning.

Sedan utvärderar vi vår modell med samma fyra mått som nämndes i det sista steget. Den här gången kan vi också beräkna ROC AUC-måttet.

. RCF XGBoost
Balanserad noggrannhet 0.560023 0.847685
Cohens Kappa 0.003917 0.743801
F1 0.007082 0.744186
ROC AUC - 0.983515

Vi kan se att en övervakad inlärningsmetod XGBoost med viktningsschemat (med hjälp av hyperparametern scale_pos_weight) uppnår betydligt bättre prestanda än den oövervakade inlärningsmetoden RCF. Det finns dock fortfarande utrymme att förbättra prestandan. I synnerhet skulle det generellt vara mycket fördelaktigt att höja Cohens Kappa-poäng över 0.8.

Förutom mätvärden med ett enda värde är det också användbart att titta på mätvärden som indikerar prestanda per klass. Till exempel kan förvirringsmatrisen, precision per klass, återkallelse och F1-poäng ge mer information om vår modells prestanda.

XGBoost-modellens förvirringsmatris

. precision minns f1-poäng stödja
icke-bedrägeri 1.00 1.00 1.00 28435
bedrägeri 0.80 0.70 0.74 46

Fortsätt skicka testtrafik till slutpunkten via Lambda

För att visa hur man använder våra modeller i ett produktionssystem byggde vi ett REST API med Amazon API Gateway och en lambdafunktion. När klientapplikationer skickar HTTP-inferensförfrågningar till REST API, vilket triggar Lambda-funktionen, som i sin tur anropar RCF- och XGBoost-modellens slutpunkter och returnerar förutsägelserna från modellerna. Du kan läsa lambdafunktionskoden och övervaka anropen på lambdakonsolen.

Vi skapade också ett Python-skript som gör HTTP-inferensförfrågningar till REST API, med våra testdata som indata. För att se hur detta gjordes, kolla generate_endpoint_traffic.py fil i lösningens källkod. Förutsägelseutgångarna loggas till en S3-skopa genom en Amazon Kinesis Data Firehose leveransström. Du kan hitta destinations S3-skopans namn på Kinesis Data Firehose-konsolen och kontrollera förutsägelseresultaten i S3-skopan.

Träna en XGBoost-modell med översamplingstekniken SMOTE

Nu när vi har en baslinjemodell med XGBoost kan vi se om samplingstekniker som är utformade specifikt för obalanserade problem kan förbättra modellens prestanda. Vi använder Syntetisk minoritet Översampling (SMOTE), som översamplar minoritetsklassen genom att interpolera nya datapunkter mellan befintliga.

Stegen är som följer:

  1. Använd SMOTE för att översampla minoritetsklassen (den bedrägliga klassen) i vår tågdatauppsättning. SMOTE översamplar minoritetsklassen från cirka 0.17–50 %. Observera att detta är ett fall av extrem översampling av minoritetsklassen. Ett alternativ skulle vara att använda ett mindre omsamplingsförhållande, som att ha ett minoritetsklassprov för varje sqrt(non_fraud/fraud) majoritetsprov, eller med mer avancerade omsamplingstekniker. För fler översamplingsalternativ, se Jämför översamplingsprovtagare.
  2. Definiera hyperparametrarna för att träna den andra XGBoost så att scale_pos_weight tas bort och de andra hyperparametrarna förblir desamma som när man tränar baslinje XGBoost-modellen. Vi behöver inte hantera dataobalans med denna hyperparameter längre, eftersom vi redan har gjort det med SMOTE.
  3. Träna den andra XGBoost-modellen med de nya hyperparametrarna på den SMOTE-bearbetade tågdatauppsättningen.
  4. Distribuera den nya XGBoost-modellen till en SageMaker-hanterad slutpunkt.
  5. Utvärdera den nya modellen med testdatauppsättningen.

När vi utvärderar den nya modellen kan vi se att med SMOTE uppnår XGBoost en bättre prestanda på balanserad noggrannhet, men inte på Cohens Kappa- och F1-poäng. Anledningen till detta är att SMOTE har översamplat bedrägeriklassen så mycket att den har ökat dess överlappning i funktionsutrymme med fall utan bedrägeri. Eftersom Cohens Kappa ger mer vikt åt falska positiva än balanserad noggrannhet, sjunker måtten avsevärt, liksom precisionen och F1-poängen för bedrägerifall.

. RCF XGBoost XGBoost SMOTE
Balanserad noggrannhet 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

Däremot kan vi återställa balansen mellan måtten genom att justera klassificeringströskeln. Hittills har vi använt 0.5 som tröskel för att markera om en datapunkt är bedräglig eller inte. Efter att ha experimenterat med olika trösklar från 0.1–0.9 kan vi se att Cohens Kappa fortsätter att öka tillsammans med tröskeln, utan en betydande förlust i balanserad noggrannhet.

Experimentera olika trösklar för att få tillbaka balansen mellan mätvärden

Detta lägger till en användbar kalibrering till vår modell. Vi kan använda en låg tröskel om inte missa några bedrägliga fall (falskt negativ) är vår prioritet, eller så kan vi öka tröskeln för att minimera antalet falska positiva.

Träna en optimal XGBoost-modell med HPO

I det här steget visar vi hur man förbättrar modellens prestanda genom att träna vår tredje XGBoost-modell med hyperparameteroptimering. När man bygger komplexa ML-system är det opraktiskt att manuellt utforska alla möjliga kombinationer av hyperparametervärden. HPO-funktionen i SageMaker kan påskynda din produktivitet genom att prova många varianter av en modell för din räkning. Den letar automatiskt efter den bästa modellen genom att fokusera på de mest lovande kombinationerna av hyperparametervärden inom de intervall som du anger.

HPO-processen behöver en valideringsdatauppsättning, så vi delar först upp vår träningsdata ytterligare i utbildnings- och valideringsdataset med stratifierad sampling. För att ta itu med dataobalansproblemet använder vi XGBoosts viktningsschema igen och ställer in scale_pos_weight hyperparameter till sqrt(num_nonfraud/num_fraud).

Vi skapar en XGBoost-estimator med hjälp av SageMaker inbyggda XGBoost-algoritmbehållare och specificerar den objektiva utvärderingsmetriken och hyperparameterintervallen inom vilka vi vill experimentera. Med dessa skapar vi sedan en HyperparameterTuner och startar HPO-inställningsjobbet, som tränar flera modeller parallellt och letar efter optimala hyperparameterkombinationer.

När trimningsjobbet är klart kan vi se dess analysrapport och inspektera varje modells hyperparametrar, utbildningsjobbinformation och dess prestanda mot objektiva utvärderingsmått.

Lista över varje modells information från trimningsjobbet

Sedan distribuerar vi den bästa modellen och utvärderar den med vår testdatauppsättning.

Utvärdera och jämför alla modellers prestanda på samma testdata

Nu har vi utvärderingsresultaten från alla fyra modellerna: RCF, XGBoost baslinje, XGBoost med SMOTE och XGBoost med HPO. Låt oss jämföra deras prestationer.

. RCF XGBoost XGBoost med SMOTE XGBoost med HPO
Balanserad noggrannhet 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 att XGBoost med HPO uppnår ännu bättre prestanda än med SMOTE-metoden. I synnerhet Cohens Kappa-poäng och F1 är över 0.8, vilket indikerar en optimal modellprestanda.

Städa upp

När du är klar med den här lösningen, se till att du tar bort alla oönskade AWS-resurser för att undvika oavsiktliga avgifter. I den Ta bort lösning på din lösningsflik, välj Ta bort alla resurser för att ta bort resurser som skapas automatiskt när den här lösningen startas.

Rensa genom att ta bort lösningen

Alternativt kan du använda AWS molnformation för att ta bort alla standardresurser som skapas automatiskt av lösningen och anteckningsboken. För att använda detta tillvägagångssätt, på AWS CloudFormation-konsolen, hitta CloudFormation-stacken vars beskrivning innehåller fraud-detection-using-machine-learning och ta bort den. Detta är en överordnad stack, och om du väljer att ta bort denna stack tas de kapslade stackarna automatiskt bort.

Städa upp genom CloudFormation

Med båda tillvägagångssätten måste du fortfarande manuellt ta bort eventuella extra resurser som du kan ha skapat i den här anteckningsboken. Några exempel inkluderar extra S3-hinkar (utöver lösningens standardhink), extra SageMaker-slutpunkter (med ett anpassat namn) och extra Amazon Elastic Container Registry (Amazon ECR) förråd.

Slutsats

I det här inlägget visade vi dig hur du bygger kärnan i ett dynamiskt, självförbättrande och underhållbart system för upptäckt av kreditkortsbedrägerier med hjälp av ML med SageMaker. Vi byggde, tränade och distribuerade en oövervakad RCF-avvikelsedetekteringsmodell, en övervakad XGBoost-modell som baslinje, en annan övervakad XGBoost-modell med SMOTE för att ta itu med dataobalansproblemet och en slutlig XGBoost-modell optimerad med HPO. Vi diskuterade hur man hanterar dataobalans och använder sin egen data i lösningen. Vi inkluderade också ett exempel på REST API-implementering med API Gateway och Lambda för att demonstrera hur man använder systemet i din befintliga affärsinfrastruktur.

För att prova själv, öppna SageMaker Studio och starta JumpStart-lösningen. För att lära dig mer om lösningen, kolla in den GitHub repository.


Om författarna

Xiaoli ShenXiaoli Shen är medlem i Solutions Architect and Machine Learning Technical Field Community (TFC) på Amazon Web Services. Hon är fokuserad på att hjälpa kunder att bygga i molnet och utnyttja AWS-tjänster för att få affärsvärde. Innan hon började på AWS var hon teknisk ledare och senior full-stack ingenjör som byggde dataintensiva distribuerade system på molnet.

Upptäck bedrägliga transaktioner med hjälp av maskininlärning med Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Dr Xin Huang är en tillämpad forskare för Amazon SageMaker JumpStart och Amazon SageMaker inbyggda algoritmer. Han fokuserar på att utveckla skalbara maskininlärningsalgoritmer. Hans forskningsintressen är inom området naturlig språkbehandling, förklarlig djupinlärning på tabelldata och robust analys av icke-parametrisk rum-tid-klustring. Han har publicerat många artiklar i ACL, ICDM, KDD-konferenser och Royal Statistical Society: Series A journal.

Upptäck bedrägliga transaktioner med hjälp av maskininlärning med Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Vedant Jain är en Sr. AI/ML Specialist Solutions Architect som hjälper kunder att hämta värde ur Machine Learning-ekosystemet på AWS. Innan han började på AWS har Vedant haft ML/Data Science Specialty-positioner på olika företag som Databricks, Hortonworks (nu Cloudera) & JP Morgan Chase. Utanför sitt arbete brinner Vedant för att göra musik, använda Science för att leva ett meningsfullt liv och utforska läckra vegetariska rätter från hela världen.

Tidsstämpel:

Mer från AWS maskininlärning