Detectați tranzacțiile frauduloase folosind învățarea automată cu Amazon SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Detectați tranzacțiile frauduloase folosind învățarea automată cu Amazon SageMaker

Companiile pot pierde miliarde de dolari în fiecare an din cauza utilizatorilor rău intenționați și a tranzacțiilor frauduloase. Pe măsură ce tot mai multe operațiuni de afaceri se deplasează online, fraudele și abuzurile în sistemele online sunt, de asemenea, în creștere. Pentru a combate frauda online, multe companii au folosit sisteme de detectare a fraudei bazate pe reguli.

Cu toate acestea, sistemele tradiționale de detectare a fraudei se bazează pe un set de reguli și filtre create manual de specialiști umani. Filtrele pot fi adesea fragile, iar regulile pot să nu capteze întregul spectru de semnale frauduloase. În plus, în timp ce comportamentele frauduloase evoluează permanent, natura statică a regulilor și filtrelor predefinite face dificilă menținerea și îmbunătățirea eficientă a sistemelor tradiționale de detectare a fraudei.

În această postare, vă arătăm cum să construiți un sistem de detectare a fraudei cu carduri de credit dinamic, auto-îmbunătățibil și care poate fi întreținut cu învățare automată (ML) folosind Amazon SageMaker.

Alternativ, dacă sunteți în căutarea unui serviciu complet gestionat pentru a construi modele personalizate de detectare a fraudei fără a scrie cod, vă recomandăm să verificați Detector de fraude Amazon. Amazon Fraud Detector le permite clienților fără experiență ML să automatizeze construirea de modele de detectare a fraudei personalizate pentru datele lor, valorificând peste 20 de ani de experiență în detectarea fraudelor de la AWS și Amazon.com.

Prezentare generală a soluțiilor

Această soluție construiește nucleul unui sistem de detectare a fraudelor cu cardul de credit folosind SageMaker. Începem prin a antrena un model nesupravegheat de detectare a anomaliilor folosind algoritmul Pădure tăiată aleatoriu (RCF). Apoi antrenăm două modele de clasificare supravegheată folosind algoritmul XGBoost, unul ca model de bază și celălalt pentru a face predicții, folosind diferite strategii pentru a aborda dezechilibrul extrem de clasă în date. În cele din urmă, antrenăm un model XGBoost optim cu optimizare hiperparametrică (HPO) pentru a îmbunătăți în continuare performanța modelului.

Pentru setul de date eșantion, folosim tranzacțiile publice anonime cu cardul de credit date CCD care a fost lansat inițial ca parte a unui cercetare colaborarea dintre Worldline și Grupul de învățare automată al ULB (Universitatea Libre de Bruxelles). În prezentare, discutăm și despre cum puteți personaliza soluția pentru a vă folosi propriile date.

Ieșirile soluției sunt următoarele:

  • Un nesupravegheat SageMaker RCF model. Modelul emite un scor de anomalie pentru fiecare tranzacție. O valoare scăzută a scorului indică faptul că tranzacția este considerată normală (nefrauduloasă). O valoare mare indică faptul că tranzacția este frauduloasă. Definițiile scăzut și ridicat depind de aplicație, dar practica comună sugerează că scorurile de peste trei abateri standard de la scorul mediu sunt considerate anormale.
  • Un supravegheat SageMaker XGBoost modelul a fost instruit folosind schema sa de ponderare încorporată pentru a aborda problema dezechilibrată a datelor.
  • Un model SageMaker XGBoost supravegheat antrenat folosind Tehnica de supraeșantionare a minorității sintetice (SMOTE).
  • Un model instruit SageMaker XGBoost cu HPO.
  • Predicțiile probabilității pentru fiecare tranzacție să fie frauduloasă. Dacă probabilitatea estimată a unei tranzacții depășește un prag, aceasta este clasificată drept frauduloasă.

Pentru a demonstra cum puteți utiliza această soluție în infrastructurile dvs. de afaceri existente, includem și un exemplu de efectuare a apelurilor API REST către punctul final al modelului implementat, folosind AWS Lambdas pentru a declanșa atât modelele RCF, cât și XGBoost.

Următoarea diagramă ilustrează arhitectura soluției.

Cerințe preliminare

Pentru a încerca soluția în propriul cont, asigurați-vă că aveți următoarele:

Când instanța Studio este gata, puteți lansa Studio și accesați JumpStart. Soluțiile JumpStart nu sunt disponibile în instanțele de notebook SageMaker și nu le puteți accesa prin API-urile SageMaker sau prin Interfața liniei de comandă AWS (CLI AWS).

Lansați soluția

Pentru a lansa soluția, parcurgeți următorii pași:

  1. Deschideți JumpStart utilizând lansatorul JumpStart în Să începem! secțiunea sau alegând pictograma JumpStart din bara laterală din stânga.
  2. În soluţii, alege Detectați utilizatorii și tranzacțiile rău intenționate pentru a deschide soluția într-o altă filă Studio.
    Găsește soluția
  3. În fila soluție, alegeți Lansa pentru a lansa soluția.
    Lansați soluția
    Resursele soluției sunt furnizate și se deschide o altă filă care arată progresul implementării. Când implementarea este încheiată, an Deschide Notebook apare butonul.
  4. Alege Deschide Notebook pentru a deschide blocnotesul cu soluții în Studio.
    Deschide caietul

Investigați și procesați datele

Setul de date implicit conține doar caracteristici numerice, deoarece caracteristicile originale au fost transformate folosind Analiza componentelor principale (PCA) pentru a proteja confidențialitatea utilizatorului. Ca rezultat, setul de date conține 28 de componente PCA, V1–V28 și două caracteristici care nu au fost transformate, Cantitatea și Timpul. Suma se referă la suma tranzacției, iar Timpul este secundele scurse între orice tranzacție din date și prima tranzacție.

Coloana Clasă corespunde dacă o tranzacție este sau nu frauduloasă.

Exemple de date

Putem observa că majoritatea este nefrauduloasă, deoarece din totalul de 284,807 exemple, doar 492 (0.173%) sunt frauduloase. Acesta este un caz de dezechilibru extrem de clasă, care este comun în scenariile de detectare a fraudei.

Dezechilibrul clasei de date

Apoi ne pregătim datele pentru încărcare și antrenament. Împărțim datele într-un set de tren și un set de testare, folosind primul pentru a antrena și cel din urmă pentru a evalua performanța modelului nostru. Este important să împărțiți datele înainte de a aplica orice tehnici pentru a atenua dezechilibrul clasei. În caz contrar, s-ar putea să scurgem informații din setul de testare în garnitura de tren și să dăunem performanței modelului.

Dacă doriți să introduceți propriile date de antrenament, asigurați-vă că sunt date tabelare în format CSV, încărcați datele într-un Serviciul Amazon de stocare simplă (Amazon S3) și editați calea obiectului S3 în codul notebook-ului.

Calea datelor în S3

Dacă datele dvs. includ coloane categorice cu valori non-numerice, trebuie să codificați unic aceste valori (folosind, de exemplu, OneHotEncoder de la sklearn) deoarece algoritmul XGBoost acceptă numai date numerice.

Antrenează un model de pădure tăiat aleatoriu nesupravegheat

Într-un scenariu de detectare a fraudei, avem de obicei foarte puține exemple etichetate, iar etichetarea fraudei poate necesita mult timp și efort. Prin urmare, dorim și să extragem informații din datele neetichetate la îndemână. Facem acest lucru folosind un algoritm de detectare a anomaliilor, profitând de dezechilibrul mare de date care este comun în seturile de date de detectare a fraudei.

Detectarea anomaliilor este o formă de învățare nesupravegheată în care încercăm să identificăm exemple anormale pe baza exclusiv caracteristicilor lor. Random Cut Forest este un algoritm de ultimă generație de detectare a anomaliilor, care este atât precis, cât și scalabil. Cu fiecare exemplu de date, RCF asociază un scor de anomalie.

Folosim algoritmul RCF SageMaker încorporat pentru a antrena un model de detectare a anomaliilor pe setul nostru de date de antrenament, apoi facem predicții pe setul de date de testare.

În primul rând, examinăm și trasăm scorurile de anomalie prezise pentru exemplele pozitive (frauduloase) și negative (nefrauduloase) separat, deoarece numărul de exemple pozitive și negative diferă semnificativ. Ne așteptăm ca exemplele pozitive (frauduloase) să aibă scoruri de anomalii relativ mari, iar cele negative (nefrauduloase) să aibă scoruri de anomalii scăzute. Din histograme, putem vedea următoarele modele:

  • Aproape jumătate dintre exemplele pozitive (histograma din stânga) au scoruri de anomalie mai mari de 0.9, în timp ce majoritatea exemplelor negative (histograma din dreapta) au scoruri de anomalii mai mici de 0.85.
  • Algoritmul de învățare nesupravegheat RCF are limitări pentru a identifica cu exactitate exemplele frauduloase și nefrauduloase. Acest lucru se datorează faptului că nu sunt utilizate informații de etichetă. Abordăm această problemă prin colectarea informațiilor pe etichetă și prin utilizarea unui algoritm de învățare supravegheat în pașii ulterioare.

Scoruri de anomalie prezise

Apoi, presupunem un scenariu mai real în care clasificăm fiecare exemplu de test ca fiind pozitiv (fraudulent) sau negativ (nefraudulent) pe baza scorului său de anomalie. Graficăm histograma scorului pentru toate exemplele de test după cum urmează, alegând un scor de limită de 1.0 (pe baza modelului afișat în histogramă) pentru clasificare. Mai exact, dacă scorul de anomalie al unui exemplu este mai mic sau egal cu 1.0, acesta este clasificat drept negativ (nefraudulent). În caz contrar, exemplul este clasificat drept pozitiv (fraudulent).

Histograma scorurilor pentru probele de testare

În cele din urmă, comparăm rezultatul clasificării cu etichetele de adevăr de bază și calculăm metricile de evaluare. Deoarece setul nostru de date este dezechilibrat, folosim valorile de evaluare precizie echilibrată, Scorul lui Cohen Kappa, Scor F1, și ROC AUC, deoarece țin cont de frecvența fiecărei clase în date. Pentru toate aceste valori, o valoare mai mare indică o performanță predictivă mai bună. Rețineți că în acest pas nu putem calcula încă AUC ROC, deoarece nu există o probabilitate estimată pentru clasele pozitive și negative din modelul RCF pentru fiecare exemplu. Calculăm această măsură în pașii ulterioare folosind algoritmi de învățare supravegheată.

. RCF
Precizie echilibrată 0.560023
Kappa lui Cohen 0.003917
F1 0.007082
ROC AUC -

Din acest pas, putem observa că modelul nesupravegheat poate realiza deja o oarecare separare între clase, cu scoruri de anomalie mai mari corelate cu exemple frauduloase.

Antrenați un model XGBoost cu schema de ponderare încorporată

După ce am adunat o cantitate adecvată de date de antrenament etichetate, putem folosi un algoritm de învățare supravegheat pentru a descoperi relațiile dintre caracteristici și clase. Alegem algoritmul XGBoost deoarece are un istoric dovedit, este foarte scalabil și poate face față datelor lipsă. De data aceasta trebuie să ne ocupăm de dezechilibrul de date, altfel clasa majoritară (exemplele non-frauduloase sau negative) va domina învățarea.

Antrenăm și implementăm primul nostru model supravegheat folosind containerul de algoritm XGBoost încorporat SageMaker. Acesta este modelul nostru de bază. Pentru a gestiona dezechilibrul de date, folosim hiperparametrul scale_pos_weight, care echilibrează ponderile exemplelor de clasă pozitivă față de exemplele de clasă negativă. Deoarece setul de date este foarte denaturat, setăm acest hiperparametru la o valoare conservatoare: sqrt(num_nonfraud/num_fraud).

Antrenăm și implementăm modelul după cum urmează:

  1. Preluați URI-ul containerului SageMaker XGBoost.
  2. Setați hiperparametrii pe care vrem să-i folosim pentru antrenamentul modelului, inclusiv cel pe care l-am menționat, care gestionează dezechilibrul datelor, scale_pos_weight.
  3. Creați un estimator XGBoost și antrenați-l cu setul nostru de date pentru trenuri.
  4. Implementați modelul XGBoost antrenat pe un punct final gestionat de SageMaker.
  5. Evaluați acest model de bază cu setul nostru de date de testare.

Apoi evaluăm modelul nostru cu aceleași patru metrici ca cele menționate în ultimul pas. De această dată putem calcula și metrica ROC AUC.

. RCF XGBoost
Precizie echilibrată 0.560023 0.847685
Kappa lui Cohen 0.003917 0.743801
F1 0.007082 0.744186
ROC AUC - 0.983515

Putem vedea că o metodă de învățare supravegheată XGBoost cu schema de ponderare (folosind hiperparametrul scale_pos_weight) realizează performanțe semnificativ mai bune decât metoda de învățare nesupravegheată RCF. Totuși, mai este loc de îmbunătățit performanța. În special, creșterea scorului Kappa lui Cohen peste 0.8 ar fi în general foarte favorabilă.

În afară de valorile cu o singură valoare, este util să ne uităm și la valorile care indică performanța pe clasă. De exemplu, matricea de confuzie, precizia pe clasă, reamintirea și scorul F1 pot oferi mai multe informații despre performanța modelului nostru.

Matricea de confuzie a modelului XGBoost

. precizie rechemare scor f1 a sustine
non-fraudă 1.00 1.00 1.00 28435
fraudă 0.80 0.70 0.74 46

Continuați să trimiteți trafic de testare către punctul final prin Lambda

Pentru a demonstra cum să folosim modelele noastre într-un sistem de producție, am construit un API REST cu Gateway API Amazon și o funcție Lambda. Când aplicațiile client trimit solicitări de inferență HTTP către API-ul REST, care declanșează funcția Lambda, care la rândul său invocă punctele finale ale modelului RCF și XGBoost și returnează predicțiile din modele. Puteți citi codul funcției Lambda și puteți monitoriza invocațiile pe consola Lambda.

De asemenea, am creat un script Python care face cereri de inferență HTTP către API-ul REST, cu datele noastre de testare ca date de intrare. Pentru a vedea cum s-a făcut acest lucru, verificați generate_endpoint_traffic.py fișier în codul sursă al soluției. Ieșirile de predicție sunt înregistrate într-o găleată S3 printr-un Firehose Amazon Kinesis Data flux de livrare. Puteți găsi numele compartimentului S3 de destinație pe consola Kinesis Data Firehose și puteți verifica rezultatele predicției în compartimentul S3.

Antrenați un model XGBoost cu tehnica de supraeșantionare SMOTE

Acum că avem un model de bază folosind XGBoost, putem vedea dacă tehnicile de eșantionare care sunt concepute special pentru problemele dezechilibrate pot îmbunătăți performanța modelului. Folosim Supraeșantionarea minorității sintetice (SMOTE), care supraeșantionează clasa minoritară prin interpolarea punctelor de date noi între cele existente.

Pașii sunt după cum urmează:

  1. Utilizați SMOTE pentru a supraeșantiona clasa minoritară (clasa frauduloasă) a setului nostru de date pentru trenuri. SMOTE supraeșantionează clasa minoritară de la aproximativ 0.17–50%. Rețineți că acesta este un caz de supraeșantionare extremă a clasei minoritare. O alternativă ar fi utilizarea unui raport de reeșantionare mai mic, cum ar fi un eșantion de clasă minoritară pentru fiecare sqrt(non_fraud/fraud) eșantion majoritar sau folosind tehnici de reeșantionare mai avansate. Pentru mai multe opțiuni de supraeșantionare, consultați Comparați eșantionarele cu supraeșantionare.
  2. Definiți hiperparametrii pentru antrenamentul celui de-al doilea XGBoost, astfel încât scale_pos_weight să fie eliminate, iar ceilalți hiperparametri să rămână la fel ca atunci când antrenați modelul XGBoost de bază. Nu mai trebuie să gestionăm dezechilibrul de date cu acest hiperparametru, pentru că am făcut-o deja cu SMOTE.
  3. Antrenați cel de-al doilea model XGBoost cu noii hiperparametri din setul de date de tren procesat SMOTE.
  4. Implementați noul model XGBoost pe un punct final gestionat de SageMaker.
  5. Evaluați noul model cu setul de date de testare.

La evaluarea noului model, putem observa că cu SMOTE, XGBoost atinge o performanță mai bună la precizia echilibrată, dar nu și la scorurile Kappa și F1 ale lui Cohen. Motivul pentru aceasta este că SMOTE a supraeșantionat clasa de fraudă atât de mult încât și-a crescut suprapunerea în spațiul de caracteristici cu cazurile non-fraudă. Deoarece Kappa lui Cohen acordă mai multă pondere falselor pozitive decât acuratețea echilibrată, metrica scade semnificativ, la fel ca precizia și scorul F1 pentru cazurile de fraudă.

. RCF XGBoost XGBoost SMOTE
Precizie echilibrată 0.560023 0.847685 0.912657
Kappa lui Cohen 0.003917 0.743801 0.716463
F1 0.007082 0.744186 0.716981
ROC AUC - 0.983515 0.967497

Cu toate acestea, putem readuce echilibrul dintre valori ajustând pragul de clasificare. Până acum, am folosit 0.5 ca prag pentru a eticheta dacă un punct de date este sau nu fraudulos. După ce am experimentat diferite praguri de la 0.1-0.9, putem vedea că Kappa lui Cohen continuă să crească odată cu pragul, fără o pierdere semnificativă a preciziei echilibrate.

Experimentați diferite praguri pentru a readuce echilibrul dintre valori

Acest lucru adaugă o calibrare utilă modelului nostru. Putem folosi un prag scăzut dacă prioritatea noastră este să nu pierdem cazuri frauduloase (negative false) sau putem crește pragul pentru a minimiza numărul de pozitive false.

Antrenați un model XGBoost optim cu HPO

În acest pas, demonstrăm cum să îmbunătățim performanța modelului prin antrenarea celui de-al treilea model XGBoost cu optimizarea hiperparametrului. Când construiți sisteme ML complexe, explorarea manuală a tuturor combinațiilor posibile de valori ale hiperparametrului este impracticabilă. Caracteristica HPO din SageMaker vă poate accelera productivitatea încercând mai multe variante ale unui model în numele dumneavoastră. Acesta caută automat cel mai bun model concentrându-se pe cele mai promițătoare combinații de valori ale hiperparametrului din intervalele pe care le specificați.

Procesul HPO are nevoie de un set de date de validare, așa că mai întâi ne împărțim datele de antrenament în seturi de date de instruire și validare folosind eșantionare stratificată. Pentru a rezolva problema dezechilibrului de date, folosim din nou schema de ponderare a XGBoost, setând scale_pos_weight hiperparametru la sqrt(num_nonfraud/num_fraud).

Creăm un estimator XGBoost folosind containerul de algoritm XGBoost încorporat SageMaker și specificăm metrica de evaluare obiectivă și intervalele de hiperparametri în care dorim să experimentăm. Cu acestea creăm apoi un HyperparameterTuner și începe munca de reglare HPO, care antrenează mai multe modele în paralel, căutând combinații optime de hiperparametri.

Când sarcina de reglare este finalizată, putem vedea raportul său de analiză și inspectăm hiperparametrii fiecărui model, informațiile despre jobul de antrenament și performanța acestuia față de metrica de evaluare obiectivă.

Lista informațiilor fiecărui model din lucrarea de reglare

Apoi implementăm cel mai bun model și îl evaluăm cu setul nostru de date de testare.

Evaluați și comparați performanța tuturor modelului pe aceleași date de testare

Acum avem rezultatele evaluării de la toate cele patru modele: RCF, XGBoost de bază, XGBoost cu SMOTE și XGBoost cu HPO. Să le comparăm performanța.

. RCF XGBoost XGBoost cu SMOTE XGBoost cu HPO
Precizie echilibrată 0.560023 0.847685 0.912657 0.902156
Kappa lui Cohen 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

Putem vedea că XGBoost cu HPO atinge o performanță și mai bună decât cea cu metoda SMOTE. În special, scorurile Kappa ale lui Cohen și F1 sunt peste 0.8, indicând o performanță optimă a modelului.

A curăța

Când ați terminat cu această soluție, asigurați-vă că ștergeți toate resursele AWS nedorite pentru a evita costurile neintenționate. În Ștergeți soluția secțiunea din fila soluție, alegeți Ștergeți toate resursele pentru a șterge resursele create automat la lansarea acestei soluții.

Curățați prin ștergerea soluției

Alternativ, puteți utiliza Formarea AWS Cloud pentru a șterge toate resursele standard create automat de soluție și notebook. Pentru a utiliza această abordare, pe consola AWS CloudFormation, găsiți stiva CloudFormation a cărei descriere conține detectarea fraudei-utilizarea-învățare-mașină și ștergeți-o. Aceasta este o stivă părinte, iar dacă alegeți să ștergeți această stivă se vor șterge automat stivele imbricate.

Curățați prin CloudFormation

Cu oricare dintre abordări, mai trebuie să ștergeți manual orice resurse suplimentare pe care le-ați creat în acest blocnotes. Unele exemple includ compartimente S3 suplimentare (pe lângă compartimentul implicit al soluției), puncte finale SageMaker suplimentare (folosind un nume personalizat) și Registrul Amazon de containere elastice (Amazon ECR).

Concluzie

În această postare, v-am arătat cum să construiți nucleul unui sistem de detectare a fraudelor cu carduri de credit dinamic, auto-îmbunătățitor și care poate fi întreținut, folosind ML cu SageMaker. Am construit, instruit și implementat un model de detectare a anomaliilor RCF nesupravegheat, un model XGBoost supravegheat ca bază, un alt model XGBoost supravegheat cu SMOTE pentru a rezolva problema dezechilibrului de date și un model XGBoost final optimizat cu HPO. Am discutat despre cum să gestionăm dezechilibrul datelor și să folosim propriile date în soluție. Am inclus, de asemenea, un exemplu de implementare REST API cu API Gateway și Lambda pentru a demonstra cum să utilizați sistemul în infrastructura dvs. de afaceri existentă.

Pentru a-l încerca singur, deschide SageMaker Studio și lansați soluția JumpStart. Pentru a afla mai multe despre soluție, consultați-o GitHub depozit.


Despre Autori

Xiaoli ShenXiaoli Shen este arhitect de soluții și membru al comunității de câmp tehnic de învățare automată (TFC) la Amazon Web Services. Ea se concentrează pe a ajuta clienții să proiecteze în cloud și să folosească serviciile AWS pentru a obține valoare de afaceri. Înainte de a se alătura AWS, ea a fost lider tehnologic și inginer senior full-stack, care construiește sisteme distribuite intensive de date pe cloud.

Detectați tranzacțiile frauduloase folosind învățarea automată cu Amazon SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Dr. Xin Huang este un om de știință aplicat pentru algoritmii încorporați Amazon SageMaker JumpStart și Amazon SageMaker. El se concentrează pe dezvoltarea de algoritmi scalabili de învățare automată. Interesele sale de cercetare sunt în domeniul procesării limbajului natural, al învățării profunde explicabile pe date tabulare și al analizei robuste a grupării neparametrice spațiu-timp. A publicat multe lucrări în ACL, ICDM, conferințe KDD și Royal Statistical Society: Series A journal.

Detectați tranzacțiile frauduloase folosind învățarea automată cu Amazon SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Vedantul Jain este un arhitect specialist în soluții AI/ML, care îi ajută pe clienți să obțină valoare din ecosistemul de învățare automată de la AWS. Înainte de a se alătura AWS, Vedant a ocupat poziții de specialitate ML/Data Science la diferite companii, cum ar fi Databricks, Hortonworks (acum Cloudera) și JP Morgan Chase. În afara muncii sale, Vedant este pasionat de a face muzică, de a folosi Știința pentru a duce o viață plină de sens și de a explora bucătăria vegetariană delicioasă din întreaga lume.

Timestamp-ul:

Mai mult de la Învățare automată AWS