Optimieren eines Modells mithilfe des Model Insights-Frameworks
Das Modell-Insights-Framework bietet Datenwissenschaftlern Tools, Data Science Workspace schnelle und fundierte Entscheidungen für optimale Modelle für maschinelles Lernen auf der Grundlage von Experimenten 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.
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 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:
evaluation.classcom.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluatorcom.adobe.platform.ml.impl.DefaultMultiClassificationEvaluatorcom.adobe.platform.ml.impl.RecommendationsEvaluatorDer 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
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.classevaluation.metricDefaultBinaryClassificationEvaluator-Recall
-Confusion Matrix
-F-Score
-Accuracy
-Receiver Operating Characteristics
-Area Under the Receiver Operating Characteristics
PRECISION-
RECALL-
CONFUSION_MATRIX-
FSCORE-
ACCURACY-
ROC-
AUROCDefaultMultiClassificationEvaluator-Recall
-Confusion Matrix
-F-Score
-Accuracy
-Receiver Operating Characteristics
-Area Under the Receiver Operating Characteristics
PRECISION-
RECALL-
CONFUSION_MATRIX-
FSCORE-
ACCURACY-
ROC-
AUROCRecommendationsEvaluator-Normalized Discounted Cumulative Gain
-Mean Reciprocal Rank
-Metric K
MEAN_AVERAGE_PRECISION-
NDCG-
MRR-
METRIC_KBenutzerdefinierte 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. Unsere split() teilt unsere Daten zufällig mit einem Verhältnis von 8 auf :2 und unsere evaluate() definiert und gibt 3 Metriken zurück: MAPE, MAE und RMSE.
MLMetric-Klasse beim Erstellen eines neuen "measures" keine valueType für MLMetric, da die Metrik sonst nicht in die Tabelle mit benutzerdefinierten Auswertungsmetriken eingefügt wird.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 der Data Science Workspace können die Benutzenden die Einblicke auf der Registerkarte „Auswertungsmetriken“ auf der Experimentseite sehen.
Python/Tensorflow pythontensorflow
Derzeit gibt es keine standardmäßigen Auswertungsmetriken für Python oder Tensorflow. Um die Auswertungsmetriken für Python oder Tensorflow abzurufen, müssen Sie daher eine benutzerdefinierte Auswertungsmetrik erstellen. 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().
Python würden diese Methoden in „evaluator.py für Klasse Evaluator definiert. Folgen Sie dem Link evaluator.py, um ein Beispiel für Evaluator zu sehen.
Um Auswertungsmetriken in Python zu erstellen, muss der Benutzer die 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.
Benutzerdefinierte Auswertungsmetriken für TensorFlow
Tensorflow müssen ähnlich wie Python die Methoden evaluate() und split() in der 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'
R 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
Der Sensei Model Insights Framework unterstützt eine Standardvorlage für jeden Typ von maschinellem Lernalgorithmus. Die folgende Tabelle beinhaltet allgemeine übergeordnete Klassen für maschinelle Lernalgorithmen und zugehörige Auswertungsmetriken und Visualisierungen.
- MAPE
- MASE
- MAE
- Precision-Recall
- Accuracy
- F-Score (spezifisch F1 ,F2)
- AUC
- ROC
- Für jede Klasse:
- Precision-Recall Accuracy
- F-Score (spezifisch F1, F2)
- RI (Rand Index), ARI (Adjusted Rand Index)
- Homogenitätswert, Vollständigkeitswert und V-Wert
- FMI (Fowlkes-Mallows Index)
- Purity
- Jaccard Index
- Silhouette Coefficient
- CHI (Calinski-Harabaz Index)
- DBI (Davies-Bouldin Index)
- Dunn Index
- Normalized Discounted Cumulative Gain
- Mean Reciprocal Rank
- Metric K