La recente e notevole accelerazione dell'e-commerce ha generato un corrispondente aumento delle frodi nei pagamenti online. In tutto il mondo, le frodi costano alle attività più di 20 miliardi di dollari all'anno. Inoltre, per ogni dollaro perso a causa delle frodi, il costo totale per le attività è in realtà molto più alto a causa dell'aumento dei costi operativi, delle commissioni dei circuiti e dell'abbandono dei clienti.
Non esiste solo l'aspetto economico: infatti, sofisticati truffatori escogitano continuamente nuovi modi per sfruttare le debolezze, complicando notevolmente la lotta alle frodi. Ecco perché abbiamo ideato Stripe Radar, una soluzione per prevenire le frodi basata sul machine learning, completamente integrata nella piattaforma Stripe. Il machine learning di Radar sfrutta i dati ricavati da centinaia di miliardi di dollari di pagamenti elaborati sull'intera rete Stripe ogni anno per rilevare con accuratezza le frodi e adattarsi rapidamente alle ultime tendenze, consentendoti così di crescere senza aumentare il tasso di frodi.
Questa guida presenta i concetti di base relativi a Stripe Radar e illustra come Stripe sfrutta la sua rete per rilevare le frodi, offre una panoramica delle tecniche di machine learning che utilizziamo, spiega come valutiamo l'efficacia e le prestazioni dei sistemi di rilevamento delle frodi e descrive come gli altri strumenti disponibili nella suite di Radar possono aiutare le attività a ottimizzare le proprie prestazioni in termini di prevenzione delle frodi.
Introduzione alle frodi con carta di credito online
Un pagamento è considerato fraudolento quando il titolare della carta non autorizza l'addebito. Ad esempio, se un truffatore fa un acquisto utilizzando il numero di una carta rubata ma il cui furto non è stato segnalato, è possibile che il pagamento vada a buon fine. Poi, nel momento in cui il titolare della carta ne scopre l'uso fraudolento, probabilmente chiederà delucidazioni alla sua banca in merito al pagamento presentando una contestazione (spesso chiamata anche "storno").
Le attività possono contestare gli storni presentando prove che attestino la validità del pagamento. Tuttavia, per quanto riguarda le transazioni senza carta presente, se i circuiti ritengono che il pagamento fosse davvero fraudolento, il titolare della carta vincerà e l'attività sarà responsabile per la perdita di merci e altre spese.
Storicamente, le attività hanno usato regole di forza bruta per prevedere e bloccare gli addebiti fraudolenti sospetti. Tuttavia, le regole a codifica fissa (ad esempio, bloccare tutte le carte di credito usate all'estero) possono comportare il blocco di molte transazioni legittime. Il machine learning, d'altro canto, è in grado di rilevare più sfumature, il che ti aiuterà a massimizzare i ricavi. Nel gergo del machine learning, un falso negativo si ha quando al sistema sfugge qualcosa che avrebbe invece dovuto rilevare, in questo caso una transazione fraudolenta. Un falso positivo si ha quando il sistema contrassegna qualcosa che invece non avrebbe dovuto, per esempio quando blocca un cliente legittimo. Prima di entrare nei dettagli del machine learning, è importante capire quali sono i compromessi da fare.
Nel caso dei falsi negativi, spesso le attività sono responsabili dell'importo della transazione originale più le spese di storno (il costo della banca per lo storno del pagamento con carta), di maggiori spese di circuito dovute alla contestazione e di maggiori costi operativi per la revisione degli addebiti e la gestione delle contestazioni. Inoltre, se si ricevono troppe contestazioni, si potrebbe essere inseriti in un programma di monitoraggio degli storni del circuito, il che comporta un aumento dei costi o, talvolta, l'impossibilità di accettare pagamenti con carta.
I falsi positivi, o falsi rifiuti, si hanno quando un cliente legittimo tenta di fare un acquisto ma gli viene impedito. I falsi rifiuti possono avere risvolti negativi per le attività sia dal punto di vista dell'utile lordo che in termini di reputazione. Effettivamente, da una recente indagine è emerso che il 33% dei clienti dichiara di non voler più acquistare da un'attività a seguito di un falso rifiuto.
Tra prevenire un maggior numero di contestazioni (falsi negativi) e ridurre il blocco di clienti legittimi (falsi positivi) bisogna trovare il giusto compromesso: se si diminuiscono le contestazioni, occorre avere maggiore tolleranza sul secondo aspetto (e viceversa). Nel momento in cui si riesce a prevenire più frodi, significa che aumenterà il numero di clienti in buona fede bloccati. D'altra parte, la riduzione del numero di falsi positivi spesso aumenta la probabilità che le vere frodi passino inosservate. Le attività devono decidere come bilanciare questi aspetti in base ai margini, al profilo di crescita e ad altri fattori.
Se un'attività ha poco margine (ad esempio, se vende alimentari online), il costo di una transazione fraudolenta potrebbe dover essere compensato con centinaia di transazioni legittime, il che renderebbe ciascun falso positivo estremamente costoso. Le attività caratterizzate da questo profilo potrebbero preferire estendere il campo di ricerca nel tentativo di bloccare le potenziali frodi. D'altro canto, se un'attività ha margini elevati (ad esempio, un'attività SaaS), sarà vero il contrario. I ricavi persi per un cliente legittimo bloccato potrebbero superare i costi di un aumento delle frodi.
Stripe Radar e la rete Stripe
Radar è la soluzione di prevenzione delle frodi di Stripe, che tutela le aziende dalle frodi via carta di credito online. Si basa sul machine learning adattivo, risultato di anni di lavoro svolto dai team che si occupano di machine learning in Stripe nel campo della data science e delle infrastrutture. Gli algoritmi di Radar valutano il rischio di frode di ciascuna transazione e prendono le dovute misure. I pagamenti a punteggio elevato vengono bloccati e Radar for Fraud Teams mette a disposizione degli strumenti in modo tale che gli utenti possano specificare in quali occasioni sarebbe opportuno prendere ulteriori misure.
Stripe elabora centinaia di miliardi di pagamenti effettuati da milioni di aziende e interagisce con migliaia di banche partner dislocate in tutto il mondo ogni anno. Questa espansione ci permette di vedere segnali e schemi, spesso molto prima di altre reti più piccole. I dati aggregati pertinenti alle frodi derivanti da tutte le transazioni Stripe, raccolti in automatico attraverso il flusso dei pagamenti, vengono utilizzati per migliorare la nostra capacità di rilevamento delle frodi. Segnali quali il paese in cui la carta è stata emessa o l'indirizzo IP da cui il pagamento è stato effettuato offrono informazioni preziose da utilizzare per prevedere la probabilità che un pagamento sia fraudolento.
Anche gli usi precedenti di una carta sulla rete Stripe offrono quantità significative di dati utilizzabili nelle nostre valutazioni del rischio. Il 90% delle carte utilizzate sulla rete Stripe viene visto più di una volta, il che offre dati ben più rilevanti per valutare se queste carte vengono utilizzate in modo legittimo o fraudolento.
Un altro vantaggio fondamentale offerto dal nostro machine learning consiste nel fatto che Radar è realizzato direttamente all'interno di Stripe ed è pronto all'uso. Altre soluzioni di prevenzione delle frodi in genere richiedono una spesa iniziale notevole e investimenti continui. Innanzitutto le aziende devono eseguire l'integrazione con il prodotto per le frodi, il che prevede interventi tecnici per inviare i dati su eventi e pagamenti pertinenti. Poi le aziende sono tenute a completare un'integrazione per trasferire le etichette dei pagamenti (una categorizzazione in base alla quale la transazione era fraudolenta o meno) dal sistema di elaborazione dei pagamenti al fornitore del sistema di prevenzione delle frodi oppure etichettare manualmente i pagamenti, il che può richiedere tempi incredibilmente lunghi e il rischio di errore è estremamente elevato. Radar, invece, riceve dati sul campo direttamente dal solito flusso di pagamento di Stripe e accede a dati aggiornati e precisi direttamente dalle società emittenti o dai circuiti delle carte di credito, senza alcun tipo di codice o intervento tecnico aggiuntivo.
Cerchiamo di dare un'occhiata più da vicino a come funziona il machine learning e a come lo utilizza Stripe.
Nozioni base del machine learning
Il machine learning è un insieme di tecniche con cui si acquisiscono grandi quantità di dati da utilizzare per produrre modelli che prevedono dei risultati, come la probabilità che un addebito porti a una contestazione per frode.
Una della applicazioni principali del machine learning è la previsione: vogliamo prevedere il valore di alcune variabili di output a partire da determinati valori di input. Nel nostro caso, il valore di output è vero se il pagamento è fraudolento, è falso se non lo è (questi valori binari sono definiti booleani), e un esempio di valore di input potrebbe essere il paese in cui è stata emessa la carta oppure il numero di paesi in cui la carta è stata utilizzata sull'intera rete Stripe nelle ultime 24 ore. Stabiliamo come fare una previsione in base agli esempi precedenti di dati di input e di output.
I dati utilizzati per addestrare (o generare) i modelli sono costituiti da cosiddetti "record" (spesso ottenuti da dati storici) che hanno sia il valore di output che svariati valori di input, proprio come si vede nell'esempio che segue (estremamente semplificato):
Importo in USD
|
Paese carta
|
Paesi da cui è stata usata la carta (24 ore)
|
Frode?
|
---|---|---|---|
10,00 $ | US | 1 | No |
10,00 $ | CA | 2 | No |
10,00 $ | CA | 1 | No |
10,00 $ | US | 1 | Sì |
30,00 $ | US | 1 | Sì |
99,00 $ | CA | 1 | Sì |
Anche se in questo esempio abbiamo solo tre input, nella realtà spesso i modelli di machine learning hanno centinaia o migliaia di input. L'output dell'algoritmo di machine learning potrebbe essere un modello come l'albero decisionale che segue:
Quando osserviamo una nuova transazione, diamo un occhiata ai valori di input e percorriamo l'albero adottando lo stile del cosiddetto "gioco delle 20 domande" fino ad arrivare alle "foglie". Ogni foglia è costituita da tutti i campioni nel set di dati (cfr. tabella sopra) che soddisfano la coppia domanda-risposta lungo il percorso che abbiamo fatto nell'albero, e la probabilità per cui secondo noi la nuova transazione è fraudolenta è il numero di campioni fraudolenti nella foglia, diviso per il numero totale di campioni nella foglia. In altre parole, l'albero risponde alla domanda: "Delle transazioni presenti nel nostro set di dati con proprietà simili a quelle della transazione che stiamo esaminando ora, qual era la frazione effettivamente fraudolenta?". La parte di machine learning è quella che si occupa della costruzione dell'albero: quali domande dobbiamo fare, e in quale ordine, per aumentare al massimo le possibilità di distinguere con accuratezza le due classi? Gli alberi decisionali sono particolarmente facili da visualizzare e analizzare, ma gli algoritmi di apprendimento sono numerosi e diversi, ognuno dei quali ha un suo modo unico per rappresentare le relazioni che stiamo cercando di modellare.
I modelli di machine learning di oggi sono prevalenti e da dietro le quinte muovono molti dei prodotti con cui interagiamo di frequente. Inoltre, di solito sono molto più sofisticati del modello giocattolo di cui sopra:
- Con la sua funzione "Forse cercavi" disponibile nello strumento di ricerca, Google fornisce in modo accurato e preciso dei suggerimenti ortografici usando il machine learning per modellare milioni di parametri correlati alla lingua in meno di tre secondi.
- Amazon usa il machine learning per prevedere gli acquisti con il suo sistema di raccomandazioni basato sulle esigenze, le preferenze e i comportamenti mutevoli degli utenti sull'intera piattaforma, anche per gli utenti nuovi per i quali non sono disponibili dati storici.
E, per arrivare all'aspetto che ci interessa di più, il machine learning è alla base di Stripe Radar, il cui obiettivo è quello di prevedere quali dei tuoi pagamenti sono fraudolenti.
Come funziona il machine learning?
I corsi universitari di machine learning in genere si concentrano sul processo di modellazione, ovvero sui metodi per tradurre i dati (come la tabella qui sopra) in modelli (come l'albero decisionale), quali sono gli algoritmi che ti dicono in che modo i valori di input (paese in cui è stata emessa la carta, numero di paesi da cui è stata usata la carta, ecc.) vengono mappati sui valori di output (la transazione era fraudolenta oppure no?). Il processo che prende la tabella con i dati di input qui sopra e produce l'albero "migliore" è un esempio di un metodo di machine learning particolare. La modellazione prevede una serie di passaggi, che dipendono dalla natura dei dati e dai modelli che hai scelto di usare. Non faremo un'analisi dettagliata, ma qui di seguito puoi trovare una panoramica generale.
Innanzitutto, dobbiamo ottenere i dati di addestramento. Prima di poter iniziare a rilevare automaticamente le frodi, ci occorre un dataset con degli esempi. Per ciascun esempio, dobbiamo aver registrato (o essere capaci di calcolare retroattivamente) una serie di proprietà di input che potrebbero essere utili nel fare previsioni future circa il valore di output. Queste proprietà di input si chiamano feature. La raccolta di tutti gli input per un dato campione è un vettore di feature. Nel nostro esempio qui sopra, il vettore di feature aveva una lunghezza pari a tre (il paese in cui è stata emessa la carta, il numero di paesi da cui è stata usata la carta nelle ultime 24 ore e l'importo del pagamento in USD).
Tuttavia, non è raro incontrare vettori di feature con centinaia o migliaia di feature. Radar, per esempio, usa centinaia di feature che, in gran parte, sono valori aggregati calcolati a partire da tutta la rete Stripe. Con l'espandersi della rete, ogni feature diventa più informativa in quanto i nostri dati di addestramento diventano più rappresentativi dell'intero set di dati della feature, compresi tutti i dati non Stripe. Il valore di output (nel nostro modello, il valore booleano secondo cui la transazione era fraudolenta o meno) viene spesso definito target o etichetta. I dati di addestramento, pertanto, sono costituiti da tanti vettori di feature e dai corrispondenti valori di output.
In secondo luogo, dobbiamo addestrare un modello. Sulla base dei dati di addestramento, ci serve un metodo per produrre il nostro modello predittivo. I classificatori di machine learning in genere non si limitano a generare l'etichetta di una classe, ma di solito assegnano delle probabilità al fatto che un dato campione appartenga a ogni possibile classe. Ad esempio, l'output di un classificatore di frodi potrebbe essere una valutazione secondo cui il pagamento ha il 65% delle probabilità di essere fraudolento e il 35% delle probabilità di essere legittimo.
Le tecniche di machine learning da adottare per addestrare i modelli sono numerose. Per gran parte delle applicazioni industriali del machine learning sono sufficienti gli approcci più tradizionali come la regressione lineare, gli alberi decisionali o le foreste casuali.
Tuttavia, esistono delle tecniche sofisticate, come le reti neurali e il deep learning, che si ispirano all'architettura dei neuroni nel cervello e che sono responsabili di molti dei progressi fatti nel settore, come le previsioni di AlphaFold per il 98% delle proteine umane. I veri vantaggi delle reti neurali diventano evidenti solo quando queste vengono addestrate su dataset molto grandi per cui, nella pratica, sono poche le aziende che riescono a sfruttarle appieno. Date le dimensioni della nostra rete, Stripe è in grado di adottare questo approccio più innovativo per offrire risultati reali agli utenti. I nostri nuovi modelli hanno migliorato le prestazioni di machine learning di Radar di più del 20% anno dopo anno, aiutandoci a rilevare un numero maggiore di frodi e mantenendo al contempo basso il numero di falsi positivi.
Ingegneria delle feature
Una delle parti più complesse del machine learning industriale è l'ingegneria delle feature, che consiste in due passaggi:
Formulazione di feature che abbiano un valore predittivo basato su un'ampia conoscenza del dominio del problema
Ingegneria per rendere i valori di tali feature disponibili sia per l'addestramento del modello che per la valutazione del modello in "produzione"
Nel formulare una feature, un data scientist di Stripe può avere il presentimento che una feature utile sarebbe quella di calcolare se il pagamento con carta proviene da un indirizzo IP usuale per quella carta. Per esempio, un pagamento con carta proveniente da indirizzi IP già visti prima (come l'abitazione o il posto di lavoro del titolare della carta) hanno una probabilità inferiore di essere fraudolenti rispetto a quando l'indirizzo IP è associato a uno Stato diverso. In questo caso, l'idea è intuitiva ma in generale questi presentimenti sono legati al fatto di aver esaminato migliaia di casi di frodi. Per esempio, sembra incredibile come il calcolo della differenza tra l'orario visualizzato sul dispositivo dell'utente e l'orario UTC (Coordinated Universal Time) corrente o del numero di paesi in cui è stata correttamente autorizzata la carta sia utile a rilevare casi di frode.
Una volta trovata l'idea per la feature, dobbiamo calcolarne i valori storici in modo da poter addestrare un nuovo modello che includa quella feature: questa è la fase in cui si aggiunge una nuova colonna alla "tabella" di dati che usiamo per produrre il nostro modello. Per procedere con la nostra feature candidata, per ogni pagamento nella cronologia di Stripe, dobbiamo calcolare i due indirizzi IP più frequenti da cui sono stati eseguiti i pagamenti precedenti con la carta. Possiamo farlo in modalità distribuita con un'attività di Hadoop, ma anche così l'operazione potrebbe impiegare troppo tempo (o spazio di memoria). Potremmo quindi provare a ottimizzare i calcoli usando una struttura di dati probabilistica che occupi poco spazio. Anche per le feature che appaiono semplici da un punto di vista intuitivo, la produzione di dati per l'addestramento del modello richiede un'infrastruttura dedicata e dei flussi di lavoro stabiliti.
Non tutte le feature sono create a mano dagli ingegneri; alcune vengono calcolate dal modello con test successivi prima della distribuzione. I valori categoriali, come il paese di origine di una carta o l'esercente che ha elaborato una transazione (in opposizione alle feature numeriche), si prestano bene a questo tipo di approccio. Tali feature hanno spesso un'ampia gamma di valori e definirne una buona rappresentazione può risultare piuttosto difficoltoso.
Noi di Stripe addestriamo i nostri modelli in modo che apprendano un embedding per ciascun esercente in base agli schemi delle transazioni. Gli embedding possono essere visti come delle coordinate di ogni singolo esercente rispetto a tutti gli altri. Esercenti simili tra loro avranno spesso embedding simili (come misurato tramite la distanza del coseno), il che consente al modello di trasferire ciò che ha appreso da un esercente all'altro. La tabella qui sotto mostra l'aspetto che potrebbero avere questi embedding, considerato che è più probabile che Uber e Lyft siano più simili tra loro rispetto a Slack. Noi di Stripe utilizziamo gli embedding per svariate feature categoriali, come la banca di emissione, il paese dell'esercente e dell'utente, il giorno della settimana e molto altro ancora.
Coordinate di integrazione illustrative
|
|||
---|---|---|---|
Uber
|
2.34 | 1.1 | -3.5 |
Lyft
|
2.1 | 1.2 | -2 |
Slack
|
7 | -2 | 1 |
Nelle applicazioni industriali su larga scala del machine learning, gli embedding sono sempre più utilizzati. I word embedding come questi, ad esempio, aiutano a catturare le complesse relazioni semantiche tra le parole e sono stati utilizzati in importanti progressi nel campo dell'elaborazione del linguaggio naturale come Word2Vec, BERT e GPT-3. Stripe produce embedding per carpire le relazioni di similitudine tra entità diverse sulla rete Stripe nello stesso modo in cui i metodi sopra descritti acquisiscono similitudini tra le parole. Gli embedding sono uno strumento efficace per apprendere concetti di livello superiore senza un addestramento esplicito. Ad esempio, gli schemi di frode sono spesso distribuiti in modo disomogeneo a livello geografico. Con gli embedding, se il nostro sistema individua un nuovo schema di frode in Brasile, può riconoscere automaticamente lo stesso schema qualora dovesse ripresentarsi negli Stati Uniti, senza ulteriore addestramento. In tal modo, i progressi algoritmici ci aiutano a rimanere sempre al passo con il modificarsi degli schemi di frode, a tutela dei nostri clienti.
Se ti interessa lavorare con i prodotti di machine learning in Stripe, contattaci.
Valutazione dei modelli di machine learning
Dopo aver creato un classificatore per le frodi con il machine learning che usa centinaia di feature e assegna una probabilità (o un punteggio) secondo cui il pagamento è frudolento a ogni transazione in entrata, dobbiamo determinare quanto è efficace il nostro modello nel rilevare le frodi.
Termini chiave
Per capire meglio come valutiamo i nostri sistemi di machine learning, è utile definire alcuni termini chiave.
Iniziamo presupponendo di aver creato una politica per bloccare un pagamento nel caso in cui il modello di machine learning assegna alla transazione una probabilità di essere fraudolenta pari almeno allo 0,7 (e lo scriveremo così: P(frode)>0,7). Di seguito riportiamo alcune quantità utili per ragionare sulle prestazioni del nostro modello e della politica:
Precisione (precision): la precisione della nostra politica corrisponde alla frazione di transazioni bloccate che sono effettivamente fraudulente. Maggiore è la precisione, minori saranno i falsi positivi. Poniamo che su 10 transazioni, P(frode)>0,7 per sei e, di quelle sei, quattro siano effettivamente fraudolente. La precisione sarà quindi 4/6=0,66.
Richiamo (recall): questo concetto è noto anche come sensibilità o tasso di falsi positivi, e rappresenta la frazione di tutte le frodi individuate dalla nostra politica, vale a dire la frazione delle frodi per cui P(frode)>0,7. Maggiore è il richiamo, minori saranno i falsi negativi. Poniamo che su 10 transazioni, cinque siano effettivamente fraudolente. Se il nostro modello assegna a quattro di queste transazioni un valore P(frode)>0,7, allora il richiamo sarà 4/5=0,8.
Tasso di falsi positivi: il tasso di falsi positivi corrisponde alla frazione di tutti i pagamenti legittimi che sono stati erroneamente bloccati dalla nostra politica. Poniamo che su 10 transazioni, cinque siano legittime. Se il nostro modello assegna a due di queste transazioni un valore P(frode)>0,7, allora il tasso di falsi positivi sarà 2/5=0,4.
Sebbene nel valutare un classificatore sia possibile prendere in considerazione anche altre quantità, noi ci focalizzeremo su queste tre.
Curve di precisione-richiamo e curve ROC
La domanda che viene naturale porsi a questo punto è quali siano dei buoni valori per precisione, richiamo e tasso di falsi positivi. In un modo ideale, la precisione dovrebbe essere pari a 1,0 (vale a dire che il 100% delle transazioni classificate come frodi sono effettivamente delle frodi), in modo tale da avere un tasso di falsi positivi pari a 0 (nessuna transazione legittima è stata erroneamente classificata come fraudolenta), e anche il richiamo dovrebbe corrispondere a 1,0 (il 100% delle frodi vengono riconosciute come tali).
In realtà, invece, esiste un compromesso tra precisione e richiamo: man mano che la soglia di probabilità per il blocco aumenta, la precisione aumenta (dato che il criterio per bloccare diventa più rigido) e il richiamo diminuisce (dato che un numero minore di transazioni risponde al criterio di alta probabilità). Per un dato modello, la curva di precisione-richiamo cattura il compromesso tra precisione e richiamo mano mano che la soglia della politica varia:
Man mano che il nostro modello migliora nel suo complesso, grazie all'addestramento di un numero sempre maggiore di dati provenienti da tutta la rete Stripe, all'aggiunta di feature che sono buoni strumenti di previsione delle frodi e alla messa a punto di altri parametri del modello, la curva di precisione-richiamo cambierà, come mostrato nell'esempio qui sopra. Mentre il modello controlla il compromesso per le aziende su Stripe, noi monitoriamo con attenzione l'impatto sulla curva di precisione-richiamo quando i nostri data scientist e gli ingegneri di machine learning modificano i modelli.
Quando si prende in considerazione un grafico di precisione-richiamo, è importante distinguere tra due nozioni di "prestazioni". Per suo conto, un modello è complessivamente migliore quanto più si avvicina alla parte in alto a destra del grafico (ovvero dove la precisione e il richiamo sono entrambi a 1,0). Tuttavia, per rendere operativo un modello in genere occorre selezionare un punto operativo sulla curva di precisione-richiamo (nel nostro caso, la soglia della politica per bloccare una transazione), che controlla l'impatto concreto usando il modello su un'azienda.
In poche parole, i problemi sono due:
Il problema di data science di produrre un buon modello di machine learning aggiungendo le feature corrette. Il modello controlla la forma della curva di precisione-richiamo.
Il problema aziendale di scegliere una politica per decidere quante frodi potenziali bloccare. La politica controlla in quale posizione della curva stiamo operando.
Un'altra curva che viene esaminata quando si valuta un modello di machine learning è la curva ROC (ROC sta per Receiver Operating Characteristic, ovvero "caratteristica operativa del ricevitore", ciò che resta dell'origine della curva nelle applicazioni di elaborazione dei segnali). La curva ROC è una rappresentazione grafica del tasso di falsi positivi (sull'asse x) e del tasso di veri positivi (che corrisponde al richiamo) sull'asse y per vari valori della soglia della politica.
Il valore ROC ideale si troverà in alto a sinistra del grafico (dove il richiamo è pari a 1,0 e il tasso di falsi positivi è 0,0), e man mano che il modello migliora il ROC si sposterà sempre più in quella direzione. Un modo per comprendere qual è il livello di qualità generale del modello consiste nel calcolare l'area sotto la curva (AUC); nel caso ideale, il valore di AUC sarà pari a 1,0. Quando sviluppiamo i nostri modelli, cerchiamo di capire come cambiano la curva di precisione-richiamo, la curva ROC e l'AUC.
Distribuzioni dei punteggi
Immaginiamo di avere un modello che assegna in modo casuale una probabilità di frode tra 0,0 e 1,0 a una transazione. In pratica, questo modello non fa niente per discriminare le transazioni fraudolente da quelle legittime, e così com'è non è molto utile. Questa casualità viene acquisita dalla distribuzione dei punteggi del modello, la frazione di transazioni che ottiene ogni punteggio possibile. Nel caso dell'assegnazione completamente casuale, la distribuzione dei punteggi si avvicinerebbe molto a una distribuzione uniforme:
Un modello avrà una distribuzione uniforme dei punteggi come quella mostrata sopra se, ad esempio, il modello non ha nessuna feature che non possa assolutamente essere considerata predittiva di una frode. Man mano che un modello viene migliorato (aggiungendo feature predittive, addestrandolo sulla base di più dati e così via), la sua efficacia nel distinguere tra classi fraudolente e legittime aumenterà e la distribuzione dei punteggi diventerà più bimodale, con picchi attorno ai punteggi 0,0 e 1,0.
Da sola, una distribuzione bimodale non è in grado di dirti se un modello è efficace (anche un modello vuoto che assegna in modo casuale solo probabilità di tipo 0,0 e 1,0 avrebbe una distribuzione di punteggi bimodale). Tuttavia, in presenza di prove secondo cui le transazioni con un punteggio basso non sono fraudolente e le transazioni con un punteggio alto lo sono, una distribuzione sempre più bimodale è indicativa del fatto che l'efficacia di un modello è migliorata.
A modelli diversi spesso sono associate distribuzioni diverse dei punteggi. Nel momento in cui pubblichiamo nuovi modelli, confrontiamo le distribuzioni precedenti con quelle aggiornate, al fine di ridurre al minimo i cambiamenti più dirompenti dovuti a una modifica improvvisa dei punteggi. In particolare, prendiamo in considerazione le politiche di blocco attuali degli esercenti, ovvero la soglia in corrispondenza della quale le transazioni vengono bloccate, puntando a mantenere stabile la proporzione di transazioni che ricade al di sotto della soglia.
Calcolo della precisione e del richiamo
Possiamo calcolare le metriche indicate sopra in due contesti diversi: in fase di addestramento del modello, utilizzando i dati storici che danno il via al processo di sviluppo del modello, e dopo la distribuzione del modello, utilizzando i dati di produzione, ovvero i dati provenienti dal mondo reale una volta che il modello è già stato utilizzato, per intervenire, ad esempio, bloccando le transazioni se P(frode)>0,7.
Nel primo caso, i data scientist in genere prendono i dati di addestramento di cui dispongono (cfr. tabella sopra) e assegnano in modo causale una parte dei risultati a un set di addestramento e l'altra a un set di validazione. Ad esempio, si potrebbe pensare di assegnare l'80% delle righe al primo gruppo e il restante 20% al secondo gruppo.
Il set di addestramento rappresenta i dati utilizzati per produrre un modello tramite il machine learning, così come descritto prima. Una volta individuato un modello candidato, è possibile utilizzarlo per assegnare punteggi a ciascun campione nel set di validazione. I punteggi del set di validazione e i relativi valori di output vengono utilizzati per calcolare la curva ROC e la curva di precisione-richiamo, le distribuzioni dei punteggi e così via. Il motivo per cui usiamo un set di validazione separato dal set di addestramento è che il modello ha già "visto la risposta" per i suoi esempi di addestramento e ha imparato da queste risposte. Un set di validazione ci aiuta a generare delle metriche capaci di misurare con precisione l'efficacia predittiva del modello su dati nuovi.
Operazioni di machine learning: distribuire modelli in modo sicuro e frequente
Una volta stabilito che le prestazioni di un modello sono superiori a quelle dell'attuale modello di produzione su un set separato, la fase successiva consiste nel distribuirlo in produzione. Questa procedura prevede due sfide importanti:
Calcoli in tempo reale: dobbiamo riuscire a calcolare il valore di ogni feature per ogni nuovo pagamento in tempo reale poiché vogliamo poter bloccare tutte le transazioni che secondo il nostro classificatore sono potenzialmente fraudolente. Questo calcolo è totalmente separato da quello utilizzato per produrre i dati di addestramento. Dobbiamo mantenere aggiornati i due indirizzi IP usati più di frequente per tutte le carte utilizzate su Stripe e le operazioni di acquisizione e aggiornamento di tali dati devono essere rapide in quanto avvengono nell'ambito del flusso dell'API Stripe. I team che si occupano dell'infrastruttura di machine learning in Stripe hanno semplificato tutto ciò, realizzando dei sistemi per specificare le feature in modo dichiarativo e rendere i valori correnti delle feature disponibili in automatico in produzione con bassa latenza.
Applicazione utente nel mondo reale: distribuire un modello di machine learning è diverso dal distribuire codice: mentre le modifiche al codice sono spesso convalidate con casi di test precisi, le modifiche ai modelli in genere vengono testate su set di dati aggregati di grandi dimensioni con metriche come quelle che abbiamo definito sopra. Ma un modello più efficace nell'individuare le frodi su dati aggregati potrebbe non essere il più efficace per ogni singolo utente Stripe. Potrebbe accadere che il miglioramento delle prestazioni non sia distribuito in modo uniforme, per cui pochi esercenti di grandi dimensioni vedrebbero dei vantaggi mentre molti esercenti di piccole dimensioni assisterebbero a piccole regressioni. Un modello potrebbe avere un richiamo più alto, ma determinare un picco nel tasso di blocco che potrebbe essere problematico per le aziende (e i relativi clienti). Prima di rilasciare un modello, verifichiamo che funzioni bene nella pratica. Per farlo, misuriamo il cambiamento che ciascun modello causerebbe a una serie di metriche, come il tasso di falsi positivi, il tasso di blocco e il tasso di autorizzazione su base aggregata e a seconda dell'esercente, per un sottogruppo di utenti Stripe. Se scopriamo che un modello porterebbe a un cambiamento indesiderato in una di queste metriche di riferimento, lo regoliamo in base a diversi sottogruppi di utenti prima di rilasciarlo in modo da ridurre al minimo i problemi e garantire prestazioni ottimali.
Abbiamo riscontrato che automatizzando il più possibile il processo di addestramento e valutazione è possibile ottenere molteplici vantaggi in termini di velocità di iterazione del modello. Nell'ultimo anno, abbiamo investito in strumentazioni per addestrare, regolare e valutare regolarmente i modelli utilizzando le nostre feature e l'architettura di modello più recenti. Ad esempio, dopo aver addestrato un modello e prima di pubblicarlo, aggiorniamo in modo continuativo le dashboard delle prestazioni. Così, un ingegnere potrà capire con facilità se un modello candidato è già obsoleto in relazione a un sottogruppo di traffico prima ancora della pubblicazione e riaddestrarlo in modo proattivo.
Dopo aver pubblicato un modello, ne monitoriamo le prestazioni e iniziamo subito a lavorare sulla release successiva. Considerato che le tendenze nell'ambito delle frodi cambiano rapidamente, i modelli di machine learning raggiungono presto la deriva: i dati su cui sono stati addestrati non sono più rappresentativi delle frodi di oggi.
Grazie a questi strumenti, abbiamo triplicato la velocità con la quale riusciamo a pubblicare modelli nuovi, il che si traduce direttamente in un incremento delle prestazioni in produzione. In effetti, anche il riaddestramento di un modello del mese precedente sulla base di dati più recenti (utilizzando la stessa architettura e le stesse definizioni delle feature) e la sua pubblicazione ci consente di aumentare il richiamo di un mezzo punto percentuale ogni mese. La possibilità di pubblicare modelli di frequente e in sicurezza ci permette di capitalizzare e combinare i guadagni in termini di sviluppo di feature e lavoro di modellazione e di adattarci agli schemi di frode in continuo cambiamento per gli utenti Radar.
Una volta che il modello è entrato in produzione, monitoriamo con continuità le prestazioni della coppia modello-politica. Per i pagamenti che hanno punteggi al di sotto della soglia di blocco, possiamo osservare l'esito finale: la transazione è stata contestata dal titolare della carta come frode? I pagamenti che hanno punteggi al di sopra della soglia, tuttavia, vengono bloccati, per cui non possiamo sapere quale sarebbe stato il loro esito. Calcolare l'intera curva ROC o di precisione-richiamo in produzione è quindi meglio che calcolare le curve di validazione poiché è prevista un'analisi controfattuale: dobbiamo ottenere stime sicure dal punto di vista statistico di ciò che sarebbe accaduto anche ai pagamenti che abbiamo bloccato. Negli anni Stripe ha sviluppato dei metodi per farlo, di cui puoi trovare ulteriori informazioni in questa presentazione.
Abbiamo descritto solo alcune delle metriche dell'efficacia dei modelli che i data scientist e gli ingegneri di machine learning prendono in considerazione quando sviluppano modelli di machine learning. Successivamente, parleremo di come le aziende dovrebbero intendere la prevenzione delle frodi.
Cosa può fare Stripe per aiutarti
Focalizzarsi solo su un numero per capire quali sono le proprie prestazioni antifrode potrebbe portare a fare delle scelte non ottimali per l'azienda. Abbiamo notato che le aziende spesso danno un'importanza esagerata ai falsi negativi (si preoccupano molto delle frodi non individuate) e ne danno troppo poca ai falsi positivi. Questa mentalità può portare ad adottare misure inefficaci e di tipo brute force costose, come bloccare tutte le carte internazionali. In generale, devi sempre pensare a come le varie misure delle prestazioni sono correlate tra loro e a quali sono i compromessi più giusti date le tue particolari circostanze. Ecco un esempio di come usare queste metriche combinate per determinare l'efficacia del tuo sistema di prevenzione delle frodi:
MODELLO APPROSSIMATIVO PER LA PRECISIONE DI TIPO BREAK EVEN
Se la tua vendita media è pari a 26,00 $ con un margine dell'8%, il tuo profitto per ciascuna vendita è 26,00 $ × 8,00% = 2,08 $. In media, se il costo di produzione del tuo prodotto è 26,00 $ – 2,08 $= 23,92 $ e ti viene imposta una commissione di storno di 15 $, la tua perdita totale in caso di vendita fraudolenta sarà 23,92 $ + 15,00 $ = 38,92 $. Pertanto, una vendita fraudolenta ti costa il profitto di 38,92 $ / 2,08 $ = 18,7 vendite legittime e la tua precisione di break even è 1 / (1 + 18,71) = 5,07%.
Le soglie del machine learning di Radar sono un buon compromesso tra l'ottimizzazione dei margini degli esercenti e il mantenimento di tassi di blocco stabili per tutta la base di utenti. Puoi accedere a una dashboard per vedere come sta funzionando il machine learning di Radar per la tua azienda, oltre che per visualizzare le prestazioni delle tue regole personalizzate nel caso tu stia usando Radar for Fraud Teams. Questi strumenti ti permettono di confrontare facilmente i tuoi tassi di contestazione per frode, i tassi di falsi positivi e i tassi di blocco con quelli di altre aziende simili, sulla base di dati aggregati, di coorti personalizzate di aziende in settori verticali simili o di dimensioni analoghe alle tue.
Miglioramento delle prestazioni con regole e revisioni manuali
Con Radar for Fraud Teams puoi ottimizzare la tua protezione regolando direttamente la tua soglia di rischio in modo da bloccare o consentire più pagamenti. Oltre alla presenza di algoritmi di machine learning automatici, Radar for Fraud Teams consente anche alle singole aziende di personalizzare le regole (ad esempio, "blocca tutte le transazioni superiori a 1.000 $ quando il paese dell'indirizzo IP non corrisponde al paese della carta"), richiedere interventi e revisionare manualmente i pagamenti contrassegnati nella Dashboard.
Tali regole possono essere intese semplicemente come dei "modelli" (in fin dei conti possono essere rappresentate come alberi decisionali) e dovrebbero essere valutate, tenendo in considerazione il compromesso tra precisione e richiamo, come dei modelli. Nel momento in cui crei una regola con Radar, ti presenteremo delle statistiche storiche sul numero di transazioni corrispondenti ai tuoi parametri che sono state effettivamente contestate, rimborsate o accettate per aiutarti nei calcoli prima ancora che la regola venga implementata. Una volta in modalità live, potrai vedere l'impatto di ciascuna regola sul tasso di contestazione e di falsi positivi.
Un altro aspetto altrettanto importante è che le regole, gli interventi e le revisioni manuali consentono agli utenti di modificare la forma della curva di precisione-richiamo a loro favore aggiungendo una logica proprietaria specifica dell'azienda (regole) oppure facendo qualche sforzo aggiuntivo (revisione manuale).
Se ti accorgi che gli algoritmi di machine learning tralasciano spesso un determinato tipo di frode che riguarda la tua azienda (che tu invece riesci a individuare facilmente), puoi scrivere una regola per bloccarla. Questo specifico intervento in genere aumenta il richiamo senza incidere troppo sulla precisione, spostando il punto operativo lungo una curva di precisione-richiamo più favorevole e meno accentuata.
Se sottoponi alcune classi di transazioni alla revisione manuale anziché bloccarle direttamente, potrai aumentare la precisione senza influire in alcun modo sul richiamo. Analogamente, se sottoponi alcune transazioni alla revisione manuale anziché accettarle direttamente, potrai aumentare il richiamo senza ripercussioni sulla precisione.
Ovviamente, in questi casi la precisione o il richiamo aumentati richiederanno un maggior intervento degli operatori (oltre a esporti all'accuratezza delle valutazioni del tuo team), ma l'uso aggiuntivo di revisioni manuali, regole e interventi per autenticare i clienti ad alto rischio ti permette di ottimizzare ancora di più la prevenzione delle frodi.
Fasi successive
Ci auguriamo che questa guida possa aiutarti a capire come Stripe utilizza il machine learning nella prevenzione delle frodi e come valutare l'efficacia dei tuoi sistemi antifrode. Scopri ulteriori informazioni sulle funzionalità di Radar oppure consulta la nostra documentazione.
Se hai domande o vuoi sapere di più su Stripe Radar, contattaci.