Ottimizzare un modello utilizzando il framework di Insights del modello
- Argomenti:
- Data Science Workspace
Creato per:
- Utente
- Sviluppatore
Il Model Insights Framework fornisce al data scientist gli strumenti per Data Science Workspace effettuare scelte rapide e informate per modelli di machine learning ottimali basati su esperimenti. Il framework migliorerà la velocità e l'efficacia del workflow di apprendimento automatico, oltre a migliorare la facilità d'uso per i data scientist. Questo viene fatto fornendo un modello predefinito per ogni tipo di algoritmo di Machine Learning per facilitare l'ottimizzazione del modello. Il risultato finale consente ai data scientist e ai citizen data scientist di prendere decisioni migliori sull'ottimizzazione dei modelli per i loro clienti finali.
Cosa sono le metriche?
Dopo aver implementato e training un modello, il passaggio successivo che un data scientist farebbe è scoprire le prestazioni del modello. Vengono utilizzate varie metriche per determinare l'efficacia di un modello rispetto ad altri. Alcuni esempi di metriche utilizzate includono:
- Accuratezza della classificazione
- Area sotto 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
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 sono riportate le metriche predefinite per ogni classe. Un utente può anche utilizzare i valori nella evaluation.metric
colonna per abilitare una metrica specifica.
evaluator.class
evaluation.metric
DefaultBinaryClassificationEvaluator
-Richiamo
-Matrice
di confusione -F-Score
-Accuratezza
-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 -rango
reciproco medio -metrico 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. Questa operazione viene eseguita nel file applicazione.properties nella cartella del resources
progetto. Qui è evaluation.class
impostato sulla Evaluator
classe definita in Evaluator.scala
evaluation.class=com.adobe.platform.ml.Evaluator
Data Science WorkspaceIn , il utente sarebbe in grado di vedere gli approfondimenti nella scheda "Metriche di valutazione" nella pagina dell'esperimento.
Python/Tensorflow
Al momento, non esistono metriche di valutazione predefinite per Python o Tensorflow. Pertanto, per ottenere le metriche di valutazione per Python o Tensorflow, sarà necessario creare una metrica di valutazione personalizzata. Questo può essere fatto implementando la Evaluator
classe.
Metriche di valutazione personalizzate per Python
Per le metriche di valutazione personalizzate, esistono due metodi principali che devono essere implementati per il valutatore: split()
e evaluate()
.
Per Python, questi metodi sarebbero definiti in evaluator.py per la Evaluator
classe. Seguire il collegare evaluator.py per un esempio di Evaluator
.
La creazione di metriche di valutazione richiede Python che il utente implementare i evaluate()
metodi and split()
.
Il evaluate()
metodo restituisce l'oggetto metrico che contiene una matrice di oggetti metrici con proprietà di name
, value
, e valueType
.
Lo scopo del metodo è quello di inserire dati e generare un training e un set di split()
dati di test. Nel nostro esempio, il split()
metodo immette i dati utilizzando l'SDK DataSetReader
e quindi pulisce i dati rimuovendo le colonne non correlate. Da lì, vengono create funzionalità aggiuntive dalle funzionalità non elaborate esistenti nei dati.
Il split()
metodo deve restituire un frame di dati di training e test che viene quindi utilizzato dai pipeline()
metodi per addestrare e testare il modello ML.
Metriche di valutazione personalizzate per Tensorflow
Per Tensorflow, simile a Python, i metodi evaluate()
e split()
nella Evaluator
classe dovranno essere implementati. 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
Al momento, non esistono metriche di valutazione predefinite per R. Pertanto, per ottenere le metriche di valutazione per R, è necessario definire la applicationEvaluator
classe come parte della ricetta.
Metriche di valutazione personalizzate per R
Lo scopo principale del applicationEvaluator
è restituire un oggetto JSON contenente coppie chiave-valore di metriche.
Questa applicationEvaluator.R può essere utilizzata come esempio. In questo esempio, la è suddivisa in applicationEvaluator
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
di confusione- Precisione-richiamo
- Accuratezza- F-score
(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