Optimieren eines Modells mithilfe des Model Insights-Frameworks

The Model Insights Framework provides the data scientist with tools in Data Science Workspace to make quick and informed choices for optimal machine learning models based on experiments. Das Framework verbessert die Geschwindigkeit und Effektivität des Workflows für maschinelles Lernen und erhöht die Anwenderfreundlichkeit für Data Scientists. Dies geschieht durch Bereitstellung einer Standardvorlage für jeden maschinellen Lernalgorithmustyp, sodass sich Modelle verfeinern lassen. Das Endergebnis ermöglicht es Data Scientists und Citizen Data Scientists, bessere Entscheidungen zur Optimierung von Modellen ihrer Endkunden zu treffen.

Was sind Metriken?

Nach dem Implementieren und Trainieren eines Modells würde ein Data Scientist als Nächstes ermitteln, wie gut das Modell funktionieren wird. Es werden verschiedene Metriken verwendet, um herauszufinden, wie gut ein Modell im Vergleich zu anderen abschneidet. Einige Beispiele für verwendete Metriken:

  • Klassifizierungsgenauigkeit
  • Fläche unter Kurve
  • Konfusionsmatrix
  • Klassifizierungsbericht

Konfigurieren von Rezept-Code

Derzeit unterstützt das Model Insights Framework folgende Laufzeitumgebungen:

Beispiel-Code für Rezepte finden Sie im Repository experience-platform-dsw-reference unter recipes. Auf bestimmte Dateien aus diesem Repository wird in dieser Anleitung verwiesen.

Scala

Es gibt zwei Möglichkeiten, um den Rezepten Metriken hinzuzufügen. Eine besteht darin, die vom SDK bereitgestellten Standardbewertungsmetriken zu nutzen; die andere besteht darin, benutzerdefinierte Auswertungsmetriken zu schreiben.

Standardauswertungsmetriken für Scala

Standardauswertungen werden im Rahmen der Klassifizierungsalgorithmen berechnet. Hier finden Sie einige Standardwerte für Auswerter, die aktuell implementiert sind:

Auswerterklasse evaluation.class
DefaultBinaryClassificationEvaluator com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator
DefaultMultiClassificationEvaluator com.adobe.platform.ml.impl.DefaultMultiClassificationEvaluator
RecommendationsEvaluator com.adobe.platform.ml.impl.RecommendationsEvaluator

Der Auswerter kann im Rezept in der Datei application.properties im recipe-Ordner definiert werden. Beispiel-Code zur Aktivierung des Auswerters DefaultBinaryClassificationEvaluator ist unten dargestellt:

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

Nachdem eine Auswerterklasse aktiviert wurde, wird während des Trainierens standardmäßig eine Reihe von Metriken berechnet. Standardmetriken können explizit deklariert werden, indem Sie Ihren application.properties die folgende Zeile hinzufügen.

evaluation.metrics.com=com.adobe.platform.ml.impl.Constants.DEFAULT
HINWEIS

Wenn die Metrik nicht definiert ist, sind die Standardmetriken aktiv.

Eine bestimmte Metrik kann aktiviert werden, indem Sie den Wert für evaluation.metrics.com ändern. Im folgenden Beispiel ist die F-Score-Metrik aktiviert.

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

In der folgenden Tabelle sind die Standardmetriken für jede Klasse aufgeführt. Ein Benutzer kann auch die Werte in der evaluation.metric-Spalte verwenden, um eine bestimmte Metrik zu aktivieren.

evaluator.class Standardmetriken evaluation.metric
DefaultBinaryClassificationEvaluator -Precision
-Recall
-Confusion Matrix
-F-Score
-Accuracy
-Receiver Operating Characteristics
-Area Under the Receiver Operating Characteristics
-PRECISION
-RECALL
-CONFUSION_MATRIX
-FSCORE
-ACCURACY
-ROC
-AUROC
DefaultMultiClassificationEvaluator -Precision
-Recall
-Confusion Matrix
-F-Score
-Accuracy
-Receiver Operating Characteristics
-Area Under the Receiver Operating Characteristics
-PRECISION
-RECALL
-CONFUSION_MATRIX
-FSCORE
-ACCURACY
-ROC
-AUROC
RecommendationsEvaluator -Mean Average Precision (MAP)
-Normalized Discounted Cumulative Gain
-Mean Reciprocal Rank
-Metric K
-MEAN_AVERAGE_PRECISION
-NDCG
-MRR
-METRIC_K

Benutzerdefinierte Auswertungsmetriken für Scala

Der benutzerdefinierte Auswerter kann angegeben werden, indem Sie die Oberfläche von MLEvaluator.scala in Ihrer Evaluator.scala-Datei erweitern. In der Beispieldatei Evaluator.scala definieren wir benutzerdefinierte split()- und evaluate()-Funktionen. Die split()-Funktion teilt unsere Daten im Verhältnis von 8:2 zufällig auf; die evaluate()-Funktion definiert und gibt drei Metriken zurück: MAPE, MAE und RMSE.

WICHTIG

Verwenden Sie bei der MLMetric-Klasse nicht "measures" als valueType, wenn Sie eine neue MLMetric erstellen, da diese Metrik sonst nicht in die Tabelle mit den benutzerdefinierten Auswertungsmetriken aufgenommen wird.

Führen Sie folgende Schritte aus: metrics.add(new MLMetric("MAPE", mape, "double"))
Und nicht: metrics.add(new MLMetric("MAPE", mape, "measures"))

Nach der Definition im Rezept besteht der nächste Schritt darin, sie in den Rezepten zu aktivieren. Dies erfolgt in der Datei application.properties im Ordner resources des Projekts. Hier ist evaluation.class auf die Evaluator-Klasse eingestellt, die in Evaluator.scala definiert wurde.

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

In the Data Science Workspace, the user would be able to see the insights in the "Evaluation Metrics" tab in the experiment page.

Python/Tensorflow

As of now, there are no default evaluation metrics for Python or Tensorflow. Thus, to get the evaluation metrics for Python or Tensorflow, you will need to create a custom evaluation metric. Dies kann durch Implementierung der Evaluator-Klasse erfolgen.

Benutzerdefinierte Auswertungsmetriken für Python

Für benutzerdefinierte Auswertungsmetriken müssen für den Auswerter zwei Hauptmethoden implementiert werden: split() und evaluate().

For Python, these methods would be defined in evaluator.py for the Evaluator class. Folgen Sie dem Link evaluator.py, um ein Beispiel für Evaluator zu sehen.

Creating evaluation metrics in Python requires the user to implement the evaluate() and split() methods.

Die evaluate()-Methode gibt das metrische Objekt zurück, das eine Gruppe von Metrikobjekten mit den Eigenschaften name, value und valueType enthält.

Der Zweck der split()-Methode besteht darin, Daten einzugeben und ein Training sowie einen Testdatensatz auszugeben. In unserem Beispiel gibt die split()-Methode Daten mit dem DataSetReader SDK ein und löscht die Daten dann, indem nicht verwandte Spalten entfernt werden. Anschließend werden aus den vorhandenen Rohfunktionen zusätzliche Funktionen erstellt.

Die split()-Methode sollte einen Trainings- und Prüf-Dataframe zurückgeben, der dann von den pipeline()-Methoden zum Trainieren und Prüfen des ML-Modells verwendet wird.

Benutzerdefinierte Auswertungsmetriken für TensorFlow

For Tensorflow, similar to Python, the methods evaluate() and split() in the Evaluator class will need to be implemented. Für evaluate() sollten die Metriken zurückgegeben werden, während split() die Trainings- und Testdatensätze zurückgibt.

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

Derzeit gibt es keine standardmäßigen Auswertungsmetriken für R. Um Auswertungsmetriken für R zu erhalten, müssen Sie daher die applicationEvaluator-Klasse als Teil des Rezepts definieren.

Benutzerdefinierte Auswertungsmetriken für R

Hauptaufgabe des applicationEvaluator ist es, ein JSON-Objekt zurückzugeben, das Schlüssel-Wert-Paare von Metriken enthält.

Dieser applicationEvaluator.R kann als Beispiel verwendet werden. In diesem Beispiel wird der applicationEvaluator in drei vertraute Abschnitte unterteilt:

  • Laden von Daten
  • Datenvorbereitung/Funktionsentwicklung
  • Abrufen des gespeicherten Modells und Auswerten

Daten werden zunächst aus einer in retail.config.json definierten Quelle in einen Datensatz geladen. Dort werden die Daten bereinigt und so bearbeitet, dass sie dem maschinellen Lernmodell entsprechen. Schließlich wird das Modell verwendet, um mithilfe unseres Datensatzes eine Prognose zu erstellen; aus den prognostizierten und tatsächlichen Werten werden dann Metriken berechnet. In diesem Fall werden MAPE, MAE und RMSE definiert und im metrics-Objekt zurückgegeben.

Verwenden von vordefinierten Metriken und Visualisierungsdiagrammen

The Sensei Model Insights Framework will support one default template for each type of machine learning algorithm. Die folgende Tabelle beinhaltet allgemeine übergeordnete Klassen für maschinelle Lernalgorithmen und zugehörige Auswertungsmetriken und Visualisierungen.

ML-Algorithmustyp Auswertungsmetriken Visualisierungen
Regression - RMSE
- MAPE
- MASE
- MAE
Überlagerungskurve für prognostizierte vs. tatsächliche Werte
Binäre Klassifizierung - Confusion Matrix
- Precision-Recall
- Accuracy
- F-Score (spezifisch F1 ,F2)
- AUC
- ROC
ROC-Kurve und Konfusionsmatrix
Mehrklassige Klassifizierung - Confusion Matrix
- Für jede Klasse:
- Precision-Recall Accuracy
- F-Score (spezifisch F1, F2)
ROC-Kurve und Konfusionsmatrix
Clustering (mit Ground Truth) - NMI (Normalized Mutual Information-Wert), AMI (Adjusted Mutual Information-Wert)
- RI (Rand Index), ARI (Adjusted Rand Index)
- Homogenitätswert, Vollständigkeitswert und V-Wert
- FMI (Fowlkes-Mallows Index)
- Purity
- Jaccard Index
Cluster-Diagramm für Cluster und Zentroide mit relativen Cluster-Größen, die die Datenpunkte im Cluster widerspiegeln
Clustering (ohne Ground Truth) - Inertia
- Silhouette Coefficient
- CHI (Calinski-Harabaz Index)
- DBI (Davies-Bouldin Index)
- Dunn Index
Cluster-Diagramm für Cluster und Zentroide mit relativen Cluster-Größen, die die Datenpunkte im Cluster widerspiegeln
Empfehlung - Mean Average Precision (MAP)
- Normalized Discounted Cumulative Gain
- Mean Reciprocal Rank
- Metric K
TBD
Anwendungsbeispiele für TensorFlow TensorFlow Model Analysis (TFMA) Vergleich/Visualisierung des neuronalen Netzwerkmodells mit DeepCompare
Sonstige/Fehlererfassungsmechanismus Benutzerdefinierte Metriklogik (und entsprechende Auswertungstabellen), vom Modellautor definiert. Ordnungsgemäße Fehlerbehandlung im Falle einer nicht übereinstimmenden Vorlage Tabelle mit Schlüssel-Wert-Paaren für Auswertungsmetriken

Auf dieser Seite