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

Al termine del corso sarai in grado di:

  • Caricare un set di dati gestito in Vertex AI
  • Addestrare un modello con AutoML
  • Esegui il deployment del modello AutoML addestrato in un endpoint e utilizza questo endpoint per ottenere le previsioni

Il costo totale per eseguire 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 si concentrerà sui prodotti evidenziati di seguito: AutoML per i dati tabulari, Prediction e Workbench.

Panoramica dei prodotti Vertex

3. Configura l'ambiente

Per eseguire questo codelab, devi avere un progetto Google Cloud con la fatturazione abilitata. Per creare un progetto, segui le istruzioni riportate qui.

Passaggio 1: abilita l'API Compute Engine

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

Passaggio 2: attiva l'API Vertex AI

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

Dashboard di Vertex

Passaggio 3: crea un'istanza di Vertex AI Workbench

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

Menu Vertex AI

Da qui, fai clic su Nuovo blocco note in Blocchi note gestiti dall'utente:

Crea nuovo notebook

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

Istanza TFE

Utilizza le opzioni predefinite e poi fai clic su Crea.

Passaggio 5: apri il blocco note

Dopo aver creato l'istanza, seleziona Apri JupyterLab:

Apri notebook

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

4. Creare un set di dati gestito

In Vertex AI puoi creare set di dati gestiti per una serie di tipi di dati. Puoi quindi generare statistiche su questi set di dati e utilizzarle per addestrare i modelli con AutoML o con il codice del tuo 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à fraudolente per determinare se una determinata transazione con carta di credito deve essere classificata come fraudolenta o meno.

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 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

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, quindi copia quanto segue nella casella Tabella BigQuery: bigquery-public-data.ml_datasets.ulb_fraud_detection. Quindi seleziona Continua:

Importa i dati di BQ

Dopo aver importato il set di dati, dovresti visualizzare un messaggio simile al seguente:

Dati importati

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

5. Addestra un modello con AutoML

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

  • AutoML: addestrare modelli di alta qualità con il minimo sforzo e senza dover avere esperienza nel machine learning.
  • Addestramento personalizzato: esegui le tue applicazioni di addestramento personalizzato nel cloud utilizzando uno dei container predefiniti di Google Cloud o 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 in cui avevi interrotto il passaggio precedente, seleziona Addestra nuovo modello in alto a destra. Seleziona Classificazione come scopo, lascia selezionata l'opzione AutoML per l'addestramento del modello e fai clic su Continua:

Passaggio 1: addestramento del modello

Assegna un nome al modello o utilizza 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: addestramento del modello

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

Opzioni di addestramento avanzate

Seleziona Continua e vai all'ultimo passaggio (Calcolo e prezzi). Inserisci 1 come numero di ore nodo per il budget e lascia abilitata 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 termine del job di addestramento. L'addestramento richiederà poco più di un'ora per tenere conto del tempo necessario per avviare e rimuovere le risorse.

6. Esplora le metriche di valutazione del modello

In questo passaggio vedremo le prestazioni del modello.

Al termine del 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 nel set di test che il nostro modello ha previsto correttamente. Nel caso di un set di dati sbilanciato come quello che stiamo utilizzando, questo è un modo migliore per misurare il rendimento del nostro 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. Ecco perché è meglio esaminare la precisione del nostro modello per ogni classe.

Se scorri verso il basso nella scheda Valuta, dovresti vedere 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. Il risultato è piuttosto buono, soprattutto se si considera il significativo squilibrio del set di dati. A questo punto potremmo provare ad addestrare il nostro modello per un numero maggiore di ore di calcolo per vedere se possiamo migliorare questo 85%.

Passaggio 2: esamina l'importanza delle funzionalità

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

Importanza delle caratteristiche

Questo ci mostra le caratteristiche che hanno fornito il maggiore indicatore al nostro modello durante le previsioni. L'importanza delle caratteristiche è un tipo di AI spiegabile, un campo che include vari metodi per ottenere ulteriori informazioni su un modello di ML e fare previsioni. Il grafico dell'importanza delle caratteristiche mostrato qui viene calcolato in modo aggregato esaminando tutte le previsioni del modello sul set di test. Ci mostra le caratteristiche più importanti in un batch 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) è stato l'indicatore più importante di frode.

In uno scenario reale, questi valori di importanza delle caratteristiche potrebbero essere utilizzati per aiutarci a migliorare il nostro modello e per 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 dopo aver implementato il 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: creazione di un endpoint

Nella pagina del 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'accesso impostato su Standard e fai clic su Continua.

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

Non utilizzeremo il monitoraggio del modello per questo endpoint, quindi puoi lasciare l'opzione deselezionata e fare clic su Esegui il deployment. Il deployment dell'endpoint richiederà alcuni minuti. Al termine, vedrai un segno di spunta verde accanto al nome:

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 le previsioni sul modello di cui è stato eseguito il deployment

Esistono diverse opzioni per ottenere le previsioni del modello:

  • Interfaccia utente di Vertex AI
  • API Vertex AI

Li mostreremo entrambi qui.

Passaggio 1: ottieni le previsioni del modello nell'interfaccia utente

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

Modello di test

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

Nella sezione Risultato di 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 le previsioni del modello con l'API Vertex AI

L'interfaccia utente è un ottimo modo per assicurarti che l'endpoint di cui è stato eseguito il deployment funzioni come previsto, ma è probabile che tu voglia ottenere le previsioni in modo dinamico tramite una chiamata all'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 notebook che hai creato e un notebook Python 3 dal programma di avvio:

Apri notebook

Nel notebook, esegui il seguente comando in una cella per installare l'SDK Vertex:

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

Aggiungi una cella nel notebook per importare l'SDK e creare un riferimento all'endpoint appena di cui hai 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 sopra con il numero e l'endpoint del progetto. Per trovare il numero del progetto, vai alla dashboard del progetto e recupera il valore Numero progetto.

Puoi trovare l'ID endpoint nella sezione endpoint della console qui:

Trovare l'ID endpoint

Infine, fai una previsione per il tuo endpoint copiando ed eseguendo il codice riportato di seguito 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 intorno 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:

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

Per saperne 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 nella console Cloud, seleziona il blocco note, quindi seleziona Interrompi.

Se vuoi 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, utilizza il menu di navigazione nella console Cloud, vai a Archiviazione, seleziona il bucket e fai clic su Elimina:

Eliminare lo spazio di archiviazione