Ottimizzare un modello utilizzando il framework Model Insights

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.

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 del confronto tra un modello e gli altri. Alcuni esempi di metriche utilizzate:

  • Precisione della classificazione
  • Area sotto curva
  • Matrice di fusione
  • Report classificazione

Configurazione del codice di ricetta

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.

Scala

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.

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
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
NOTA

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

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 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.

IMPORTANTE

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.

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, sarà necessario 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 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.

Metriche di valutazione personalizzate per Tensorflow

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'

R

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.

Metriche di valutazione personalizzate per R

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:

  • Carica dati
  • Preparazione/progettazione di funzioni
  • Recuperare il modello salvato e valutare

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.

Utilizzo di metriche e grafici di visualizzazione predefiniti

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

In questa pagina

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free