Optimera en modell med Model Insights-ramverket

Model Insights Framework förser datavetenskaparen med verktyg i Data Science Workspace 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 experience-platform-dsw-reference databas 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:

Utvärderarklass
evaluation.class
DefaultBinaryClassificationEvaluator
com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator
DefaultMultiClassificationEvaluator
com.adobe.platform.ml.impl.DefaultMultiClassificationEvaluator
RecommendationsEvaluator
com.adobe.platform.ml.impl.RecommendationsEvaluator

Utvärderaren kan definieras i receptet i application.properties i recipe mapp. 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. Standardvärden kan deklareras explicit genom att lägga till följande rad i application.properties.

evaluation.metrics.com=com.adobe.platform.ml.impl.Constants.DEFAULT
NOTE
Om måttet inte är definierat aktiveras standardmåtten.

Du kan aktivera ett specifikt mått genom att ändra värdet för evaluation.metrics.com. 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 evaluation.metric -kolumn för att aktivera ett specifikt mått.

evaluator.class
Standardmått
evaluation.metric
DefaultBinaryClassificationEvaluator
-Precision
-Återkalla
-Matrix för konfusion
-F-poäng
-Accuracy
-Mottagarens driftsegenskaper
-Område under mottagarens driftsegenskaper
-PRECISION
-RECALL
-CONFUSION_MATRIX
-FSCORE
-ACCURACY
-ROC
-AUROC
DefaultMultiClassificationEvaluator
-Precision
-Återkalla
-Matrix för konfusion
-F-poäng
-Accuracy
-Mottagarens driftsegenskaper
-Område under mottagarens driftsegenskaper
-PRECISION
-RECALL
-CONFUSION_MATRIX
-FSCORE
-ACCURACY
-ROC
-AUROC
RecommendationsEvaluator
- Genomsnittlig genomsnittlig precision (MAP)
-Normaliserat rabatterat kumulativt resultat
- Medelvärde för lutning
-Metrisk K
-MEAN_AVERAGE_PRECISION
-NDCG
-MRR
-METRIC_K

Anpassade utvärderingsmått för Scala

Den anpassade utvärderaren kan fås genom att utöka gränssnittet för MLEvaluator.scala i Evaluator.scala -fil. I exemplet Evaluator.scala fil, vi definierar anpassad split() och evaluate() funktioner. Våra split() delar data slumpmässigt med förhållandet 8:2 och evaluate() funktionen definierar och returnerar 3 mått: MAPPA, MAE och RMSE.

IMPORTANT
För MLMetric klass, använd inte "measures" for valueType när du skapar en ny MLMetric i annat fall fylls inte måttet i i tabellen för anpassade utvärderingsmått.
Gör så här: 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 application.properties fil i projektets resources mapp. Här är evaluation.class är inställt på Evaluator klass definierad i Evaluator.scala

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

I Data Science Workspace, skulle användaren kunna se insikterna på fliken "Evaluation Metrics" på sidan med experiment.

Python/Tensorflow pythontensorflow

För närvarande finns det inga standardmått för utvärdering för Python eller Tensorflow. Så här hämtar du utvärderingsstatistik för Python eller Tensorflowmåste du skapa ett anpassat utvärderingsmått. Detta kan du göra genom att implementera Evaluator klassen.

Anpassade utvärderingsvärden för Python

För anpassade utvärderingsvärden finns det två huvudmetoder som måste implementeras för utvärderaren: split() och evaluate().

För Pythonskulle dessa metoder definieras i utvärderare.py för Evaluator klassen. Följ utvärderare.py länk för ett exempel på Evaluator.

Skapa utvärderingsmått i Python kräver att användaren implementerar evaluate() och split() metoder.

The evaluate() metoden returnerar metric-objektet som innehåller en array med metriska objekt med egenskaperna för name, valueoch valueType.

Syftet med split() metoden är att mata in data och att ta fram en utbildning och en testdatamängd. I vårt exempel split() metodindata med DataSetReader SDK och rensar sedan data genom att ta bort orelaterade kolumner. Därifrån skapas ytterligare funktioner från befintliga Raw-funktioner i data.

The split() ska returnera en utbildnings- och testdatabildruta som sedan används av pipeline() metoder för att träna och testa ML-modellen.

Anpassade utvärderingsmått för tensorflow

För Tensorflow, liknar Python, metoderna evaluate() och split() i Evaluator måste implementeras. För evaluate(), ska mätvärdena returneras medan split() returnerar tåget och provningsdata.

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 standardmått för utvärdering för R. För att få fram mätvärdena för R måste du definiera 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.

Detta applicationEvaluator.R kan användas som exempel. I det här exemplet applicationEvaluator är uppdelad 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 metrics -objekt.

Använda fördefinierade mätvärden och visualiseringsdiagram

The Sensei Model Insights Framework har stöd för 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.

ML-algoritmtyp
Mätvärden för utvärdering
Visualiseringar
Regression
- RMSE
- BILD
- MASE
- MAE
Förutsedd kontra faktisk värdesövertäckningskurva
Binär klassificering
- Konfusionsmatris
- Precision-återkallning
- Exakthet
- F-poäng (specifikt F1, F2)
- AUC
- ROC
ROC-kurva och förvirringsmatris
Klassificering i flera klasser
-Confusion matrix
- För varje klass:
- exakthet vid precisionsåterkallning
- F-poäng (specifikt F1, F2)
ROC-kurva och förvirringsmatris
Klustring (med jordsanning)
- NMI (normaliserat poängvärde för ömsesidig information), AMI (justerat poängvärde för
- RI (Rand-index), ARI (justerat Rand-index)
- homogenitetspoäng, fullständighetspoäng och V-mått
- FMI (Fowlkes-Mallows index)
- Renhet
- Jaccard-index
Kluster med kluster och centroider med relativa klusterstorlekar som återspeglar de datapunkter som ingår i klustret
Klustring (ej jordsanning)
- Tröghet
- Silhuettkoefficient
- CHI (index Calinski-Harabaz)
- DBI (Davies-Bouldin-index)
- Dunn-index
Kluster med kluster och centroider med relativa klusterstorlekar som återspeglar de datapunkter som ingår i klustret
Rekommendation
- Genomsnittlig genomsnittlig precision (MAP)
-Normaliserat rabatterat kumulativt resultat
- Medelvärde för lutning
-Metrisk K
TBD
Användningsexempel för TensorFlow
TensorFlow Model Analysis (TFMA)
Deepcompare neural network model comparison/visualization
Andra/felsökningsfunktioner
Anpassad metrisk logik (och motsvarande utvärderingskartor) som definieras av modellförfattaren. Fantastisk felhantering om mallen inte matchar
Tabell med nyckelvärdepar för mätvärden
recommendation-more-help
cc79fe26-64da-411e-a6b9-5b650f53e4e9