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:
evaluation.class
com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator
com.adobe.platform.ml.impl.DefaultMultiClassificationEvaluator
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
È 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
evaluation.metric
DefaultBinaryClassificationEvaluator
-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
-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
-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.
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.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.
- MAPE
- MASE
- MAE
- Precisione-richiamo
- Precisione
- Punteggio F (in particolare F1 ,F2)
- AUC
- ROC
- Per ogni classe:
- precisione-richiamo precisione
- F-score (in particolare F1, F2)
- RI (indice Rand), ARI (indice Rand rettificato)
- punteggio di omogeneità, punteggio di completezza e misura V
- FMI (indice Fowlkes-Mallows)
- purezza
- indice Jaccard
- Coefficiente di siluetta
- CHI (indice Calinski-Harabaz)
- DBI (indice Davies-Bouldin)
- indice Dunn
-Guadagno cumulativo scontato normalizzato
-Classificazione reciproca media
-Metrica K