Model Insights Framework fornisce agli esperti di dati strumenti in Data Science Workspace per effettuare scelte rapide e informate per modelli ottimali di machine learning 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 esperti in materia di dati. A tal fine, viene fornito un modello predefinito per ciascun tipo di algoritmo di machine learning per facilitare l'ottimizzazione del modello. Il risultato finale consente agli esperti di data mining e ai cittadini di prendere decisioni migliori in merito all'ottimizzazione dei modelli per i clienti finali.
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 del confronto tra un modello e gli altri. Alcuni esempi di metriche utilizzate:
Al momento, Model Insights Framework supporta i seguenti runtime:
Il codice di esempio per le ricette è disponibile nell'archivio experience-platform-dsw-reference in recipes
. Per questa esercitazione verranno utilizzati riferimenti a file specifici provenienti da questo archivio.
Esistono due modi per inserire le metriche nelle ricette. Uno consiste nell’utilizzare le metriche di valutazione predefinite fornite dall’SDK e l’altro nel scrivere metriche di valutazione personalizzate.
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 |
---|---|
DefaultBinaryClassificationEevaluate | com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator |
DefaultMultiClassificationEevaluate | com.adobe.platform.ml.impl.DefaultMultiClassificationEvaluator |
RecommendationsEevaluate | 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 la DefaultBinaryClassificationEvaluator
:
evaluation.class=com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator
evaluation.labelColumn=label
evaluation.predictionColumn=prediction
training.evaluate=true
Una volta attivata la classe di un valutatore, per impostazione predefinita durante la formazione vengono calcolate alcune metriche. Le metriche predefinite possono essere dichiarate esplicitamente aggiungendo la seguente riga al application.properties
.
evaluation.metrics.com=com.adobe.platform.ml.impl.Constants.DEFAULT
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 sono riportate le metriche predefinite per ciascuna 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 -Richiamo -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 -Richiamo -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 |
-Media di precisione (MAP) -Normalizzata Gain Cumulative Scontate -Media Rank Reciproca -Metric K |
-MEAN_AVERAGE_PRECISION - NDCG - MRR - METRIC_K |
Il valutatore personalizzato può essere fornito estendendo l'interfaccia di MLEvaluator.scala
nel file Evaluator.scala
. Nel file di esempio Eevaluate.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.
Per la classe MLMetric
, non utilizzare "measures"
per valueType
quando si crea una nuova MLMetric
altrimenti la metrica non verrà compilata nella tabella delle metriche di valutazione personalizzate.
Effettuate le seguenti operazioni: metrics.add(new MLMetric("MAPE", mape, "double"))
Non questo: metrics.add(new MLMetric("MAPE", mape, "measures"))
Una volta definito nella ricetta, il passo successivo consiste nell'attivarlo nelle ricette. Ciò viene fatto nel file application.properties nella cartella resources
del progetto. Qui la evaluation.class
è impostata 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.
Al momento non sono disponibili 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 classe Evaluator
.
Per le metriche di valutazione personalizzate, è necessario implementare due metodi principali per il valutatore: split()
e evaluate()
.
Per Python, questi metodi saranno definiti in evaluate.py per la classe Evaluator
. Seguire il collegamento evaluate.py per un esempio della Evaluator
.
La creazione di metriche di valutazione in Python richiede l'implementazione dei metodi evaluate()
e split()
.
Il metodo evaluate()
restituisce l'oggetto della metrica che contiene un array di oggetti della metrica con proprietà di name
, value
e valueType
.
Lo scopo del metodo split()
è quello di inserire i dati e inviare un set di dati per la formazione e il test. Nel nostro esempio, il metodo split()
immette i dati utilizzando l'SDK DataSetReader
, quindi li pulisce rimuovendo le colonne non correlate. Da qui vengono create funzioni aggiuntive a partire dalle feature non elaborate esistenti nei dati.
Il metodo split()
deve restituire un dataframe di formazione e di prova che viene quindi utilizzato dai metodi pipeline()
per addestrare e testare il modello ML.
Per Tensorflow, analogamente a Python, è necessario implementare i metodi evaluate()
e split()
della classe Evaluator
. Per evaluate()
, le metriche devono essere restituite mentre split()
restituisce i set di dati del treno e del test.
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'
Al momento, non esistono metriche di valutazione predefinite per R. Pertanto, per ottenere le metriche di valutazione per R, è necessario definire la classe applicationEvaluator
come parte della ricetta.
Lo scopo principale di applicationEvaluator
è restituire un oggetto JSON contenente coppie chiave-valore di metriche.
Questo applicationEevaluate.R può essere utilizzato come esempio. In questo esempio, la sezione applicationEvaluator
è suddivisa in tre sezioni familiari:
I dati vengono caricati per la prima volta in un dataset da un'origine come definita in retail.config.json. Da qui, i dati vengono puliti e progettati per adattarsi al modello di apprendimento della macchina. Infine, il modello è utilizzato per fare una previsione utilizzando il nostro dataset e dai valori previsti e dai valori effettivi, le metriche sono calcolate. In questo caso, MAPE, MAE e RMSE vengono definiti e restituiti nell'oggetto metrics
.
Sensei Model Insights Framework supporterà un modello predefinito per ciascun tipo di algoritmo di machine learning. La tabella seguente mostra le classi comuni di algoritmi di machine learning ad 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 valori previsti e valori effettivi |
Classificazione binaria | - Matrice di confusione - Precisione-richiamo - Precisione - F-score (in particolare F1,F2) - AUC - ROC |
Curva ROC e matrice confusione |
Classificazione multiclasse | -Matrice di conversione - Per ogni classe: - precisione del richiamo - punteggio F (in particolare F1, F2) |
Curva ROC e matrice confusione |
Clustering (con verità a terra) | - NMI (valutazione normalizzata delle informazioni reciproche), AMI (valutazione rettificata delle informazioni reciproche) - RI (indice Rand), ARI (indice Rand rettificato) - punteggio di omogeneità, punteggio di completezza e V-measurement - FMI (indice Fowlkes-Mallow) - Purity - indice Jaccard |
Grafico cluster che mostra cluster e centroidi con dimensioni cluster relative che riflettono i punti dati del cluster |
Clustering (senza verità di fondo) | - Inertia - Coefficiente di silhouette - CHI (indice di Calinski-Harabaz) - DBI (indice di Davies-Bouldin) - Indice di Dunn |
Grafico cluster che mostra cluster e centroidi con dimensioni cluster relative che riflettono i punti dati del cluster |
Consiglio | -Media di precisione (MAP) -Normalizzata Gain Cumulative Scontate -Media Rank Reciproca -Metric K |
TBD |
TensorFlow, casi di utilizzo | Analisi modello TensorFlow (TFMA) | Confronto 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 degli errori in caso di mancata corrispondenza del modello | Tabella con coppie chiave-valore per le metriche di valutazione |