Ottimizzare un modello utilizzando il framework Model Insights

Il framework Model Insights fornisce al data scientist gli strumenti in Data Science Workspace per effettuare scelte rapide e informate per modelli di apprendimento automatico ottimali basati su esperimenti. Il quadro migliorerà la velocità e l'efficacia del flusso di lavoro di apprendimento automatico nonché la facilità d'uso per i data scientist. A tal fine, viene fornito un modello predefinito per ogni tipo di algoritmo di apprendimento automatico per facilitare l’ottimizzazione del modello. Il risultato finale consente ai data scientist e ai data scientist dei cittadini di prendere decisioni migliori in merito all’ottimizzazione dei modelli per i propri clienti finali.

Cosa sono le metriche?

Dopo aver implementato e addestrato un modello, il passo successivo che un data scientist farebbe è trovare il livello di prestazioni del modello. Vengono utilizzate diverse metriche per determinare l’efficacia di un modello rispetto ad altri. Alcuni esempi di metriche utilizzate includono:

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

Configurazione del codice ricetta

Attualmente, Model Insights Framework supporta i seguenti runtime:

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

Scala 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 consiste nel scrivere metriche di valutazione personalizzate.

Metriche di valutazione predefinite per Scala

Le valutazioni predefinite vengono 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
Valutatore consigli
com.adobe.platform.ml.impl.RecommendationsEvaluator

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

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

Per impostazione predefinita, dopo l’abilitazione di una classe di valutatore, durante l’apprendimento viene calcolata una serie di metriche. Le metriche predefinite possono essere dichiarate esplicitamente aggiungendo la seguente riga al tuo application.properties.

evaluation.metrics.com=com.adobe.platform.ml.impl.Constants.DEFAULT
NOTE
Se la metrica non è definita, le metriche predefinite saranno attive.

È possibile abilitare una metrica specifica modificando il valore di evaluation.metrics.com. Nell’esempio seguente, la metrica F-Score è abilitata.

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

Nella tabella seguente vengono indicate 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
-Precision
-Recall
-Matrice di confusione
-F-Score
-Accuracy
-Caratteristiche operative del ricevitore
-Area sotto le caratteristiche operative del ricevitore
-PRECISION
-RECALL
-CONFUSION_MATRIX
-FSCORE
-ACCURACY
-ROC
-AUROC
DefaultMultiClassificationEvaluator
-Precision
-Recall
-Matrice di confusione
-F-Score
-Accuracy
-Caratteristiche operative del ricevitore
-Area sotto le caratteristiche operative del ricevitore
-PRECISION
-RECALL
-CONFUSION_MATRIX
-FSCORE
-ACCURACY
-ROC
-AUROC
RecommendationsEvaluator
-Precisione media (MAP)
-Guadagno cumulativo scontato normalizzato
-Classificazione reciproca media
-Metrica K
-MEAN_AVERAGE_PRECISION
-NDCG
-MRR
-METRIC_K

Metriche di valutazione personalizzate per Scala

È possibile fornire un valutatore personalizzato estendendo l'interfaccia di MLEvaluator.scala nel file Evaluator.scala. Nel file Evaluator.scala di esempio vengono definite le funzioni personalizzate split() e evaluate(). La funzione split() suddivide i dati in modo casuale con un rapporto di 8:2 e la funzione evaluate() definisce e restituisce 3 metriche: MAPE, MAE e RMSE.

IMPORTANT
Per la classe MLMetric, non utilizzare "measures" per valueType durante la creazione di un nuovo MLMetric. In caso contrario, la metrica non verrà popolata nella tabella delle metriche di valutazione personalizzata.
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 passaggio successivo è quello di abilitarla nelle ricette. Operazione eseguita nel file application.properties nella cartella resources del progetto. Qui evaluation.class è impostato sulla classe Evaluator definita in Evaluator.scala

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

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

Python/Tensorflow pythontensorflow

Al momento non sono disponibili metriche di valutazione predefinite per Python o Tensorflow. Pertanto, per ottenere le metriche di valutazione per Python o Tensorflow, è necessario creare una metrica di valutazione personalizzata. Questa operazione può essere eseguita 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 sono definiti in valuator.py per la classe Evaluator. Segui il collegamento valuator.py per un esempio di Evaluator.

La creazione delle metriche di valutazione in Python richiede l'implementazione dei metodi evaluate() e split() da parte dell'utente.

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

Lo scopo del metodo split() è quello di immettere dati e generare un set di dati di formazione e di test. Nel nostro esempio, il metodo split() inserisce i dati utilizzando l'SDK DataSetReader, quindi pulisce i dati rimuovendo colonne non correlate. A questo punto, vengono create feature aggiuntive a partire dalle feature raw esistenti nei dati.

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

Metriche di valutazione personalizzate per Tensorflow

Per Tensorflow, simile a Python, sarà necessario implementare i metodi evaluate() e split() nella classe Evaluator. Per evaluate(), le metriche devono essere restituite mentre split() restituisce il treno e i set di dati di prova.

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 r

Al momento non sono disponibili metriche di valutazione predefinite per R. Pertanto, per ottenere le metriche di valutazione per R, è necessario definire la classe applicationEvaluator come parte della ricetta.

Metriche di valutazione personalizzate per R

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

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

  • Carica dati
  • Preparazione dei dati/progettazione delle funzioni
  • Recupera il modello salvato e valuta

I dati vengono prima caricati in un set di dati da un'origine come definito 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 effettuare una previsione utilizzando il nostro set di dati; vengono calcolate le metriche in base ai valori previsti e ai valori effettivi. In questo caso, MAPE, MAE e RMSE sono definiti e restituiti nell'oggetto metrics.

Utilizzo di metriche e grafici di visualizzazione predefiniti

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

Tipo di algoritmo ML
Metriche di valutazione
Visualizzazioni
Regressione
- RMSE
- MAPE
- MASE
- MAE
Curva di sovrapposizione dei valori previsti ed effettivi
Classificazione binaria
- Matrice di confusione
- Precisione-richiamo
- Precisione
- Punteggio F (in particolare F1 ,F2)
- AUC
- ROC
Matrice di curva ROC e di confusione
Classificazione di più classi
-Matrice di confusione
- Per ogni classe:
- precisione-richiamo precisione
- F-score (in particolare F1, F2)
Matrice di curva ROC e di confusione
Clustering (con verità di base)
- NMI (punteggio normalizzato per le informazioni reciproche), AMI (punteggio rettificato per le informazioni reciproche)
- RI (indice Rand), ARI (indice Rand rettificato)
- punteggio di omogeneità, punteggio di completezza e misura V
- FMI (indice Fowlkes-Mallows)
- purezza
- indice Jaccard
Grafico dei cluster che mostra cluster e centroidi con dimensioni relative dei cluster che riflettono i punti di dati che rientrano nel cluster
Clustering (senza verità di terra)
- Inerzia
- Coefficiente di siluetta
- CHI (indice Calinski-Harabaz)
- DBI (indice Davies-Bouldin)
- indice Dunn
Grafico dei cluster che mostra cluster e centroidi con dimensioni relative dei cluster che riflettono i punti di dati che rientrano nel cluster
Consiglio
-Precisione media (MAP)
-Guadagno cumulativo scontato normalizzato
-Classificazione reciproca media
-Metrica K
Da definire
Casi di utilizzo di TensorFlow
Analisi del modello TensorFlow (TFMA)
Confronto/visualizzazione del modello di rete neurale Deepcompare
Altro/meccanismo di acquisizione degli errori
Logica di metrica personalizzata (e grafici di valutazione corrispondenti) definita dall’autore del modello. Gestione corretta degli errori in caso di mancata corrispondenza del modello
Tabella con coppie chiave-valore per le metriche di valutazione
recommendation-more-help
cc79fe26-64da-411e-a6b9-5b650f53e4e9