Rileva transazioni fraudolente utilizzando il machine learning con Amazon SageMaker PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Rileva le transazioni fraudolente utilizzando l'apprendimento automatico con Amazon SageMaker

Le aziende possono perdere miliardi di dollari ogni anno a causa di utenti malintenzionati e transazioni fraudolente. Poiché sempre più operazioni aziendali si spostano online, sono in aumento anche le frodi e gli abusi nei sistemi online. Per combattere le frodi online, molte aziende hanno utilizzato sistemi di rilevamento delle frodi basati su regole.

Tuttavia, i tradizionali sistemi di rilevamento delle frodi si basano su una serie di regole e filtri realizzati a mano da specialisti umani. I filtri possono spesso essere fragili e le regole potrebbero non catturare l'intero spettro di segnali fraudolenti. Inoltre, mentre i comportamenti fraudolenti sono in continua evoluzione, la natura statica di regole e filtri predefiniti rende difficile mantenere e migliorare efficacemente i tradizionali sistemi di rilevamento delle frodi.

In questo post, ti mostriamo come creare un sistema di rilevamento delle frodi con carta di credito dinamico, auto-migliorante e gestibile con l'apprendimento automatico (ML) utilizzando Amazon Sage Maker.

In alternativa, se stai cercando un servizio completamente gestito per creare modelli personalizzati di rilevamento delle frodi senza scrivere codice, ti consigliamo di provare Amazon Fraud Detector. Amazon Fraud Detector consente ai clienti senza esperienza di machine learning di automatizzare la creazione di modelli di rilevamento delle frodi personalizzati per i loro dati, sfruttando oltre 20 anni di esperienza nel rilevamento delle frodi di AWS e Amazon.com.

Panoramica della soluzione

Questa soluzione costituisce il nucleo di un sistema di rilevamento delle frodi con carta di credito utilizzando SageMaker. Iniziamo addestrando un modello di rilevamento delle anomalie non supervisionato utilizzando l'algoritmo Foresta tagliata a caso (RCF). Quindi formiamo due modelli di classificazione supervisionati utilizzando l'algoritmo XGBoost, uno come modello di base e l'altro per fare previsioni, utilizzando strategie diverse per affrontare l'estremo squilibrio di classe nei dati. Infine, formiamo un modello XGBoost ottimale con ottimizzazione iperparametro (HPO) per migliorare ulteriormente le prestazioni del modello.

Per il set di dati di esempio, utilizziamo le transazioni pubbliche e anonime delle carte di credito dataset originariamente rilasciato come parte di a riparazioni collaborazione di Worldline e il Gruppo di apprendimento automatico di ULB (Università Libera di Bruxelles). Nella procedura dettagliata, discutiamo anche di come personalizzare la soluzione per utilizzare i propri dati.

Gli output della soluzione sono i seguenti:

  • Un non sorvegliato SageMaker RCF modello. Il modello genera un punteggio di anomalia per ciascuna transazione. Un valore di punteggio basso indica che la transazione è considerata normale (non fraudolenta). Un valore alto indica che la transazione è fraudolenta. Le definizioni di basso e alto dipendono dall'applicazione, ma la pratica comune suggerisce che i punteggi oltre tre deviazioni standard dal punteggio medio sono considerati anomali.
  • Un sorvegliato SageMaker XGBoost modello addestrato utilizzando il suo schema di ponderazione integrato per affrontare il problema dei dati altamente sbilanciati.
  • Un modello SageMaker XGBoost supervisionato addestrato utilizzando il Tecnica di sovracampionamento delle minoranze sitetiche (SMOTE).
  • Un modello SageMaker XGBoost addestrato con HPO.
  • Previsioni sulla probabilità che ogni transazione sia fraudolenta. Se la probabilità stimata di una transazione supera una soglia, viene classificata come fraudolenta.

Per dimostrare come utilizzare questa soluzione nelle infrastrutture aziendali esistenti, includiamo anche un esempio di esecuzione di chiamate API REST all'endpoint del modello distribuito, utilizzando AWS Lambda per attivare entrambi i modelli RCF e XGBoost.

Il diagramma seguente illustra l'architettura della soluzione.

Prerequisiti

Per provare la soluzione nel tuo account, assicurati di disporre di quanto segue:

Quando l'istanza di Studio è pronta, puoi avviare Studio e accedere a JumpStart. Le soluzioni JumpStart non sono disponibili nelle istanze notebook SageMaker e non è possibile accedervi tramite le API SageMaker o il Interfaccia della riga di comando di AWS (interfaccia a riga di comando dell'AWS).

Avvia la soluzione

Per avviare la soluzione, completare i seguenti passaggi:

  1. Apri JumpStart utilizzando il launcher JumpStart nel file Inizia Ora sezione o scegliendo l'icona JumpStart nella barra laterale di sinistra.
  2. Sotto Soluzioniscegli Rileva utenti e transazioni dannosi per aprire la soluzione in un'altra scheda di Studio.
    Trova la soluzione
  3. Nella scheda della soluzione, scegli Lancio per lanciare la soluzione.
    Avvia la soluzione
    Viene eseguito il provisioning delle risorse della soluzione e si apre un'altra scheda che mostra lo stato di avanzamento della distribuzione. Al termine della distribuzione, an Apri taccuino viene visualizzato il pulsante.
  4. Scegli Apri taccuino per aprire il blocco appunti della soluzione in Studio.
    Apra il taccuino

Indagare ed elaborare i dati

Il set di dati predefinito contiene solo feature numeriche, poiché le feature originali sono state trasformate utilizzando Analisi delle componenti principali (PCA) per proteggere la privacy degli utenti. Di conseguenza, il set di dati contiene 28 componenti PCA, V1–V28, e due funzionalità che non sono state trasformate, Amount e Time. L'importo si riferisce all'importo della transazione e il tempo indica i secondi trascorsi tra qualsiasi transazione nei dati e la prima transazione.

La colonna Classe corrisponde al fatto che una transazione sia fraudolenta o meno.

Dati di esempio

Possiamo vedere che la maggior parte non è fraudolenta, perché su un totale di 284,807 esempi, solo 492 (0.173%) sono fraudolenti. Questo è un caso di squilibrio di classe estremo, che è comune negli scenari di rilevamento delle frodi.

Squilibrio delle classi di dati

Quindi prepariamo i nostri dati per il caricamento e l'addestramento. Dividiamo i dati in un set di treni e un set di test, utilizzando il primo per addestrare e il secondo per valutare le prestazioni del nostro modello. È importante dividere i dati prima di applicare qualsiasi tecnica per alleviare lo squilibrio di classe. In caso contrario, potremmo far trapelare informazioni dal set di prova nel convoglio e danneggiare le prestazioni del modello.

Se vuoi importare i tuoi dati di allenamento, assicurati che siano dati tabulari in formato CSV, carica i dati su un Servizio di archiviazione semplice Amazon (Amazon S3) e modificare il percorso dell'oggetto S3 nel codice del notebook.

Percorso dati in S3

Se i dati includono colonne categoriali con valori non numerici, è necessario codificare in modo rapido questi valori (utilizzando, ad esempio, OneHotEncoder di sklearn) perché l'algoritmo XGBoost supporta solo dati numerici.

Addestra un modello Random Cut Forest senza supervisione

In uno scenario di rilevamento delle frodi, di solito abbiamo pochissimi esempi etichettati e l'etichettatura delle frodi può richiedere molto tempo e fatica. Pertanto, vogliamo anche estrarre informazioni dai dati senza etichetta disponibili. Lo facciamo utilizzando un algoritmo di rilevamento delle anomalie, sfruttando l'elevato squilibrio dei dati comune nei set di dati di rilevamento delle frodi.

Il rilevamento delle anomalie è una forma di apprendimento non supervisionato in cui si cerca di identificare esempi anomali basandosi esclusivamente sulle loro caratteristiche. Random Cut Forest è un algoritmo di rilevamento delle anomalie all'avanguardia, accurato e scalabile. Ad ogni esempio di dati, RCF associa un punteggio di anomalia.

Utilizziamo l'algoritmo RCF integrato di SageMaker per addestrare un modello di rilevamento delle anomalie sul nostro set di dati di addestramento, quindi fare previsioni sul nostro set di dati di test.

In primo luogo, esaminiamo e tracciamo separatamente i punteggi di anomalia previsti per esempi positivi (fraudolenti) e negativi (non fraudolenti), perché il numero di esempi positivi e negativi differisce in modo significativo. Ci aspettiamo che gli esempi positivi (fraudolenti) abbiano punteggi di anomalia relativamente alti e quelli negativi (non fraudolenti) abbiano punteggi di anomalia bassi. Dagli istogrammi, possiamo vedere i seguenti modelli:

  • Quasi la metà degli esempi positivi (istogramma di sinistra) ha punteggi di anomalia superiori a 0.9, mentre la maggior parte degli esempi negativi (istogramma di destra) ha punteggi di anomalia inferiori a 0.85.
  • L'algoritmo di apprendimento non supervisionato RCF presenta limitazioni per identificare accuratamente esempi fraudolenti e non fraudolenti. Questo perché non vengono utilizzate informazioni sull'etichetta. Affrontiamo questo problema raccogliendo informazioni sull'etichetta e utilizzando un algoritmo di apprendimento supervisionato nei passaggi successivi.

Punteggi di anomalia previsti

Quindi, assumiamo uno scenario più reale in cui classifichiamo ogni esempio di test come positivo (fraudolento) o negativo (non fraudolento) in base al suo punteggio di anomalia. Tracciamo l'istogramma del punteggio per tutti gli esempi di test come segue, scegliendo un punteggio di cutoff di 1.0 (basato sul modello mostrato nell'istogramma) per la classificazione. In particolare, se il punteggio di anomalia di un esempio è inferiore o uguale a 1.0, viene classificato come negativo (non fraudolento). In caso contrario, l'esempio è classificato come positivo (fraudolento).

Istogramma dei punteggi per i campioni di prova

Infine, confrontiamo il risultato della classificazione con le etichette di verità di base e calcoliamo le metriche di valutazione. Poiché il nostro set di dati è sbilanciato, utilizziamo le metriche di valutazione precisione equilibrata, Punteggio Kappa di Cohen, punteggio F1e ROC UAC, perché tengono conto della frequenza di ciascuna classe nei dati. Per tutte queste metriche, un valore maggiore indica una migliore performance predittiva. Si noti che in questo passaggio non è ancora possibile calcolare l'AUC ROC, poiché non esiste una probabilità stimata per le classi positive e negative dal modello RCF su ciascun esempio. Calcoliamo questa metrica nei passaggi successivi utilizzando algoritmi di apprendimento supervisionato.

. RCF
Precisione equilibrata 0.560023
Kappa di Cohen 0.003917
F1 0.007082
ROC UAC -

Da questo passaggio, possiamo vedere che il modello non supervisionato può già ottenere una certa separazione tra le classi, con punteggi di anomalia più elevati correlati a esempi fraudolenti.

Addestra un modello XGBoost con lo schema di ponderazione integrato

Dopo aver raccolto una quantità adeguata di dati di addestramento etichettati, possiamo utilizzare un algoritmo di apprendimento supervisionato per scoprire le relazioni tra le funzionalità e le classi. Scegliamo l'algoritmo XGBoost perché ha una comprovata esperienza, è altamente scalabile e può gestire i dati mancanti. Questa volta dobbiamo gestire lo squilibrio dei dati, altrimenti la classe maggioritaria (gli esempi non fraudolenti o negativi) dominerà l'apprendimento.

Formiamo e distribuiamo il nostro primo modello supervisionato utilizzando il contenitore dell'algoritmo XGBoost integrato di SageMaker. Questo è il nostro modello di base. Per gestire lo squilibrio dei dati, utilizziamo l'iperparametro scale_pos_weight, che confronta i pesi degli esempi di classi positivi rispetto agli esempi di classi negativi. Poiché il set di dati è molto distorto, impostiamo questo iperparametro su un valore conservativo: sqrt(num_nonfraud/num_fraud).

Formiamo e distribuiamo il modello come segue:

  1. Recupera l'URI del contenitore SageMaker XGBoost.
  2. Imposta gli iperparametri che vogliamo usare per l'addestramento del modello, incluso quello che abbiamo menzionato che gestisce lo squilibrio dei dati, scale_pos_weight.
  3. Crea uno stimatore XGBoost e addestralo con il nostro set di dati sui treni.
  4. Distribuisci il modello XGBoost addestrato su un endpoint gestito da SageMaker.
  5. Valuta questo modello di base con il nostro set di dati di test.

Quindi valutiamo il nostro modello con le stesse quattro metriche menzionate nell'ultimo passaggio. Questa volta possiamo anche calcolare la metrica ROC AUC.

. RCF XGBoost
Precisione equilibrata 0.560023 0.847685
Kappa di Cohen 0.003917 0.743801
F1 0.007082 0.744186
ROC UAC - 0.983515

Possiamo vedere che un metodo di apprendimento supervisionato XGBoost con lo schema di ponderazione (usando l'iperparametro scale_pos_weight) ottiene prestazioni significativamente migliori rispetto al metodo di apprendimento senza supervisione RCF. Tuttavia, c'è ancora spazio per migliorare le prestazioni. In particolare, l'aumento del punteggio Kappa di Cohen al di sopra di 0.8 sarebbe generalmente molto favorevole.

Oltre alle metriche a valore singolo, è anche utile esaminare le metriche che indicano le prestazioni per classe. Ad esempio, la matrice di confusione, la precisione per classe, il richiamo e il punteggio F1 possono fornire maggiori informazioni sulle prestazioni del nostro modello.

Matrice di confusione del modello XGBoost

. precisione ricordare punteggio f1 supporto
non la frode 1.00 1.00 1.00 28435
frode 0.80 0.70 0.74 46

Continua a inviare traffico di prova all'endpoint tramite Lambda

Per dimostrare come utilizzare i nostri modelli in un sistema di produzione, abbiamo creato un'API REST con Gateway API Amazon e una funzione Lambda. Quando le applicazioni client inviano richieste di inferenza HTTP all'API REST, che attiva la funzione Lambda, che a sua volta richiama gli endpoint del modello RCF e XGBoost e restituisce le previsioni dai modelli. Puoi leggere il codice della funzione Lambda e monitorare le chiamate sulla console Lambda.

Abbiamo anche creato uno script Python che effettua richieste di inferenza HTTP all'API REST, con i nostri dati di test come dati di input. Per vedere come è stato fatto, controlla il generate_endpoint_traffic.py file nel codice sorgente della soluzione. Gli output di previsione vengono registrati in un bucket S3 tramite un Firehose dati Amazon Kinesis flusso di consegna. Puoi trovare il nome del bucket S3 di destinazione nella console Kinesis Data Firehose e controllare i risultati della previsione nel bucket S3.

Addestra un modello XGBoost con la tecnica di sovracampionamento SMOTE

Ora che abbiamo un modello di base che utilizza XGBoost, possiamo vedere se le tecniche di campionamento progettate specificamente per problemi sbilanciati possono migliorare le prestazioni del modello. Noi usiamo Sovracampionamento delle minoranze sitetiche (SMOTE), che sovracampiona la classe di minoranza interpolando nuovi punti dati tra quelli esistenti.

I passi sono come segue:

  1. Usa SMOTE per sovracampionare la classe di minoranza (la classe fraudolenta) del nostro set di dati del treno. SMOTE sovracampiona la classe di minoranza da circa lo 0.17 al 50%. Si noti che questo è un caso di sovracampionamento estremo della classe minoritaria. Un'alternativa sarebbe utilizzare un rapporto di ricampionamento più piccolo, come avere un campione di classe di minoranza per ciascuno sqrt(non_fraud/fraud) campione maggioritario o utilizzando tecniche di ricampionamento più avanzate. Per ulteriori opzioni di sovracampionamento, fare riferimento a Confronta i campionatori di sovracampionamento.
  2. Definire gli iperparametri per l'addestramento del secondo XGBoost in modo che scale_pos_weight venga rimosso e gli altri iperparametri rimangano gli stessi di quando si addestra il modello XGBoost di base. Non abbiamo più bisogno di gestire lo squilibrio dei dati con questo iperparametro, perché lo abbiamo già fatto con SMOTE.
  3. Addestra il secondo modello XGBoost con i nuovi iperparametri sul set di dati del treno elaborato da SMOTE.
  4. Distribuisci il nuovo modello XGBoost su un endpoint gestito da SageMaker.
  5. Valuta il nuovo modello con il set di dati di test.

Quando valutiamo il nuovo modello, possiamo vedere che con SMOTE, XGBoost ottiene prestazioni migliori sulla precisione bilanciata, ma non sui punteggi Kappa e F1 di Cohen. La ragione di ciò è che SMOTE ha sovracampionato così tanto la classe delle frodi da aumentare la sua sovrapposizione nello spazio delle funzionalità con i casi non di frode. Poiché Kappa di Cohen dà più peso ai falsi positivi rispetto all'accuratezza bilanciata, la metrica diminuisce in modo significativo, così come la precisione e il punteggio F1 per i casi di frode.

. RCF XGBoost XGBoost SMOTE
Precisione equilibrata 0.560023 0.847685 0.912657
Kappa di Cohen 0.003917 0.743801 0.716463
F1 0.007082 0.744186 0.716981
ROC UAC - 0.983515 0.967497

Tuttavia, possiamo riportare l'equilibrio tra le metriche regolando la soglia di classificazione. Finora, abbiamo utilizzato 0.5 come soglia per etichettare se un punto dati è fraudolento o meno. Dopo aver sperimentato diverse soglie da 0.1 a 0.9, possiamo vedere che il Kappa di Cohen continua ad aumentare insieme alla soglia, senza una significativa perdita di precisione bilanciata.

Sperimenta diverse soglie per riportare l'equilibrio tra le metriche

Questo aggiunge un'utile calibrazione al nostro modello. Possiamo utilizzare una soglia bassa se non mancare alcun caso fraudolento (falsi negativi) è la nostra priorità, oppure possiamo aumentare la soglia per ridurre al minimo il numero di falsi positivi.

Addestra un modello XGBoost ottimale con HPO

In questo passaggio, dimostriamo come migliorare le prestazioni del modello addestrando il nostro terzo modello XGBoost con l'ottimizzazione degli iperparametri. Quando si creano sistemi ML complessi, l'esplorazione manuale di tutte le possibili combinazioni di valori di iperparametro non è praticabile. La funzione HPO in SageMaker può accelerare la tua produttività provando molte varianti di un modello per tuo conto. Cerca automaticamente il modello migliore concentrandosi sulle combinazioni più promettenti di valori di iperparametro all'interno degli intervalli specificati.

Il processo HPO necessita di un set di dati di convalida, quindi prima dividiamo ulteriormente i nostri dati di addestramento in set di dati di addestramento e convalida utilizzando campionamento stratificato. Per affrontare il problema dello squilibrio dei dati, utilizziamo nuovamente lo schema di ponderazione di XGBoost, impostando il scale_pos_weight iperparametro a sqrt(num_nonfraud/num_fraud).

Creiamo uno stimatore XGBoost utilizzando il contenitore dell'algoritmo XGBoost integrato di SageMaker e specifichiamo la metrica di valutazione oggettiva e gli intervalli di iperparametri entro i quali vorremmo sperimentare. Con questi creiamo quindi un Sintonizzatore iperparametri e dare il via al lavoro di ottimizzazione dell'HPO, che addestra più modelli in parallelo, alla ricerca di combinazioni di iperparametri ottimali.

Al termine del processo di ottimizzazione, possiamo visualizzare il relativo report di analisi e ispezionare gli iperparametri di ciascun modello, le informazioni sul processo di addestramento e le sue prestazioni rispetto alla metrica di valutazione oggettiva.

Elenco delle informazioni di ciascun modello dal lavoro di ottimizzazione

Quindi distribuiamo il modello migliore e lo valutiamo con il nostro set di dati di test.

Valuta e confronta tutte le prestazioni del modello sugli stessi dati di test

Ora abbiamo i risultati della valutazione di tutti e quattro i modelli: RCF, XGBoost baseline, XGBoost con SMOTE e XGBoost con HPO. Confrontiamo le loro prestazioni.

. RCF XGBoost XGBoost con SMOTE XGBoost con HPO
Precisione equilibrata 0.560023 0.847685 0.912657 0.902156
Kappa di Cohen 0.003917 0.743801 0.716463 0.880778
F1 0.007082 0.744186 0.716981 0.880952
ROC UAC - 0.983515 0.967497 0.981564

Possiamo vedere che XGBoost con HPO ottiene prestazioni ancora migliori rispetto a quelle con il metodo SMOTE. In particolare, i punteggi Kappa di Cohen e F1 sono superiori a 0.8, indicando una prestazione ottimale del modello.

ripulire

Al termine di questa soluzione, assicurati di eliminare tutte le risorse AWS indesiderate per evitare addebiti indesiderati. Nel Elimina soluzione sezione nella scheda della soluzione, scegli Elimina tutte le risorse per eliminare le risorse create automaticamente all'avvio di questa soluzione.

Pulisci eliminando la soluzione

In alternativa, è possibile utilizzare AWS CloudFormazione per eliminare tutte le risorse standard create automaticamente dalla soluzione e dal notebook. Per utilizzare questo approccio, nella console AWS CloudFormation, trova lo stack CloudFormation la cui descrizione contiene rilevamento delle frodi mediante machine learning ed eliminalo. Questo è uno stack padre e la scelta di eliminare questo stack eliminerà automaticamente gli stack nidificati.

Pulisci tramite CloudFormation

Con entrambi gli approcci, è comunque necessario eliminare manualmente eventuali risorse aggiuntive che potresti aver creato in questo blocco appunti. Alcuni esempi includono bucket S3 aggiuntivi (oltre al bucket predefinito della soluzione), endpoint SageMaker aggiuntivi (utilizzando un nome personalizzato) e Registro dei contenitori Amazon Elastic (Amazon ECR) repository.

Conclusione

In questo post, ti abbiamo mostrato come creare il nucleo di un sistema di rilevamento delle frodi con carte di credito dinamico, auto-migliorante e gestibile utilizzando ML con SageMaker. Abbiamo creato, addestrato e distribuito un modello di rilevamento delle anomalie RCF non supervisionato, un modello XGBoost supervisionato come linea di base, un altro modello XGBoost supervisionato con SMOTE per affrontare il problema dello squilibrio dei dati e un modello XGBoost finale ottimizzato con HPO. Abbiamo discusso di come gestire lo squilibrio dei dati e utilizzare i propri dati nella soluzione. Abbiamo anche incluso un esempio di implementazione dell'API REST con API Gateway e Lambda per dimostrare come utilizzare il sistema nell'infrastruttura aziendale esistente.

Per provarlo tu stesso, apri Sage Maker Studio e avvia la soluzione JumpStart. Per saperne di più sulla soluzione, dai un'occhiata Repository GitHub.


Informazioni sugli autori

Xiaoli ShenXiaoli Shen è un membro della Solutions Architect e della Machine Learning Technical Field Community (TFC) di Amazon Web Services. Si concentra sull'aiutare i clienti a progettare sul cloud e sfruttare i servizi AWS per ricavare valore aziendale. Prima di entrare in AWS, è stata responsabile tecnico e ingegnere senior full-stack per la creazione di sistemi distribuiti ad alta intensità di dati sul cloud.

Rileva transazioni fraudolente utilizzando il machine learning con Amazon SageMaker PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Dott. Xin Huang è uno scienziato applicato per gli algoritmi integrati Amazon SageMaker JumpStart e Amazon SageMaker. Si concentra sullo sviluppo di algoritmi di apprendimento automatico scalabili. I suoi interessi di ricerca sono nell'area dell'elaborazione del linguaggio naturale, del deep learning spiegabile su dati tabulari e dell'analisi robusta del clustering spazio-temporale non parametrico. Ha pubblicato molti articoli su ACL, ICDM, conferenze KDD e Royal Statistical Society: rivista di serie A.

Rileva transazioni fraudolente utilizzando il machine learning con Amazon SageMaker PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Giainista Vedante è un Senior AI/ML Specialist Solutions Architect, che aiuta i clienti a trarre valore dall'ecosistema di Machine Learning in AWS. Prima di entrare in AWS, Vedant ha ricoperto posizioni di ML/Data Science Specialty in varie aziende come Databricks, Hortonworks (ora Cloudera) e JP Morgan Chase. Al di fuori del suo lavoro, Vedant è appassionato di fare musica, usare la scienza per condurre una vita significativa ed esplorare la deliziosa cucina vegetariana di tutto il mondo.

Timestamp:

Di più da Apprendimento automatico di AWS