Show Menu
SUJETS×

Optimiser un modèle

Ce tutoriel va passer en revue :
  • Configuration du code de recette
  • Définition de mesures personnalisées
  • Utilisation de mesures d’évaluation prédéfinies et de graphiques de visualisation
D’ici la fin de ce didacticiel, vous devriez être en mesure de configurer le code de recette, de définir des mesures personnalisées, d’utiliser des mesures d’évaluation prédéfinies et des graphiques de visualisation par défaut.

Que sont les mesures ?

Après la mise en oeuvre et la formation d'un modèle, l'étape suivante d'un informaticien consiste à déterminer les performances du modèle. Diverses mesures sont utilisées pour déterminer l’efficacité d’un modèle par rapport à d’autres. Voici quelques exemples de mesures utilisées :
  • Précision de la classification
  • Zone sous la courbe
  • Matrice de confusion
  • Rapport de classification

Qu'est-ce que le cadre d'analyse des modèles ?

Le cadre d'analyse de modèle fournit aux chercheurs en données des outils dans l'espace de travail des sciences de données pour faire des choix rapides et éclairés pour des modèles d'apprentissage automatique optimaux basés sur des expériences. Le cadre améliorera la vitesse et l'efficacité du processus d'apprentissage automatique et améliorera la facilité d'utilisation pour les chercheurs en données. Pour ce faire, vous fournissez un modèle par défaut pour chaque type d’algorithme d’apprentissage automatique afin de faciliter le réglage des modèles. Le résultat final permet aux spécialistes des données et aux scientifiques des données citoyens de prendre de meilleures décisions d'optimisation des modèles pour leurs clients finaux.

Configuration du code de recette

Actuellement, Model Insights Framework prend en charge les runtimes suivants :
Vous trouverez un exemple de code pour les recettes dans le référentiel de référence experience-platform-dsw-reference experience-platform-dsw sous recipes . Des fichiers spécifiques de ce référentiel seront référencés tout au long de ce didacticiel.

Scala

Il existe deux façons d'intégrer des mesures aux recettes. L’une consiste à utiliser les mesures d’évaluation par défaut fournies par le SDK et l’autre consiste à créer des mesures d’évaluation personnalisées.

Mesures d’évaluation par défaut pour Scala

Les évaluations par défaut sont calculées dans le cadre des algorithmes de classification. Voici quelques valeurs par défaut pour les évaluateurs actuellement implémentés :
Classe d’évaluateur
evaluation.class
DefaultBinaryClassificationEvaluator
com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator
DefaultMultiClassificationEvaluator
com.adobe.platform.ml.impl.DefaultMultiClassificationEvaluator
RecommendationsEvaluator
com.adobe.platform.ml.impl.RecommendationsEvaluator
L’évaluateur peut être défini dans la recette du fichier application.properties situé dans le recipe dossier. L'exemple de code permettant d'activer le DefaultBinaryClassificationEvaluator logiciel est illustré ci-dessous :
evaluation.class=com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator
evaluation.labelColumn=label
evaluation.predictionColumn=prediction
training.evaluate=true

Une fois qu’une classe d’évaluateur est activée, un certain nombre de mesures sont calculées par défaut pendant la formation. Les mesures par défaut peuvent être déclarées explicitement en ajoutant la ligne suivante à votre application.properties rapport.
evaluation.metrics.com=com.adobe.platform.ml.impl.Constants.DEFAULT

Si la mesure n'est pas définie, les mesures par défaut sont actives.
Une mesure spécifique peut être activée en modifiant la valeur de evaluation.metrics.com . Dans l’exemple suivant, la mesure Note F est activée.
evaluation.metrics=com.adobe.platform.ml.impl.Constants.FSCORE

Le tableau suivant indique les mesures par défaut pour chaque classe. Un utilisateur peut également utiliser les valeurs de la evaluation.metric colonne pour activer une mesure spécifique.
evaluator.class
Mesures par défaut
evaluation.metric
DefaultBinaryClassificationEvaluator
-Matrice de précision
-
de rappel-confusion
F-Score
-Précision des caractéristiques d'exploitation
du récepteur
-Zone sous les caractéristiques d'exploitation du récepteur
- PRECISION
- RECALL
- CONFUSION_MATRIX
- FSCORE
- ACCURACY
- ROC
- AUROC
DefaultMultiClassificationEvaluator
-Matrice de précision
-
de rappel-confusion
F-Score
-Précision des caractéristiques d'exploitation
du récepteur
-Zone sous les caractéristiques d'exploitation du récepteur
- PRECISION
- RECALL
- CONFUSION_MATRIX
- FSCORE
- ACCURACY
- ROC
- AUROC
RecommendationsEvaluator
-Précision moyenne
normalisée (MAP) Gain cumulé cumulé
moyen Ordre de classement
métrique réciproque K
- MEAN_AVERAGE_PRECISION
- NDCG
- MRR
- METRIC_K

Mesures d’évaluation personnalisées pour Scala

L’évaluateur personnalisé peut être fourni en étendant l’interface de MLEvaluator.scala dans votre Evaluator.scala fichier. Dans l’exemple de fichier Evaluator.scala , nous définissons des fonctions personnalisées split() et evaluate() des fonctions. Notre split() fonction divise nos données de manière aléatoire avec un rapport de 8:2 et notre evaluate() fonction définit et renvoie 3 mesures : MAPE, MAE et RMSE.
Pour la MLMetric classe, n’utilisez pas "measures" pour valueType lors de la création d’une autre MLMetric mesure que la mesure ne sera pas renseignée dans le tableau des mesures d’évaluation personnalisées.
Procédez comme suit : metrics.add(new MLMetric("MAPE", mape, "double")) Pas ceci : metrics.add(new MLMetric("MAPE", mape, "measures"))
Une fois définie dans la recette, l'étape suivante consiste à l'activer dans les recettes. Cette opération est effectuée dans le fichier application.properties du resources dossier du projet. Ici, la evaluation.class classe est définie sur la Evaluator classe définie dans Evaluator.scala
evaluation.class=com.adobe.platform.ml.Evaluator

Dans l’espace de travail Data Science, l’utilisateur peut consulter les informations sous l’onglet "Mesures d’évaluation" de la page de l’expérience.

Python/Tensorflow

Pour l'instant, il n'existe aucune mesure d'évaluation par défaut pour Python ou Tensorflow. Par conséquent, pour obtenir les mesures d’évaluation pour Python ou Tensorflow, vous devez créer une mesure d’évaluation personnalisée. Cela peut être fait en implémentant la Evaluator classe.

Mesures d'évaluation personnalisées pour Python

Pour les mesures d’évaluation personnalisées, deux méthodes principales doivent être implémentées pour l’évaluateur : split() et evaluate() .
Pour Python, ces méthodes seraient définies dans évaluator.py pour la Evaluator classe. Suivez le lien évaluator.py pour obtenir un exemple du Evaluator .
La création de mesures d'évaluation en Python nécessite que l'utilisateur mette en oeuvre les evaluate() méthodes et les split() méthodes.
La evaluate() méthode renvoie l’objet metric qui contient un tableau d’objets metric avec les propriétés de name , value et valueType .
La split() méthode a pour but de saisir des données et de produire une formation et un ensemble de données de test. Dans notre exemple, la split() méthode saisit les données à l’aide du DataSetReader SDK, puis nettoie les données en supprimant les colonnes non liées. De là, d’autres fonctions sont créées à partir des fonctions brutes existantes dans les données.
La split() méthode doit renvoyer une base de données de formation et de test qui est ensuite utilisée par les pipeline() méthodes pour former et tester le modèle ML.

Mesures d’évaluation personnalisées pour Tensorflow

Pour Tensorflow, similaire à Python, les méthodes evaluate() et split() dans la Evaluator classe devront être implémentées. Par exemple, evaluate() les mesures doivent être renvoyées pendant split() le retour des ensembles de données de train et d'essai.
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

À ce jour, il n'existe aucune mesure d'évaluation par défaut pour R. Par conséquent, pour obtenir les mesures d'évaluation pour R, vous devez définir la applicationEvaluator classe dans le cadre de la recette.

Mesures d’évaluation personnalisées pour R

L’objectif principal de cette méthode applicationEvaluator est de renvoyer un objet JSON contenant des paires clé-valeur de mesures.
Ce fichier applicationEvaluator.R peut être utilisé comme exemple. Dans cet exemple, la section applicationEvaluator est divisée en trois sections courantes :
  • Charger les données
  • Préparation des données/ingénierie des fonctionnalités
  • Récupérer le modèle enregistré et évaluer
Les données sont tout d’abord chargées dans un jeu de données à partir d’une source, comme défini dans commerce.config.json . À partir de là, les données sont nettoyées et conçues pour s'adapter au modèle d'apprentissage automatique. Enfin, le modèle est utilisé pour faire une prédiction en utilisant notre jeu de données et à partir des valeurs prédites et des valeurs réelles, les mesures sont calculées. Dans ce cas, MAPE, MAE et RMSE sont définis et renvoyés dans l’ metrics objet.

Utilisation de mesures prédéfinies et de graphiques de visualisation

Le cadre d’analyse du modèle Sensei prendra en charge un modèle par défaut pour chaque type d’algorithme d’apprentissage automatique. Le tableau ci-dessous présente les classes d’algorithmes d’apprentissage automatique de haut niveau courantes ainsi que les mesures d’évaluation et visualisations correspondantes.
Type d'algorithme XML
Mesures d’évaluation
Visualisations
Régression
- RMSE
- MAPE
- MASE
- MAE
Courbe d’incrustation des valeurs prédites et réelles
Classification binaire
- Matrice
de confusion - Rappel
de précision - Précision
- Note F (spécifiquement F1, F2)
- AUC
- ROC
Courbe ROC et matrice de confusion
Classification à plusieurs classes
-Matrice de confusion
- Pour chaque classe :
- précision du rappel de précision
- score F (spécifiquement F1, F2)
Courbe ROC et matrice de confusion
Mise en grappe (avec vérité au sol)
- NMI (note d'information mutuelle normalisée), AMI (note d'information mutuelle ajustée)
- RI (indice Rand), ARI (indice Rand ajusté)
- score d'homogénéité, score d'exhaustivité et mesure
V- FMI (indice Fowlkes-Mallow)
- Indice de pureté
- Jaccard
Graphique en grappes montrant les grappes et les centroïdes avec des tailles de grappe relatives reflétant les points de données appartenant à une grappe
Mise en grappe (sans vérité au sol)
- Inertia
- Coefficient
de silhouette- CHI (indice Calinski-Harabaz)
- DBI (indice Davies-Bouldin)
- Indice Dunn
Graphique en grappes montrant les grappes et les centroïdes avec des tailles de grappe relatives reflétant les points de données appartenant à une grappe
Recommandation
-Précision moyenne
normalisée (MAP) Gain cumulé cumulé
moyen Ordre de classement
métrique réciproque K
À déterminer
Cas d’utilisation de TensorFlow
Analyse de modèle TensorFlow (TFMA)
Comparaison approfondie des modèles de réseau neuronal et de la visualisation
Autre mécanisme de capture d'erreur
Logique de mesure personnalisée (et graphiques d’évaluation correspondants) définie par l’auteur du modèle. Gestion des erreurs gracieuses en cas de non-correspondance de modèle
Tableau avec des paires clé-valeur pour les mesures d’évaluation