Ottimizzare un modello utilizzando il framework Model Insights

Il Framework di informazioni sul modello fornisce allo scienziato dei dati gli strumenti in Data Science Workspace per effettuare scelte rapide e informate per modelli ottimali di apprendimento automatico basati su esperimenti. Il quadro migliorerà la velocità e l'efficacia del flusso di lavoro di apprendimento automatico e migliorerà la facilità d'uso per gli scienziati dei dati. Questo viene fatto fornendo un modello predefinito per ogni tipo di algoritmo di apprendimento automatico per assistere con la regolazione del modello. Il risultato finale consente agli scienziati dei dati e ai cittadini scienziati dei dati di prendere migliori decisioni di ottimizzazione dei modelli per i loro clienti finali.

Cosa sono le metriche?

Dopo aver implementato e addestrato un modello, il passo successivo che uno scienziato farebbe è quello di trovare le prestazioni del modello. Varie metriche vengono utilizzate per determinare l’efficacia di un modello rispetto ad altre. Alcuni esempi di metriche utilizzate includono:

  • Precisione della classificazione
  • Area sotto curva
  • Matrice di confusione
  • Rapporto di classificazione

Configurazione del codice di ricetta

Attualmente, il framework di Insights del modello supporta i seguenti runtime:

Il codice di esempio per le ricette può essere trovato nell'archivio experience-platform-dsw-reference in recipes. In questa esercitazione verrà fatto riferimento a file specifici provenienti da questo archivio.

Scala

Esistono due modi per inserire le metriche nelle ricette. Una consiste nell'utilizzare le metriche di valutazione predefinite fornite dall'SDK e l'altra è quella di scrivere metriche di valutazione personalizzate.

Metriche di valutazione predefinite per Scala

Le valutazioni predefinite sono calcolate come parte degli algoritmi di classificazione. Di seguito sono riportati alcuni valori predefiniti per i valutatori attualmente implementati:

Classe valutatore evaluation.class
DefaultBinaryClassificationEvaluator com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator
DefaultMultiClassificationEvaluator com.adobe.platform.ml.impl.DefaultMultiClassificationEvaluator
ConsigliValutatore com.adobe.platform.ml.impl.RecommendationsEvaluator

Il valutatore può essere definito nella ricetta nel file application.properties nella cartella recipe. Di seguito è riportato un codice di esempio che abilita DefaultBinaryClassificationEvaluator:

evaluation.class=com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator
evaluation.labelColumn=label
evaluation.predictionColumn=prediction
training.evaluate=true

Dopo che una classe di valutatore è abilitata, per impostazione predefinita verrà calcolato un certo numero di metriche durante la formazione. Le metriche predefinite possono essere dichiarate esplicitamente aggiungendo la seguente riga al application.properties.

evaluation.metrics.com=com.adobe.platform.ml.impl.Constants.DEFAULT
NOTA

Se la metrica non è definita, le metriche predefinite saranno attive.

Per abilitare una metrica specifica, modifica il valore di evaluation.metrics.com. Nell’esempio seguente, la metrica Punteggio F è abilitata.

evaluation.metrics=com.adobe.platform.ml.impl.Constants.FSCORE

Nella tabella seguente sono riportate le metriche predefinite per ogni classe. Un utente può inoltre utilizzare i valori nella colonna evaluation.metric per abilitare una metrica specifica.

evaluator.class Metriche predefinite evaluation.metric
DefaultBinaryClassificationEvaluator -Precisione
-Richiama
-Matrice di confusione
-F-Punteggio
-Precisione
-Caratteristiche operative del ricevitore
-Area sotto le caratteristiche operative del ricevitore
-PRECISION
-RECALL
-CONFUSION_MATRIX
-FSCORE
-ACCURACY
-ROC
-AUROC
DefaultMultiClassificationEvaluator -Precisione
-Richiama
-Matrice di confusione
-F-Punteggio
-Precisione
-Caratteristiche operative del ricevitore
-Area sotto le caratteristiche operative del ricevitore
-PRECISION
-RECALL
-CONFUSION_MATRIX
-FSCORE
-ACCURACY
-ROC
-AUROC
RecommendationsEvaluator -Precisione media media (MAP)
-Guadagno cumulativo attualizzato normalizzato
-Classificazione reciproca media
-Metrica K
-MEAN_AVERAGE_PRECISION
-NDCG
-MRR
-METRIC_K

Metriche di valutazione personalizzate per Scala

Il valutatore personalizzato può essere fornito estendendo l'interfaccia di MLEvaluator.scala nel file Evaluator.scala. Nel file di esempio Evaluator.scala, definiamo le funzioni split() e evaluate() personalizzate. La nostra funzione split() suddivide i nostri dati in modo casuale con un rapporto di 8:2 e la nostra funzione evaluate() definisce e restituisce 3 metriche: MAPE, MAE e RMSE.

IMPORTANTE

Per la classe MLMetric, non utilizzare "measures" per valueType durante la creazione di un nuovo MLMetric altrimenti la metrica non verrà compilata nella tabella delle metriche di valutazione personalizzate.

Esegui questa operazione: metrics.add(new MLMetric("MAPE", mape, "double"))
Non questo: metrics.add(new MLMetric("MAPE", mape, "measures"))

Una volta definita nella ricetta, il passo successivo è quello di abilitarla nelle ricette. Questa operazione viene eseguita nel file application.properties nella cartella resources del progetto. Qui il evaluation.class è impostato sulla classe Evaluator definita in Evaluator.scala

evaluation.class=com.adobe.platform.ml.Evaluator

In Data Science Workspace, l'utente sarebbe in grado di visualizzare le informazioni nella scheda "Metriche di valutazione" nella pagina dell'esperimento.

Python/Tensorflow

Al momento non sono disponibili metriche di valutazione predefinite per Python o Tensorflow. Pertanto, per ottenere le metriche di valutazione per Python o Tensorflow, dovrai creare una metrica di valutazione personalizzata. Questo può essere fatto implementando la classe Evaluator .

Metriche di valutazione personalizzate per Python

Per le metriche di valutazione personalizzate, è necessario implementare due metodi principali per il valutatore: split() e evaluate().

Per Python, questi metodi saranno definiti in valutator.py per la classe Evaluator. Segui il collegamento valutator.py per un esempio di Evaluator.

La creazione di metriche di valutazione in Python richiede l’implementazione dei metodi evaluate() e split() .

Il metodo evaluate() restituisce l'oggetto metrico che contiene una matrice di oggetti metrici con proprietà di name, value e valueType.

Lo scopo del metodo split() è quello di inserire i dati e trasmettere un training e un set di dati di prova. Nel nostro esempio, il metodo split() immette i dati utilizzando l'SDK DataSetReader e quindi li pulisce rimuovendo le colonne non collegate. Da lì vengono create funzionalità aggiuntive a partire dalle feature non elaborate esistenti nei dati.

Il metodo split() deve restituire un dataframe di addestramento e test che viene poi utilizzato dai metodi pipeline() per addestrare e testare il modello ML.

Metriche di valutazione personalizzate per Tensorflow

Per Tensorflow, simili a Python, è necessario implementare i metodi evaluate() e split() nella classe Evaluator. Per evaluate(), è necessario restituire le metriche mentre split() restituisce i set di dati del treno e delle prove.

from ml.runtime.python.Interfaces.AbstractEvaluator import AbstractEvaluator

class Evaluator(AbstractEvaluator):
    def __init__(self):
       print ("initiate")

    def evaluate(self, data=[], model={}, config={}):

        return metrics

    def split(self, config={}):

       return 'train', 'test'

R

A partire da ora, non ci sono metriche di valutazione predefinite per R. Pertanto, per ottenere le metriche di valutazione per R, sarà necessario definire la classe applicationEvaluator come parte della ricetta.

Metriche di valutazione personalizzate per R

Lo scopo principale di applicationEvaluator è quello di restituire un oggetto JSON contenente coppie chiave-valore di metriche.

Questo applicationEvaluator.R può essere utilizzato come esempio. In questo esempio, la sezione applicationEvaluator è suddivisa in tre sezioni familiari:

  • Caricare dati
  • Preparazione dei dati/ingegneria delle funzioni
  • Recupera modello salvato e valuta

I dati vengono caricati per la prima volta in un set di dati da un'origine come definita in retail.config.json. Da lì i dati vengono puliti e progettati per adattarsi al modello di apprendimento automatico. Infine, il modello viene utilizzato per fare una previsione utilizzando il nostro set di dati e dai valori previsti e dai valori effettivi, le metriche vengono calcolate. In questo caso, MAPE, MAE e RMSE vengono definiti e restituiti nell'oggetto metrics .

Utilizzo di metriche e grafici di visualizzazione predefiniti

Il Sensei Model Insights Framework supporterà un modello predefinito per ogni tipo di algoritmo di apprendimento automatico. La tabella seguente mostra le classi comuni di algoritmi di apprendimento automatico di alto livello e le metriche di valutazione e le visualizzazioni corrispondenti.

Tipo di algoritmo ML Metriche di valutazione Visualizzazioni
Regressione - RMSE
- MAPE
- MASE
- MAE
Curva di sovrapposizione dei valori previsti e effettivi
Classificazione binaria - Matrice di confusione
- Precision-richiamo
- Accuratezza
- Punteggio F (nello specifico F1 ,F2)
- AUC
- ROC
Curva ROC e matrice della confusione
Classificazione multiclasse -Matrice di confusione
- Per ogni classe:
- precisione del richiamo
- Punteggio F (in particolare F1, F2)
Curva ROC e matrice della confusione
Clustering (con verità di fondo) - NMI (punteggio di reciproca informazione normalizzato), AMI (punteggio di mutua informazione corretto)
- RI (indice Rand), ARI (indice Rand corretto)
- punteggio di omogeneità, punteggio di completezza e misurazione V
- FMI (indice Fowlkes-Mallow)
- Purezza
- Indice Jaccard
Grafico cluster che mostra cluster e centroid con dimensioni relative dei cluster che riflettono i punti dati che rientrano nel cluster
Clustering (senza verità) - Inerzia
- Coefficiente di siluetta
- CHI (indice Calinski-Harabaz)
- DBI (indice Davies-Bouldin)
- Indice Dunn
Grafico cluster che mostra cluster e centroid con dimensioni relative dei cluster che riflettono i punti dati che rientrano nel cluster
Consiglio -Precisione media media (MAP)
-Guadagno cumulativo attualizzato normalizzato
-Classificazione reciproca media
-Metrica K
TBD
Casi d’uso di TensorFlow Analisi del modello TensorFlow (TFMA) Confronto profondo tra il modello di rete neurale e la visualizzazione
Meccanismo di acquisizione di altri/errori Logica metrica personalizzata (e grafici di valutazione corrispondenti) definita dall’autore del modello. Gestione accurata degli errori in caso di mancata corrispondenza dei modelli Tabella con coppie chiave-valore per le metriche di valutazione

In questa pagina