Optimera en modell med Model Insights-ramverket
Model Insights Framework ger datavetenskaparen verktyg i Data Science Workspace för att göra snabba och välgrundade val för optimala maskininlärningsmodeller baserade på experiment. Ramverket kommer att förbättra snabbheten och effektiviteten i maskininlärningsarbetsflödet samt förbättra användarvänligheten för datavetare. Det gör du genom att ange en standardmall för varje maskininlärningsalgoritmtyp som ska vara till hjälp vid modelljustering. Slutresultatet gör att datavetare och datavetare kan fatta bättre modelloptimeringsbeslut för sina slutkunder.
Vad är mätvärden?
Efter att ha implementerat och utbildat en modell är nästa steg som en datavetare skulle göra att hitta hur bra modellen kommer att fungera. Olika mätvärden används för att hitta hur effektiv en modell är jämfört med andra. Några exempel på mätvärden är:
- Klassificeringsnoggrannhet
- Område under kurva
- Sammanställningsmatris
- Klassificeringsrapport
Konfigurera receptkod
Model Insights Framework har för närvarande stöd för följande körningsmiljöer:
Exempelkod för recept finns i databasen experience-platform-dsw-reference under recipes
. Specifika filer från den här databasen kommer att refereras i den här självstudiekursen.
Scala scala
Det finns två sätt att hämta in mätvärden till recepten. Den ena är att använda standardmåtten för utvärdering som tillhandahålls av SDK och den andra är att skriva anpassade mått för utvärdering.
Standardmått för utvärdering av Scala
Standardutvärderingar beräknas som en del av klassificeringsalgoritmerna. Här är några standardvärden för utvärderare som för närvarande är implementerade:
evaluation.class
com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator
com.adobe.platform.ml.impl.DefaultMultiClassificationEvaluator
com.adobe.platform.ml.impl.RecommendationsEvaluator
Utvärderaren kan definieras i receptet i filen application.properties i mappen recipe
. Exempelkod som aktiverar DefaultBinaryClassificationEvaluator
visas nedan:
evaluation.class=com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator
evaluation.labelColumn=label
evaluation.predictionColumn=prediction
training.evaluate=true
När en utvärderingsklass har aktiverats beräknas ett antal mätvärden under utbildning som standard. Standardmått kan deklareras explicit genom att lägga till följande rad i din application.properties
.
evaluation.metrics.com=com.adobe.platform.ml.impl.Constants.DEFAULT
Ett specifikt mått kan aktiveras genom att värdet för evaluation.metrics.com
ändras. I följande exempel är F-poängmåttet aktiverat.
evaluation.metrics=com.adobe.platform.ml.impl.Constants.FSCORE
I följande tabell anges standardmåtten för varje klass. En användare kan också använda värdena i kolumnen evaluation.metric
för att aktivera ett specifikt mått.
evaluator.class
evaluation.metric
DefaultBinaryClassificationEvaluator
-Recall
-Confusion Matrix
-F-Score
-Accuracy
-Receiver-operatoregenskaper
under mottagarens driftsegenskaper
PRECISION
-
RECALL
-
CONFUSION_MATRIX
-
FSCORE
-
ACCURACY
-
ROC
-
AUROC
DefaultMultiClassificationEvaluator
-Recall
-Confusion Matrix
-F-Score
-Accuracy
-Receiver-operatoregenskaper
under mottagarens driftsegenskaper
PRECISION
-
RECALL
-
CONFUSION_MATRIX
-
FSCORE
-
ACCURACY
-
ROC
-
AUROC
RecommendationsEvaluator
- normaliserad, rabatterad kumulativ förstärkning
- medelvärde för ömsesidigt rangordnade
- mått K
MEAN_AVERAGE_PRECISION
-
NDCG
-
MRR
-
METRIC_K
Anpassade utvärderingsmått för Scala
Den anpassade utvärderaren kan tillhandahållas genom att utöka gränssnittet för MLEvaluator.scala
i Evaluator.scala
-filen. I exemplet Evaluator.scala definierar vi anpassade funktioner för split()
och evaluate()
. Vår split()
-funktion delar våra data slumpmässigt med förhållandet 8:2 och vår evaluate()
-funktion definierar och returnerar 3 mått: MAPE, MAE och RMSE.
"measures"
för valueType
för klassen MLMetric
när du skapar en ny MLMetric
, annars fylls inte måttet i i den anpassade utvärderingstabellen.metrics.add(new MLMetric("MAPE", mape, "double"))
Inte detta:
metrics.add(new MLMetric("MAPE", mape, "measures"))
När det är definierat i receptet är nästa steg att aktivera det i recepten. Detta görs i filen application.properties i projektets resources
-mapp. Här är evaluation.class
inställd på klassen Evaluator
som definieras i Evaluator.scala
evaluation.class=com.adobe.platform.ml.Evaluator
I Data Science Workspace kan användaren se insikterna på fliken "Evaluation Metrics" på experimentsidan.
Python/Tensorflow pythontensorflow
För närvarande finns det inga standardmått för utvärdering för Python eller Tensorflow. Om du vill hämta utvärderingsmåtten för Python eller Tensorflow måste du skapa ett anpassat utvärderingsmått. Detta kan du göra genom att implementera klassen Evaluator
.
Anpassade utvärderingsmått för Python
För anpassade utvärderingsmått finns det två huvudmetoder som måste implementeras för utvärderaren: split()
och evaluate()
.
För Python skulle dessa metoder definieras i utvärderator.py för klassen Evaluator
. Följ länken utvärderator.py för ett exempel på Evaluator
.
Om du skapar utvärderingsmått i Python måste användaren implementera metoderna evaluate()
och split()
.
Metoden evaluate()
returnerar det metriska objektet som innehåller en array med metriska objekt med egenskaperna name
, value
och valueType
.
Syftet med metoden split()
är att mata in data och att mata ut en utbildning och en testdatamängd. I vårt exempel matar metoden split()
in data med SDK:t DataSetReader
och rensar sedan data genom att ta bort icke-relaterade kolumner. Därifrån skapas ytterligare funktioner från befintliga Raw-funktioner i data.
Metoden split()
bör returnera en utbildnings- och testdatabildruta som sedan används av metoderna pipeline()
för att träna och testa ML-modellen.
Anpassade utvärderingsmått för tensorflow
Metoderna evaluate()
och split()
i klassen Evaluator
måste implementeras för Tensorflow, ungefär som Python. För evaluate()
ska mätvärdena returneras medan split()
returnerar tåget och testdatauppsättningarna.
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
Från och med nu finns det inga standardvärden för R. Om du vill hämta utvärderingsmåtten för R måste du definiera klassen applicationEvaluator
som en del av receptet.
Anpassade bedömningsvärden för R
Huvudsyftet med applicationEvaluator
är att returnera ett JSON-objekt som innehåller nyckelvärdepar med mätvärden.
Denna applicationEvaluator.R kan användas som exempel. I det här exemplet delas applicationEvaluator
upp i tre välkända avsnitt:
- Läs in data
- Datakivering/funktionsutveckling
- Hämta sparad modell och utvärdera
Data läses först in till en datauppsättning från en källa enligt definitionen i retail.config.json. Därifrån rensas och konstrueras data för att passa maskininlärningsmodellen. Slutligen används modellen för att göra en förutsägelse med hjälp av vår datamängd, och med utgångspunkt i de förväntade värdena och de faktiska värdena beräknas mätvärdena. I det här fallet definieras MAPE, MAE och RMSE och returneras i objektet metrics
.
Använda fördefinierade mätvärden och visualiseringsdiagram
Sensei Model Insights Framework stöder en standardmall för varje typ av maskininlärningsalgoritm. Tabellen nedan visar vanliga maskininlärningsalgoritmklasser på hög nivå och motsvarande utvärderingsmått och visualiseringar.
- MAPE
- MASE
- MAE
- Precision-revy
- Accuracy
- F-score (specifikt F1,F2)
- AUC
- ROC
- För varje klass:
- precision-/återkallelseprecision
- F-poäng (speciellt F1, F2)
- RI (Rand index), ARI (justerat Rand-index)
- homogenitetspoäng, fullständighetsresultat och V- measure
- FMI (Fowlkes-Mallows index)
- Renhet
- Jaccard-index
- Silhouette-koefficient
- CHI (Calinski-Harabaz index)
- DBI (Davies-Bouldin index)
- Dunn-index
- normaliserad, rabatterad kumulativ förstärkning
- medelvärde för ömsesidigt rangordnade
- mått K