Show Menu
SUJETS×

Optimisation d'un modèle à l'aide de la structure Model Insights

The Model Insights Framework provides the data scientist with tools in Data Science Workspace to make quick and informed choices for optimal machine learning models based on experiments. Le framework améliorera la vitesse et l’efficacité du processus d’apprentissage automatique et la facilité d’utilisation pour les analystes de données. Pour ce faire, un modèle par défaut est fourni pour chaque type d’algorithme d’apprentissage automatique afin de faciliter le réglage des modèles. Le résultat final permet aux analystes de données et aux analystes de données citoyens de prendre de meilleures décisions d’optimisation des modèles pour leurs clients finaux.

Que sont les mesures ?

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

Configuration du code de recette

Actuellement, Model Insights Framework prend en charge les exécutions suivantes :
Vous trouverez un exemple de code pour les recettes dans le référentiel experience-platform-dsw-reference sous recipes . Des fichiers spécifiques de ce référentiel seront référencés dans ce tutoriel.

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, 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 mis en œuvre :
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 du dossier recipe . Un exemple de code permettant d’activer le DefaultBinaryClassificationEvaluator 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 à application.properties .
evaluation.metrics.com=com.adobe.platform.ml.impl.Constants.DEFAULT

Si la mesure n’est pas définie, les mesures par défaut seront actives.
Une mesure spécifique peut être activée en modifiant la valeur de evaluation.metrics.com . Dans l’exemple suivant, la mesure F-Score 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 colonne evaluation.metric pour activer une mesure spécifique.
evaluator.class
Mesures par défaut
evaluation.metric
DefaultBinaryClassificationEvaluator
-Précision
-Rappel
-Matrice de confusion
-F-Score
-Exactitude
-Caractéristiques de fonctionnement du récepteur
-Aire sous les caractéristiques de fonctionnement du récepteur
- PRECISION
- RECALL
- CONFUSION_MATRIX
- FSCORE
- ACCURACY
- ROC
- AUROC
DefaultMultiClassificationEvaluator
-Précision
-Rappel
-Matrice de confusion
-F-Score
-Exactitude
-Caractéristiques de fonctionnement du récepteur
-Aire sous les caractéristiques de fonctionnement du récepteur
- PRECISION
- RECALL
- CONFUSION_MATRIX
- FSCORE
- ACCURACY
- ROC
- AUROC
RecommendationsEvaluator
-Précision moyenne (MAP)
-Gain cumulatif actualisé normalisé
-Rang réciproque moyen
-Mesure 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 fichier Evaluator.scala . Dans l’exemple de fichier Evaluator.scala , nous définissons des fonctions split() et evaluate() personnalisées. Notre fonction split() divise nos données de manière aléatoire avec un ratio de 8:2 et notre fonction evaluate() définit et renvoie trois mesures : MAPE, MAE et RMSE.
Pour la classe MLMetric , n’utilisez pas "measures" pour valueType lors de la création d’un nouveau MLMetric , sinon la mesure ne sera pas renseignée dans le tableau des mesures d’évaluation personnalisées.
À faire : metrics.add(new MLMetric("MAPE", mape, "double")) À ne pas faire : 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 dossier resources du projet. Ici, la evaluation.class est définie sur la classe Evaluator définie dans Evaluator.scala
evaluation.class=com.adobe.platform.ml.Evaluator

In the Data Science Workspace, the user would be able to see the insights in the "Evaluation Metrics" tab in the experiment page.

Python/Tensorflow

As of now, there are no default evaluation metrics for Python or Tensorflow. Thus, to get the evaluation metrics for Python or Tensorflow, you will need to create a custom evaluation metric. Pour ce faire, mettez en œuvre la classe Evaluator .

Mesures d’évaluation personnalisées pour Python

Pour les mesures d’évaluation personnalisées, deux méthodes principales doivent être mises en œuvre pour l’évaluateur : split() et evaluate() .
For Python, these methods would be defined in evaluator.py for the Evaluator class. Suivez le lien evaluator.py pour obtenir un exemple de l’ Evaluator .
Creating evaluation metrics in Python requires the user to implement the evaluate() and split() methods.
La méthode evaluate() renvoie l’objet de mesure qui contient un tableau d’objets de mesure avec les propriétés name , value et valueType .
L’objectif de la méthode split() est de saisir des données et de produire un jeu de données de formation et de test. Dans notre exemple, la méthode split() saisit les données à l’aide du SDK DataSetReader , puis nettoie les données en supprimant les colonnes non liées. Ensuite, des fonctionnalités supplémentaires sont créées à partir des fonctionnalités brutes existantes dans les données.
La méthode split() doit renvoyer un cadre de données de formation et de test qui est ensuite utilisé par les méthodes pipeline() pour former et tester le modèle ML.

Mesures d’évaluation personnalisées pour Tensorflow

For Tensorflow, similar to Python, the methods evaluate() and split() in the Evaluator class will need to be implemented. Les mesures doivent être renvoyées pour evaluate() , tandis que split() renvoie les jeux de données de formation et de test.
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

Pour le moment, aucune mesure d’évaluation par défaut n’existe pour R. Par conséquent, vous devrez définir la classe applicationEvaluator dans le cadre de la recette afin d’obtenir les mesures d’évaluation pour R.

Mesures d’évaluation personnalisées pour R

L’objectif principal de applicationEvaluator consiste à renvoyer un objet JSON contenant des paires clé-valeur de mesures.
applicationEvaluator.R peut servir d’exemple. Dans cet exemple, applicationEvaluator est divisé en trois sections courantes :
  • Chargement des données
  • Préparation des données/conception des fonctionnalités
  • Récupération du modèle enregistré et évaluation
Les données sont d’abord chargées dans un jeu de données à partir d’une source, comme défini dans retail.config.json . Ensuite, 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 effectuer une prévision à l’aide du jeu de données et des mesures sont calculées à partir des valeurs prédites et des valeurs réelles. Dans ce cas, MAPE, MAE et RMSE sont définis et renvoyés dans l’objet metrics .

Utilisation de mesures préconfigurées et de graphiques de visualisation

The Sensei Model Insights Framework will support one default template for each type of machine learning algorithm. Le tableau ci-dessous présente les classes d’algorithme d’apprentissage automatique de haut niveau courantes et les mesures d’évaluation et visualisations correspondantes.
Type d’algorithme de ML
Mesures d’évaluation
Visualisations
Régression
- RMSE
- MAPE
- MASE
- MAE
Courbe de recouvrement des valeurs prédites et réelles
Classification binaire
- Matrice de confusion
- Précision-rappel
- Exactitude
- F-score (en particulier F1 et F2)
- AUC
- ROC
Courbe ROC et matrice de confusion
Classification multi-classe
-Matrice de confusion
- Pour chaque classe :
- précision-rappel exactitude
- F-score (en particulier F1 et F2)
Courbe ROC et matrice de confusion
Clustering (avec réalité de terrain)
- NMI (note d’information mutuelle normalisée), AMI (note d’information mutuelle ajustée)
- RI (indice de Rand), ARI (indice de Rand ajusté)
- note d’homogénéité, note d’exhaustivité et V-measure
- FMI (indice Fowlkes-Mallows)
- Pureté
- Indice de Jaccard
Graphique de clusters illustrant les clusters et les centres de gravité dont les tailles de cluster relatives reflètent les points de données appartenant au cluster
Clustering (sans réalité de terrain)
- Inertie
- Coefficient de silhouette
- CHI (indice de Calinski-Harabaz)
- DBI (indice de Davies-Bouldin)
- Indice de Dunn
Graphique de clusters illustrant les clusters et les centres de gravité dont les tailles de cluster relatives reflètent les points de données appartenant au cluster
Recommandation
-Précision moyenne (MAP)
-Gain cumulatif actualisé normalisé
-Rang réciproque moyen
-Mesure K
À déterminer
Cas d’utilisation de TensorFlow
TensorFlow Model Analysis (TFMA)
Comparaison/visualisation des modèles de réseaux neuronaux de Deepcompare
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 élégante en cas de non-correspondance de modèle
Tableau avec des paires clé-valeur pour les mesures d’évaluation