Questa pagina descrive come utilizzare l'importanza delle caratteristiche per ottenere visibilità sul modo in cui il modello effettua le previsioni.
Per ulteriori informazioni su AI Explanations, consulta Introduzione ad AI Explanations for AI Platform.
Introduzione
Quando utilizzi un modello di machine learning per prendere decisioni aziendali, è importante capire in che modo i dati di addestramento hanno contribuito al modello finale e in che modo il modello è arrivato alle singole previsioni. Questa comprensione ti aiuta a garantire che il tuo modello sia equo e accurato.
AutoML Tables offre l'importanza delle caratteristiche, a volte chiamate attribuzioni delle caratteristiche, il che consente di vedere quali caratteristiche hanno contribuito maggiormente all'addestramento del modello (importanza delle caratteristiche del modello) e alle singole previsioni (importanza delle caratteristiche locali).
AutoML Tables calcola l'importanza delle caratteristiche utilizzando il metodo Shapley campionato. Per saperne di più sulla spiegabilità del modello, consulta Introduzione a AI Explains.
Importanza delle caratteristiche del modello
L'importanza delle caratteristiche del modello aiuta a garantire che le caratteristiche che hanno determinato l'addestramento del modello abbiano senso per i dati e il problema aziendale. Tutte le caratteristiche con un valore elevato di importanza delle caratteristiche devono rappresentare un indicatore valido per la previsione ed essere in grado di essere incluse in modo coerente nelle richieste di previsione.
L'importanza delle caratteristiche del modello è fornita sotto forma percentuale per ogni caratteristica: più alta è la percentuale, maggiore è stato l'impatto della caratteristica sull'addestramento del modello.
Ottenere l'importanza delle caratteristiche del modello
Console
Per visualizzare i valori di importanza delle caratteristiche del modello utilizzando la console Google Cloud:
Vai alla pagina AutoML Tables nella console Google Cloud.
Nel riquadro di navigazione a sinistra, seleziona la scheda Modelli e seleziona il modello per il quale vuoi ottenere le metriche di valutazione.
Apri la scheda Valuta.
Scorri verso il basso per visualizzare il grafico Importanza delle caratteristiche.
REST
Per ottenere i valori di importanza delle caratteristiche per un modello, utilizza il metodo model.get.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
-
endpoint:
automl.googleapis.com
per la località globale eeu-automl.googleapis.com
per la regione dell'UE. - project-id: l'ID del tuo progetto Google Cloud.
- location: la località della risorsa:
us-central1
per tutto il mondo oeu
per l'Unione europea. -
model-id: l'ID del modello per il quale vuoi ottenere le informazioni sull'importanza delle caratteristiche.
Ad esempio,
TBL543
.
Metodo HTTP e URL:
GET https://endpoint/v1beta1/projects/project-id/locations/location/models/model-id
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
"https://endpoint/v1beta1/projects/project-id/locations/location/models/model-id"
PowerShell
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://endpoint/v1beta1/projects/project-id/locations/location/models/model-id" | Select-Object -Expand Content
{ "name": "projects/292381/locations/us-central1/models/TBL543", "displayName": "Quickstart_Model", ... "tablesModelMetadata": { "targetColumnSpec": { ... }, "inputFeatureColumnSpecs": [ ... ], "optimizationObjective": "MAXIMIZE_AU_ROC", "tablesModelColumnInfo": [ { "columnSpecName": "projects/292381/locations/us-central1/datasets/TBL543/tableSpecs/246/columnSpecs/331", "columnDisplayName": "Contact", "featureImportance": 0.093201876 }, { "columnSpecName": "projects/292381/locations/us-central1/datasets/TBL543/tableSpecs/246/columnSpecs/638", "columnDisplayName": "Month", "featureImportance": 0.215029223 }, ... ], "trainBudgetMilliNodeHours": "1000", "trainCostMilliNodeHours": "1000", "classificationType": "BINARY", "predictionSampleRows": [ ... ], "splitPercentageConfig": { ... } }, "creationState": "CREATED", "deployedModelSizeBytes": "1160941568" }
Java
Se le risorse si trovano nella regione dell'UE, devi impostare esplicitamente l'endpoint. Ulteriori informazioni
Node.js
Se le risorse si trovano nella regione dell'UE, devi impostare esplicitamente l'endpoint. Ulteriori informazioni
Python
La libreria client per AutoML Tables include ulteriori metodi Python che semplificano l'utilizzo dell'API AutoML Tables. Questi metodi fanno riferimento a set di dati e modelli per nome anziché per ID. I nomi dei set di dati e dei modelli devono essere univoci. Per maggiori informazioni, consulta la sezione Riferimento cliente.
Se le risorse si trovano nella regione dell'UE, devi impostare esplicitamente l'endpoint. Ulteriori informazioni
Feature importance locale
L'importanza delle caratteristiche locali ti consente di capire in che modo le singole caratteristiche in una specifica richiesta di previsione hanno influito sulla previsione risultante.
Per arrivare a ogni valore di importanza delle caratteristiche locali, viene innanzitutto calcolato il punteggio di previsione di riferimento. I valori di riferimento vengono calcolati a partire dai dati di addestramento, utilizzando il valore mediano per le caratteristiche numeriche e la modalità per le caratteristiche categoriche. La previsione generata dai valori di riferimento corrisponde al punteggio di previsione di riferimento.
Per i modelli di classificazione, l'importanza delle caratteristiche locali indica quanto ogni caratteristica è stata aggiunta o sottratta dalla probabilità assegnata alla classe con il punteggio più alto, rispetto al punteggio di previsione di riferimento. I valori dei punteggi sono compresi tra 0,0 e 1,0, quindi l'importanza delle caratteristiche locali per i modelli di classificazione è sempre compresa tra -1,0 e 1,0 (inclusi).
Per i modelli di regressione, l'importanza delle caratteristiche locali per una previsione indica quanto ogni caratteristica è stata aggiunta o sottratta dal risultato rispetto al punteggio di previsione di riferimento.
L'importanza delle caratteristiche locali è disponibile per le previsioni sia online che batch.
Ottenere l'importanza delle caratteristiche locali per le previsioni online
Console
Per ottenere i valori di importanza delle caratteristiche locali per una previsione online utilizzando la console Google Cloud, segui i passaggi descritti in Ottenere una previsione online, assicurandoti di selezionare la casella di controllo Genera importanza delle caratteristiche.
REST
Per ottenere l'importanza delle caratteristiche locali per una richiesta di previsione online, utilizza il metodo model.predict
, impostando il parametro feature_importance
su true.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
-
endpoint:
automl.googleapis.com
per la località globale eeu-automl.googleapis.com
per la regione dell'UE. - project-id: l'ID del tuo progetto Google Cloud.
- location: la località della risorsa:
us-central1
per tutto il mondo oeu
per l'Unione europea. - model-id: l'ID del modello. Ad esempio,
TBL543
. - valueN: i valori per ogni colonna, nell'ordine corretto.
Metodo HTTP e URL:
POST https://endpoint/v1beta1/projects/project-id/locations/location/models/model-id:predict
Corpo JSON della richiesta:
{ "payload": { "row": { "values": [ value1, value2,... ] } } "params": { "feature_importance": "true" } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://endpoint/v1beta1/projects/project-id/locations/location/models/model-id:predict"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://endpoint/v1beta1/projects/project-id/locations/location/models/model-id:predict" | Select-Object -Expand Content
"tablesModelColumnInfo": [ { "columnSpecName": "projects/2381/locations/us-central1/datasets/TBL8440/tableSpecs/766336/columnSpecs/4704", "columnDisplayName": "Promo", "featureImportance": 1626.5464 }, { "columnSpecName": "projects/2381/locations/us-central1/datasets/TBL8440/tableSpecs/766336/columnSpecs/6800", "columnDisplayName": "Open", "featureImportance": -7496.5405 }, { "columnSpecName": "projects/2381/locations/us-central1/datasets/TBL8440/tableSpecs/766336/columnSpecs/9824", "columnDisplayName": "StateHoliday" } ],
Quando una colonna ha un valore di importanza delle caratteristiche pari a 0, l'importanza delle caratteristiche non viene visualizzata per quella colonna.
Java
Se le risorse si trovano nella regione dell'UE, devi impostare esplicitamente l'endpoint. Ulteriori informazioni
Node.js
Se le risorse si trovano nella regione dell'UE, devi impostare esplicitamente l'endpoint. Ulteriori informazioni
Python
La libreria client per AutoML Tables include ulteriori metodi Python che semplificano l'utilizzo dell'API AutoML Tables. Questi metodi fanno riferimento a set di dati e modelli per nome anziché per ID. I nomi dei set di dati e dei modelli devono essere univoci. Per maggiori informazioni, consulta la sezione Riferimento cliente.
Se le risorse si trovano nella regione dell'UE, devi impostare esplicitamente l'endpoint. Ulteriori informazioni
Ottenere l'importanza delle caratteristiche locali per le previsioni batch
Console
Per ottenere i valori di importanza delle caratteristiche locali per una previsione batch utilizzando la console Google Cloud, segui i passaggi descritti in Richiedere una previsione batch, assicurandoti di selezionare la casella di controllo Genera importanza delle caratteristiche.
L'importanza delle caratteristiche viene restituita aggiungendo una nuova colonna per ogni caratteristica,
denominata feature_importance.<feature_name>
.
REST
Per ottenere l'importanza delle caratteristiche locali per una richiesta di previsione batch, utilizza il metodo model.batchPredict
, impostando il parametro feature_importance
su true.
L'esempio seguente utilizza BigQuery per i dati delle richieste e i risultati; utilizzi lo stesso parametro aggiuntivo per le richieste che utilizzano Cloud Storage.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
-
endpoint:
automl.googleapis.com
per la località globale eeu-automl.googleapis.com
per la regione dell'UE. - project-id: l'ID del tuo progetto Google Cloud.
- location: la località della risorsa:
us-central1
per tutto il mondo oeu
per l'Unione europea. - model-id: l'ID del modello. Ad esempio,
TBL543
. - dataset-id: l'ID del set di dati BigQuery in cui si trovano i dati di previsione.
-
table-id: l'ID della tabella BigQuery in cui si trovano i dati di previsione.
AutoML Tables crea una sottocartella per i risultati della previsione denominata
prediction-<model_name>-<timestamp>
in project-id.dataset-id.table-id.
Metodo HTTP e URL:
POST https://endpoint/v1beta1/projects/project-id/locations/location/models/model-id:batchPredict
Corpo JSON della richiesta:
{ "inputConfig": { "bigquerySource": { "inputUri": "bq://project-id.dataset-id.table-id" }, }, "outputConfig": { "bigqueryDestination": { "outputUri": "bq://project-id" }, }, "params": {"feature_importance": "true"} }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://endpoint/v1beta1/projects/project-id/locations/location/models/model-id:batchPredict"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://endpoint/v1beta1/projects/project-id/locations/location/models/model-id:batchPredict" | Select-Object -Expand Content
L'importanza delle caratteristiche viene restituita aggiungendo una nuova colonna per ogni caratteristica,
denominata feature_importance.<feature_name>
.
Considerazioni sull'utilizzo dell'importanza delle caratteristiche locali:
I risultati relativi all'importanza delle caratteristiche locali sono disponibili solo per i modelli addestrati a partire dal 15 novembre 2019.
L'abilitazione dell'importanza delle caratteristiche locali su una richiesta di previsione batch con più di 1.000.000 di righe o 300 colonne non è supportata.
Ogni valore di importanza delle caratteristiche locali mostra solo in che misura la caratteristica ha influito sulla previsione per la riga in questione. Per comprendere il comportamento complessivo del modello, utilizza l'articolo Importanza delle caratteristiche del modello.
I valori di importanza delle caratteristiche locali sono sempre relativi al valore di riferimento. Assicurati di fare riferimento al valore di riferimento quando valuti i risultati dell'importanza delle caratteristiche locali. Il valore di riferimento è disponibile solo nella console Google Cloud.
I valori di importanza delle caratteristiche locali dipendono interamente dal modello e dai dati utilizzati per addestrare il modello. Possono solo rilevare i pattern trovati dal modello nei dati e non rilevano alcuna relazione fondamentale nei dati. Quindi, la presenza di un'elevata importanza delle caratteristiche per una determinata caratteristica non dimostra una relazione tra quella caratteristica e il target; mostra semplicemente che il modello sta utilizzando la caratteristica nelle sue previsioni.
Se una previsione include dati che non rientrano completamente nell'intervallo dei dati di addestramento, l'importanza locale delle caratteristiche potrebbe non fornire risultati significativi.
La generazione dell'importanza delle caratteristiche aumenta il tempo e le risorse di calcolo necessarie per la previsione. Inoltre, la tua richiesta utilizza una quota diversa rispetto alle richieste di previsione senza importanza delle caratteristiche. Ulteriori informazioni
I valori di importanza delle caratteristiche da soli non indicano se il modello è equo, imparziale o della qualità audio. Valuta attentamente il set di dati di addestramento, le procedure e le metriche di valutazione, oltre all'importanza delle caratteristiche.