Das Model Insights Framework bietet Datenwissenschaftlern Werkzeuge in Data Science Workspace, um anhand von Experimenten schnelle und fundierte Entscheidungen für optimale Modelle für maschinelles Lernen zu treffen. 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.
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:
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.
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.
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
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-Betriebseigenschaften -Bereich unter den Betriebseigenschaften des Receivers |
-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 |
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.
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
Im Data Science Workspace könnte der Benutzer die Einblicke auf der Registerkarte "Auswertungsmetriken"auf der Experimentseite sehen.
Derzeit gibt es keine standardmäßigen Auswertungsmetriken für Python oder Tensorflow. Um die Auswertungsmetriken für Python oder Tensorflow zu erhalten, müssen Sie daher eine benutzerdefinierte Auswertungsmetrik erstellen. Dies kann durch Implementierung der Evaluator
-Klasse erfolgen.
Für benutzerdefinierte Auswertungsmetriken müssen für den Auswerter zwei Hauptmethoden implementiert werden: split()
und evaluate()
.
Für Python würden diese Methoden in evaluator.py für die Klasse Evaluator
definiert. Folgen Sie dem Link evaluator.py, um ein Beispiel für Evaluator
zu sehen.
Zum Erstellen von Auswertungsmetriken in Python muss der Benutzer die Methoden evaluate()
und split()
implementieren.
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.
Für Tensorflow, ähnlich wie Python, müssen die Methoden evaluate()
und split()
in der Klasse Evaluator
implementiert werden. 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'
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.
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:
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.
Sensei Model Insights Framework unterstützt für jeden Typ von maschinellem Lernalgorithmus eine Standardvorlage. 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 |