Tweet Share Share

Dernière mise à jour le 17 août 2020

Les performances de modélisation prédictive de l’apprentissage automatique sont aussi bonnes que vos données, et vos données sont aussi bonnes que la façon dont vous les préparez pour la modélisation.

L’approche la plus courante de la préparation des données consiste à étudier un ensemble de données et à examiner les attentes d’un algorithme d’apprentissage automatique, puis à choisir soigneusement les techniques de préparation des données les plus appropriées pour transformer les données brutes afin de répondre au mieux aux attentes de l’algorithme. Cette démarche est lente, coûteuse et nécessite une vaste expertise.

Une autre approche de la préparation des données consiste à quadriller une suite de techniques de préparation des données communes et couramment utiles aux données brutes. Il s’agit d’une philosophie alternative pour la préparation des données qui traite les transformations de données comme un autre hyperparamètre du pipeline de modélisation à rechercher et à régler.

Cette approche nécessite moins d’expertise que l’approche manuelle traditionnelle de la préparation des données, bien qu’elle soit coûteuse en termes de calcul. L’avantage est qu’elle peut aider à la découverte de solutions de préparation de données non intuitives qui atteignent une bonne ou une meilleure performance pour un problème de modélisation prédictive donné.

Dans ce tutoriel, vous découvrirez comment utiliser l’approche de recherche de grille pour la préparation de données avec des données tabulaires.

Après avoir terminé ce tutoriel, vous saurez :

  • La recherche de grille fournit une approche alternative à la préparation de données pour les données tabulaires, où les transformations sont essayées comme hyperparamètres du pipeline de modélisation.
  • Comment utiliser la méthode de recherche en grille pour la préparation des données afin d’améliorer les performances du modèle par rapport à une base de référence pour un ensemble de données de classification standard.
  • Comment rechercher en grille des séquences de méthodes de préparation des données pour améliorer encore les performances du modèle.

Démarrez votre projet avec mon nouveau livre Data Preparation for Machine Learning, comprenant des tutoriels étape par étape et les fichiers de code source Python pour tous les exemples.

Démarrons.

How to Grid Search Data Preparation Techniques
Photo de Wall Boat, certains droits réservés.

Vue d’ensemble du tutoriel

Ce tutoriel est divisé en trois parties ; ce sont :

  1. Technique de recherche en grille pour la préparation des données
  2. Jeu de données et performance de base
    1. Jeu de données de classification du vin
    2. Performance du modèle de base
  3. Approche de recherche en grille pour la préparation des données

Technique de recherche en grille pour la préparation des données

La préparation des données peut être un défi.

L’approche la plus souvent prescrite et suivie consiste à analyser le jeu de données, à examiner les exigences des algorithmes et à transformer les données brutes pour répondre au mieux aux attentes des algorithmes.

Cette approche peut être efficace, mais elle est également lente et peut nécessiter une expertise approfondie de l’analyse des données et des algorithmes d’apprentissage automatique.

Une approche alternative consiste à traiter la préparation des variables d’entrée comme un hyperparamètre du pipeline de modélisation et à l’ajuster en même temps que le choix de l’algorithme et des configurations de l’algorithme.

Il peut s’agir d’une transformation de données qui « ne devrait pas fonctionner » ou « ne devrait pas être appropriée pour l’algorithme », mais qui donne pourtant de bonnes ou d’excellentes performances. Alternativement, il peut s’agir de l’absence d’une transformation de données pour une variable d’entrée qui est jugée « absolument nécessaire » et qui résulte pourtant en une bonne ou grande performance.

Cela peut être réalisé en concevant une recherche en grille des techniques de préparation de données et/ou des séquences de techniques de préparation de données dans les pipelines. Cela peut impliquer d’évaluer chacune d’elles sur un seul algorithme d’apprentissage automatique choisi, ou sur une suite d’algorithmes d’apprentissage automatique.

L’avantage de cette approche est qu’elle aboutit toujours à des suggestions de pipelines de modélisation qui donnent de bons résultats relatifs. Plus important encore, elle peut dénicher les solutions non évidentes et non intuitives pour les praticiens sans avoir besoin d’une expertise approfondie.

Nous pouvons explorer cette approche de la préparation des données avec un exemple travaillé.

Avant de nous plonger dans un exemple travaillé, sélectionnons d’abord un ensemble de données standard et développons une ligne de base en matière de performance.

Vous voulez vous lancer dans la préparation des données ?

Prenez dès maintenant mon cours intensif gratuit de 7 jours par courriel (avec un exemple de code).

Cliquez pour vous inscrire et obtenir également une version PDF Ebook gratuite du cours.

Téléchargez votre mini-cours gratuit

Dataset et base de performance

Dans cette section, nous allons d’abord sélectionner un jeu de données d’apprentissage automatique standard et établir une base de performance sur ce jeu de données. Cela fournira le contexte pour explorer la méthode de recherche de grille de préparation des données dans la section suivante.

Jeu de données de classification du vin

Nous utiliserons le jeu de données de classification du vin.

Ce jeu de données a 13 variables d’entrée qui décrivent la composition chimique des échantillons de vin et exige que le vin soit classé dans l’un des trois types.

Vous pouvez en savoir plus sur le jeu de données ici :

  • Jeu de données sur le vin (wine.csv)
  • Description du jeu de données sur le vin (wine.names)

Il n’est pas nécessaire de télécharger le jeu de données car nous le téléchargerons automatiquement dans le cadre de nos exemples travaillés.

Ouvrez le jeu de données et examinez les données brutes. Les premières lignes de données sont répertoriées ci-dessous.

Nous pouvons voir qu’il s’agit d’un problème de modélisation prédictive de classification multi-classes avec des variables d’entrée numériques, dont chacune a des échelles différentes.

L’exemple ci-dessous charge le jeu de données et le divise en colonnes d’entrée et de sortie, puis résume les tableaux de données.

En exécutant l’exemple, nous pouvons voir que le jeu de données a été chargé correctement et qu’il y a 179 lignes de données avec 13 variables d’entrée et une seule variable cible.

1
(178, 13) (178,)

Puis, évaluons un modèle sur ce jeu de données et établissons une base de référence en matière de performance.

Performance de référence du modèle

Nous pouvons établir une référence de performance sur la tâche de classification du vin en évaluant un modèle sur les données d’entrée brutes.

Dans ce cas, nous allons évaluer un modèle de régression logistique.

D’abord, nous pouvons définir une fonction pour charger l’ensemble de données et effectuer une préparation minimale des données pour s’assurer que les entrées sont numériques et que la cible est codée en étiquette.

Nous évaluerons le modèle en utilisant le gold standard de la validation croisée k-fold stratifiée répétée avec 10 plis et trois répétitions.

Nous pouvons ensuite appeler la fonction pour charger le jeu de données, définir notre modèle, puis l’évaluer, en rapportant la précision moyenne et l’écart-type.

En reliant tout cela, l’exemple complet d’évaluation d’un modèle de régression logistique sur le jeu de données de classification du vin brut est répertorié ci-dessous.

L’exécution de l’exemple évalue les performances du modèle et rapporte la précision de classification de l’écart moyen et de l’écart type.

Note : Vos résultats peuvent varier étant donné la nature stochastique de l’algorithme ou de la procédure d’évaluation, ou les différences de précision numérique. Envisagez d’exécuter l’exemple plusieurs fois et comparez le résultat moyen.

Dans ce cas, nous pouvons voir que le modèle de régression logistique ajusté sur les données d’entrée brutes a atteint la précision de classification moyenne d’environ 95,3 pour cent, fournissant une base de performance.

1
Exactitude : 0.953 (0.048)

Puis, explorons si nous pouvons améliorer les performances en utilisant l’approche de préparation des données basée sur la recherche en grille.

Approche de préparation des données basée sur la recherche en grille

Dans cette section, nous pouvons explorer si nous pouvons améliorer les performances en utilisant l’approche de préparation des données basée sur la recherche en grille.

La première étape consiste à définir une série de pipelines de modélisation à évaluer, où chaque pipeline définit une (ou plusieurs) technique de préparation des données et se termine par un modèle qui prend les données transformées en entrée.

Nous définirons une fonction pour créer ces pipelines comme une liste de tuples, où chaque tuple définit le nom court du pipeline et le pipeline lui-même. Nous évaluerons une gamme de différentes méthodes de mise à l’échelle des données (par exemple MinMaxScaler et StandardScaler), des transformées de distribution (QuantileTransformer et KBinsDiscretizer), ainsi que des transformées de réduction de la dimensionnalité (PCA et SVD).

Nous pouvons ensuite appeler cette fonction pour obtenir la liste des transformées, puis énumérer chacune d’entre elles, en l’évaluant et en rapportant les performances en cours de route.

À la fin de l’exécution, nous pouvons créer un graphique de type boîte et moustache pour chaque ensemble de scores et comparer visuellement les distributions des résultats.

1
2
3
4

# tracer le résultat
pyplot.boxplot(results, labels=names, showmeans=True)
pyplot.show()

En reliant tout cela, l’exemple complet des techniques de préparation des données de recherche sur grille sur le jeu de données de classification des vins est énuméré ci-dessous.

L’exécution de l’exemple évalue les performances de chaque pipeline et rapporte la précision de classification moyenne et l’écart-type.

Note : Vos résultats peuvent varier étant donné la nature stochastique de l’algorithme ou de la procédure d’évaluation, ou les différences de précision numérique. Envisagez d’exécuter l’exemple plusieurs fois et comparez le résultat moyen.

Dans ce cas, nous pouvons voir que la normalisation des variables d’entrée et l’utilisation d’une transformation quantile permettent toutes deux d’obtenir le meilleur résultat avec une précision de classification d’environ 98.7 pour cent, une amélioration par rapport à la ligne de base sans préparation des données qui a obtenu une précision de classification de 95,3 pour cent.

Vous pouvez ajouter vos propres pipelines de modélisation à la fonction get_pipelines() et comparer leur résultat.

Pouvez-vous obtenir de meilleurs résultats ?
Laissez-moi savoir dans les commentaires ci-dessous.

1
2
3
4
5
6

>norm : 0.976 (0,031)
>std : 0,987 (0,023)
>quan : 0,987 (0,023)
>kbins : 0,968 (0,045)
>pca : 0,963 (0,039)
>svd : 0,953 (0,048)

Une figure est créée montrant des diagrammes en boîte et moustaches qui résument la distribution des scores de précision de classification pour chaque technique de préparation des données. Nous pouvons voir que la distribution des scores pour la normalisation et les transformées quantiles sont compactes et très similaires et ont une valeur aberrante. Nous pouvons voir que la dispersion des scores pour les autres transformées est plus grande et oblique vers le bas.

Les résultats peuvent suggérer que la normalisation de l’ensemble de données est probablement une étape importante dans la préparation des données et les transformées connexes, telles que la transformée quantile, et peut-être même la transformée de puissance peut offrir des avantages si elle est combinée avec la normalisation en rendant une ou plusieurs variables d’entrée plus gaussiennes.

Plot de boîte et de moustache de la précision de classification pour différentes transformations de données sur le jeu de données de classification du vin

Nous pouvons également explorer des séquences de transformations pour voir si elles peuvent offrir une élévation de la performance.

Par exemple, nous pourrions vouloir appliquer la sélection de caractéristiques RFE après la transformation de normalisation pour voir si les mêmes ou meilleurs résultats peuvent être utilisés avec moins de variables d’entrée (e.par exemple, moins de complexité).

Nous pourrions également vouloir voir si une transformée de puissance précédée d’une transformée de mise à l’échelle des données peut obtenir de bonnes performances sur le jeu de données, car nous pensons que cela pourrait être le cas étant donné le succès de la transformée quantile.

La fonction get_pipelines() mise à jour avec les séquences de transformées est fournie ci-dessous.

En reliant tout cela, l’exemple complet est répertorié ci-dessous.

L’exécution de l’exemple évalue les performances de chaque pipeline et rapporte la précision de classification moyenne et l’écart type.

Note : Vos résultats peuvent varier étant donné la nature stochastique de l’algorithme ou de la procédure d’évaluation, ou les différences de précision numérique. Envisagez d’exécuter l’exemple plusieurs fois et comparez le résultat moyen.

Dans ce cas, nous pouvons voir que la normalisation avec sélection de caractéristiques offre une élévation supplémentaire de la précision de 98,7 % à 98,9 %, bien que la mise à l’échelle des données et la transformation de puissance n’offrent aucun avantage supplémentaire par rapport à la transformation quantile.

1
2

>std : 0.989 (0,022)
>puissance : 0,987 (0.023)

Une figure est créée montrant des diagrammes de boîtes et de moustaches qui résument la distribution des scores de précision de classification pour chaque technique de préparation des données.

Nous pouvons voir que la distribution des résultats pour les deux pipelines de transformations est compacte avec très peu de dispersion autre que la valeur aberrante.

Traceau de boîte et de moustache de la précision de classification pour différentes séquences de transformations de données sur le jeu de données de classification du vin

Lectures complémentaires

Cette section fournit plus de ressources sur le sujet si vous cherchez à approfondir.

Livres

  • Ingénierie des caractéristiques et sélection, 2019.
  • Ingénierie des caractéristiques pour l’apprentissage automatique, 2018.

APIs

  • sklearn.pipeline.Pipeline API.

Summary

Dans ce tutoriel, vous avez découvert comment utiliser une approche de recherche en grille pour la préparation des données avec des données tabulaires.

Spécifiquement, vous avez appris :

  • La recherche en grille fournit une approche alternative à la préparation des données pour les données tabulaires, où les transformations sont essayées comme hyperparamètres du pipeline de modélisation.
  • Comment utiliser la méthode de recherche en grille pour la préparation des données afin d’améliorer les performances du modèle par rapport à une base de référence pour un ensemble de données de classification standard.
  • Comment rechercher en grille des séquences de méthodes de préparation des données pour améliorer davantage les performances du modèle.

Avez-vous des questions ?
Posez vos questions dans les commentaires ci-dessous et je ferai de mon mieux pour répondre.

Prenez en main la préparation moderne des données !

Préparez vos données d’apprentissage automatique en quelques minutes

….avec seulement quelques lignes de code python

Découvrez comment dans mon nouvel Ebook :
Préparation des données pour l’apprentissage automatique

Il fournit des tutoriels d’auto-apprentissage avec un code de travail complet sur :
Sélection des caractéristiques, RFE, nettoyage des données, transformations des données, mise à l’échelle, réduction de la dimensionnalité, et bien plus encore…

Amenez les techniques modernes de préparation des données à
vos projets d’apprentissage automatique

Voyez ce qu’il y a dedans

Tweet Share Share

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.