Vertex AI: creazione di un modello di rilevamento delle frodi con AutoML

1. Panoramica

In questo lab utilizzerai Vertex AI per addestrare e gestire un modello con dati tabulari. Questa è la più recente offerta di prodotti IA su Google Cloud ed è attualmente in anteprima.

Cosa imparerai

Imparerai a:

  • Carica un set di dati gestito su Vertex AI
  • Addestra un modello con AutoML
  • Esegui il deployment del tuo modello AutoML addestrato su un endpoint e utilizzalo per ottenere previsioni

Il costo totale per l'esecuzione di questo lab su Google Cloud è di circa 22$.

2. Introduzione a Vertex AI

Questo lab utilizza la più recente offerta di prodotti AI disponibile su Google Cloud. Vertex AI integra le offerte ML di Google Cloud in un'esperienza di sviluppo fluida. In precedenza, i modelli addestrati con AutoML e i modelli personalizzati erano accessibili tramite servizi separati. La nuova offerta combina entrambi in un'unica API, insieme ad altri nuovi prodotti. Puoi anche migrare progetti esistenti su Vertex AI. In caso di feedback, consulta la pagina di supporto.

Vertex AI include molti prodotti diversi per supportare i flussi di lavoro ML end-to-end. Questo lab è incentrato sui prodotti evidenziati di seguito: AutoML per dati tabulari, Prediction e Workbench.

Panoramica del prodotto Vertex

3. Configura l'ambiente

Per eseguire questo codelab, è necessario un progetto Google Cloud con fatturazione abilitata. Per creare un progetto, segui le istruzioni riportate qui.

Passaggio 1: abilita l'API Compute Engine

Passa a Compute Engine e seleziona Abilita se non è già abilitato. Ne avrai bisogno per creare la tua istanza di blocco note.

Passaggio 2: abilita l'API Vertex AI

Vai alla sezione Vertex AI della tua console Cloud e fai clic su Abilita API Vertex AI.

Dashboard Vertex

Passaggio 3: crea un'istanza di Vertex AI Workbench

Dalla sezione Vertex AI della console Cloud, fai clic su Workbench:

Menu Vertex AI

Da qui, all'interno dei Blocchi note gestiti dall'utente, fai clic su Nuovo blocco note:

Crea nuovo blocco note

Quindi seleziona la versione più recente del tipo di istanza TensorFlow Enterprise (con LTS) senza GPU:

Istanza TFE

Utilizza le opzioni predefinite e fai clic su Crea.

Passaggio 5: apri il blocco note

Una volta creata l'istanza, seleziona Apri JupyterLab:

Apri blocco note

I dati che utilizzeremo per addestrare il nostro modello provengono da questo set di dati per il rilevamento di frodi con carte di credito. Utilizzeremo una versione di questo set di dati resa disponibile pubblicamente in BigQuery.

4. Crea un set di dati gestito

In Vertex AI, puoi creare set di dati gestiti per diversi tipi di dati. Puoi quindi generare statistiche su questi set di dati e utilizzarli per addestrare modelli con AutoML o il tuo codice di modello personalizzato.

Passaggio 1: crea un set di dati

Nel menu Vertex nella console, seleziona Set di dati:

Seleziona set di dati

In questo lab creeremo un modello di rilevamento di attività fraudolenta per determinare se una determinata transazione con carta di credito deve essere classificata o meno come fraudolenta.

Nella pagina Set di dati, assegna un nome al set di dati, poi seleziona Tabulare e Regressione/classificazione. Quindi crea il set di dati:

Crea set di dati

Esistono alcune opzioni per importare i dati nei set di dati gestiti in Vertex:

  • Caricamento di un file locale dal computer
  • Selezione di file da Cloud Storage
  • Selezione dei dati da BigQuery

Qui caricheremo i dati da una tabella BigQuery pubblica.

Passaggio 2: importa i dati da BigQuery

Scegli "Seleziona una tabella o una visualizzazione da BigQuery" come metodo di importazione e poi copia quanto segue nella casella Tabella BigQuery: bigquery-public-data.ml_datasets.ulb_fraud_detection. Quindi seleziona Continua:

Importa dati BQ

Dopo aver importato il set di dati, il risultato dovrebbe essere simile al seguente:

Dati importati

Se vuoi, puoi fare clic su Genera statistiche per visualizzare ulteriori informazioni sul set di dati, ma questa operazione non è obbligatoria prima di procedere con il passaggio successivo. Questo set di dati contiene transazioni con carta di credito reali. La maggior parte dei nomi delle colonne è stata oscurata, motivo per cui sono chiamati V1, V2 e così via.

5. Addestra un modello con AutoML

Con un set di dati gestito caricato, è tutto pronto per addestrare un modello con questi dati. Addestreremo un modello di classificazione per prevedere se una specifica transazione è fraudolenta o meno. Vertex AI offre due opzioni per l'addestramento dei modelli:

  • AutoML: addestra modelli di alta qualità con il minimo sforzo e senza avere esperienza nel machine learning.
  • Addestramento personalizzato: esegui le tue applicazioni di addestramento personalizzato nel cloud utilizzando uno dei container predefiniti di Google Cloud oppure utilizzane uno tuo.

In questo lab utilizzeremo AutoML per l'addestramento.

Passaggio 1: avvia il job di addestramento

Nella pagina dei dettagli del set di dati da cui avevi interrotto il passaggio precedente, seleziona Addestra nuovo modello in alto a destra. Seleziona Classificazione come obiettivo, lascia selezionata l'opzione AutoML per l'addestramento del modello e fai clic su Continua:

Passaggio 1 dell'addestramento del modello

Assegna un nome al modello oppure puoi utilizzare quello predefinito. In Colonna di destinazione seleziona Corso. Si tratta di un numero intero che indica se una determinata transazione è stata fraudolenta o meno (0 per non frode, 1 per attività fraudolenta).

Quindi seleziona Continua:

Passaggio 2 dell'addestramento del modello

In questo passaggio, scorri verso il basso e fai clic per espandere Opzioni avanzate. Poiché questo set di dati è molto sbilanciato (meno dell'1% dei dati contiene transazioni fraudolente), scegli l'opzione AUC PRC che massimizza il richiamo di precisione per la classe meno comune:

Opzioni di addestramento avanzate

Seleziona Continua e vai all'ultimo passaggio (Compute e prezzi). Qui inserisci 1 come numero di ore nodo per il budget e lascia attivata l'interruzione anticipata. L'addestramento del modello AutoML per 1 ora di calcolo è in genere un buon inizio per comprendere se esiste una relazione tra le caratteristiche e l'etichetta che hai selezionato. In seguito puoi modificare le caratteristiche e dedicare più tempo all'addestramento per migliorare le prestazioni del modello. Quindi, seleziona Inizia addestramento.

Riceverai un'email al completamento del job di addestramento. L'addestramento impiegherà un po' più di un'ora per tenere conto del tempo necessario all'avvio e allo smantellamento delle risorse.

6. Esplora le metriche di valutazione del modello

In questo passaggio vedremo le prestazioni del modello.

Una volta completato il job di addestramento del modello, vai alla scheda Modelli in Vertex. Fai clic sul modello appena addestrato e dai un'occhiata alla scheda Valuta. Esistono molte metriche di valutazione. Ci concentreremo su due: la Matrice di confusione e Importanza delle caratteristiche.

Passaggio 1: comprendi la matrice di confusione

Una matrice di confusione indica la percentuale di esempi di ciascuna classe del nostro set di test che il nostro modello ha previsto correttamente. Nel caso di un set di dati sbilanciato come quello che abbiamo a che fare, questa è una misura migliore delle prestazioni del modello rispetto all'accuratezza complessiva.

Ricorda che meno dell'1% degli esempi nel nostro set di dati era costituito da transazioni fraudolente, quindi se l'accuratezza del nostro modello è del 99%, c'è una buona probabilità che il 99% delle volte la classe dei non fraudolenti sia un'ipotesi casuale. È per questo che esaminare l'accuratezza del nostro modello per ogni classe è una metrica migliore.

Se scorri verso il basso nella scheda Valuta, viene visualizzata una matrice di confusione simile alla seguente (le percentuali esatte possono variare):

Matrice di confusione

La matrice di confusione mostra che il nostro modello iniziale è in grado di classificare correttamente l'85% degli esempi fraudolenti nel nostro set di test. Questo risultato è abbastanza buono, soprattutto considerando il nostro significativo squilibrio dei set di dati. Poi potremmo provare ad addestrare il modello per più ore di calcolo, per vedere se possiamo migliorare da questo 85%.

Passaggio 2. Esame dell'importanza delle caratteristiche

Sotto la matrice di confusione, dovresti vedere un grafico sull'importanza delle caratteristiche simile al seguente:

Importanza delle caratteristiche

Questo ci mostra le caratteristiche che hanno fornito il segnale più grande al nostro modello quando effettuano previsioni. L'importanza delle caratteristiche è un tipo di Explainable AI: un campo che include vari metodi per ottenere più insight su un modello ML sta facendo previsioni. Il grafico dell'importanza delle caratteristiche qui riportato viene calcolato come aggregato osservando tutte le previsioni del modello sul set di test. Mostra le caratteristiche più importanti in un gruppo di esempi.

Questo grafico sarebbe più interessante se la maggior parte delle caratteristiche nel nostro set di dati non fosse oscurata. Potremmo scoprire, ad esempio, che il tipo di transazione (trasferimento, deposito e così via) è il più grande indicatore di attività fraudolenta.

In uno scenario reale, questi valori di importanza delle caratteristiche potrebbero essere utilizzati per aiutarci a migliorare il nostro modello e avere maggiore fiducia nelle sue previsioni. Potremmo decidere di rimuovere le caratteristiche meno importanti la prossima volta che addestriamo un modello o di combinare due delle nostre caratteristiche più significative in un incrocio di caratteristiche per vedere se ciò migliora le prestazioni del modello.

Qui stiamo esaminando l'importanza delle caratteristiche in un batch, ma possiamo anche ottenere l'importanza delle caratteristiche per le singole previsioni in Vertex AI. Vedremo come farlo una volta eseguito il deployment del modello.

7. Deployment del modello in un endpoint

Ora che abbiamo un modello addestrato, il passaggio successivo è creare un endpoint in Vertex. A una risorsa Modello in Vertex possono essere associati più endpoint ed è possibile suddividere il traffico tra endpoint.

Passaggio 1: crea un endpoint

Nella pagina del tuo modello, vai alla scheda Deployment e test e fai clic su Deployment su endpoint:

Deployment e test

Assegna un nome all'endpoint, ad esempio fraud_v1, lascia l'opzione Accesso impostata su Standard e fai clic su Continua.

Lascia la suddivisione del traffico e il tipo di macchina come impostazioni predefinite, quindi fai clic su Fine, quindi su Continua.

Non utilizzeremo il monitoraggio del modello per questo endpoint, quindi puoi lasciarlo deselezionato e fare clic su Esegui il deployment. Il deployment dell'endpoint richiederà alcuni minuti. Una volta completato, vedrai un segno di spunta verde accanto:

Endpoint di cui è stato eseguito il deployment

Lo stai raggiungendo! Ora è tutto pronto per ottenere previsioni sul modello di cui hai eseguito il deployment.

8. Ottenere previsioni sul modello di cui è stato eseguito il deployment

Esistono alcune opzioni per ottenere previsioni del modello:

  • UI di Vertex AI
  • API Vertex AI

Mostreremo entrambe qui.

Passaggio 1: ottieni le previsioni del modello nella UI

Nella pagina del modello in cui viene mostrato l'endpoint (da dove abbiamo interrotto nell'ultimo passaggio), scorri verso il basso fino alla sezione Testa il modello:

Testa il modello

In questo caso, Vertex AI ha scelto valori casuali per ciascuna delle caratteristiche del modello che possiamo utilizzare per ottenere una previsione di test. Se vuoi, puoi modificare questi valori. Scorri fino in fondo alla pagina e seleziona Prevedi.

Nella sezione Risultato della previsione della pagina dovresti vedere la percentuale prevista dal modello per ogni classe. Ad esempio, un punteggio di confidenza pari a 0.99 per la classe 0 indica che il modello ritiene che in questo esempio non si verifichi alcuna frode.

Passaggio 2: ottieni previsioni dei modelli con l'API Vertex AI

La UI è un ottimo modo per assicurarsi che l'endpoint di cui è stato eseguito il deployment funzioni come previsto, ma è probabile che tu voglia ottenere previsioni in modo dinamico tramite una chiamata API REST. Per mostrarti come ottenere le previsioni del modello qui, utilizzeremo l'istanza di Vertex Workbench che hai creato all'inizio di questo lab.

Quindi, apri l'istanza del blocco note che hai creato e apri un blocco note Python 3 da Avvio app:

Apri blocco note

Nel blocco note, esegui quanto segue in una cella per installare l'SDK Vertex:

!pip3 install google-cloud-aiplatform --upgrade --user

Quindi aggiungi una cella al blocco note per importare l'SDK e creare un riferimento all'endpoint di cui hai appena eseguito il deployment:

from google.cloud import aiplatform

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)

Dovrai sostituire due valori nella stringa endpoint_name in alto con il numero del progetto e l'endpoint. Per trovare il numero del progetto, vai alla dashboard del progetto e recupera il valore Numero progetto.

Puoi trovare il tuo ID endpoint nella sezione Endpoint della console qui:

Trovare l'ID endpoint

Infine, fai una previsione all'endpoint copiando ed eseguendo il codice seguente in una nuova cella:

test_instance={
    'Time': 80422,
    'Amount': 17.99,
    'V1': -0.24,
    'V2': -0.027,
    'V3': 0.064,
    'V4': -0.16,
    'V5': -0.152,
    'V6': -0.3,
    'V7': -0.03,
    'V8': -0.01,
    'V9': -0.13,
    'V10': -0.18,
    'V11': -0.16,
    'V12': 0.06,
    'V13': -0.11,
    'V14': 2.1,
    'V15': -0.07,
    'V16': -0.033,
    'V17': -0.14,
    'V18': -0.08,
    'V19': -0.062,
    'V20': -0.08,
    'V21': -0.06,
    'V22': -0.088,
    'V23': -0.03,
    'V24': 0.01,
    'V25': -0.04,
    'V26': -0.99,
    'V27': -0.13,
    'V28': 0.003
}

response = endpoint.predict([test_instance])

print('API response: ', response)

Dovresti vedere una previsione attorno a .67 per la classe 0, il che significa che il modello ritiene che ci sia una probabilità del 67% che questa transazione non sia fraudolenta.

🎉 Complimenti! 🎉

Hai imparato come utilizzare Vertex AI per:

  • Carica un set di dati gestito
  • Addestra e valuta un modello su dati tabulari utilizzando AutoML
  • esegui il deployment del modello su un endpoint
  • Ottieni previsioni su un endpoint del modello utilizzando l'SDK per Vertex

Per scoprire di più sulle diverse parti di Vertex AI, consulta la documentazione.

9. Esegui la pulizia

Se vuoi continuare a utilizzare il blocco note creato in questo lab, ti consigliamo di disattivarlo quando non lo usi. Dall'interfaccia utente di Workbench in Cloud Console, seleziona il blocco note, quindi seleziona Interrompi.

Se desideri eliminare completamente il blocco note, fai semplicemente clic sul pulsante Elimina in alto a destra.

Per eliminare l'endpoint di cui hai eseguito il deployment, vai alla sezione Endpoint della console Vertex AI e annulla il deployment del modello dall'endpoint:

Elimina endpoint

Per eliminare il bucket di archiviazione, utilizzando il menu di navigazione nella console Cloud, vai a Storage, seleziona il bucket e fai clic su Elimina:

Elimina spazio di archiviazione