Recherche de site Web

Une introduction à la sélection des fonctionnalités


Quelles fonctionnalités devez-vous utiliser pour créer un modèle prédictif ?

Il s’agit d’une question difficile qui peut nécessiter une connaissance approfondie du domaine problématique.

Il est possible de sélectionner automatiquement les fonctionnalités de vos données qui sont les plus utiles ou les plus pertinentes pour le problème sur lequel vous travaillez. Il s'agit d'un processus appelé sélection de fonctionnalités.

Dans cet article, vous découvrirez la sélection des fonctionnalités, les types de méthodes que vous pouvez utiliser et une liste de contrôle pratique que vous pourrez suivre la prochaine fois que vous aurez besoin de sélectionner des fonctionnalités pour un modèle d'apprentissage automatique.

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

Commençons.

Qu'est-ce que la sélection des fonctionnalités

La sélection de fonctionnalités est également appelée sélection de variables ou sélection d'attributs.

C'est la sélection automatique des attributs dans vos données (tels que les colonnes des données tabulaires) qui sont les plus pertinentes pour le problème de modélisation prédictive sur lequel vous travaillez.

sélection de fonctionnalités… est le processus de sélection d'un sous-ensemble de fonctionnalités pertinentes à utiliser dans la construction de modèles

— Sélection des fonctionnalités, entrée Wikipédia.

La sélection de fonctionnalités est différente de la réduction de dimensionnalité. Les deux méthodes cherchent à réduire le nombre d'attributs dans l'ensemble de données, mais une méthode de réduction de dimensionnalité le fait en créant de nouvelles combinaisons d'attributs, tandis que les méthodes de sélection de caractéristiques incluent et excluent les attributs présents dans les données sans les modifier.

Des exemples de méthodes de réduction de dimensionnalité incluent l'analyse en composantes principales, la décomposition en valeurs singulières et la cartographie de Sammon.

La sélection de fonctionnalités est elle-même utile, mais elle agit principalement comme un filtre, supprimant les fonctionnalités qui ne sont pas utiles en plus de vos fonctionnalités existantes.

— Robert Neuhaus, en réponse à la question « Quelle est, selon vous, la valeur de la sélection de fonctionnalités dans l'apprentissage automatique ? »

Le problème que la sélection des fonctionnalités résout

Les méthodes de sélection de fonctionnalités vous aident dans votre mission de création d'un modèle prédictif précis. Ils vous aident en choisissant des fonctionnalités qui vous donneront une précision aussi bonne ou meilleure tout en nécessitant moins de données.

Les méthodes de sélection de fonctionnalités peuvent être utilisées pour identifier et supprimer les attributs inutiles, non pertinents et redondants des données qui ne contribuent pas à l'exactitude d'un modèle prédictif ou qui peuvent en fait diminuer l'exactitude du modèle.

Moins d’attributs sont souhaitables car cela réduit la complexité du modèle, et un modèle plus simple est plus simple à comprendre et à expliquer.

L'objectif de la sélection de variables est triple : améliorer les performances de prédiction des prédicteurs, fournir des prédicteurs plus rapides et plus rentables et fournir une meilleure compréhension du processus sous-jacent qui a généré les données.

— Guyon et Elisseeff dans « Une introduction à la sélection de variables et de fonctionnalités » (PDF)

Algorithmes de sélection de fonctionnalités

Il existe trois classes générales d'algorithmes de sélection de fonctionnalités : les méthodes de filtrage, les méthodes wrapper et les méthodes intégrées.

Méthodes de filtrage

Les méthodes de sélection de fonctionnalités de filtrage appliquent une mesure statistique pour attribuer une note à chaque fonctionnalité. Les entités sont classées par score et sélectionnées pour être conservées ou supprimées de l'ensemble de données. Les méthodes sont souvent univariées et considèrent la caractéristique indépendamment ou par rapport à la variable dépendante.

Quelques exemples de méthodes de filtrage incluent le test du Chi carré, le gain d'information et les scores des coefficients de corrélation.

Méthodes d'emballage

Les méthodes wrapper considèrent la sélection d’un ensemble de fonctionnalités comme un problème de recherche, dans lequel différentes combinaisons sont préparées, évaluées et comparées à d’autres combinaisons. Un modèle prédictif est utilisé pour évaluer une combinaison de fonctionnalités et attribuer un score basé sur la précision du modèle.

Le processus de recherche peut être méthodique, comme une recherche du meilleur premier, il peut être stochastique, comme un algorithme d'escalade aléatoire, ou il peut utiliser des heuristiques, comme des passes avant et arrière pour ajouter et supprimer des fonctionnalités.

Un exemple si une méthode wrapper est l’algorithme d’élimination de fonctionnalités récursif.

Méthodes intégrées

Les méthodes intégrées apprennent quelles fonctionnalités contribuent le mieux à la précision du modèle lors de sa création. Le type le plus courant de méthodes de sélection de fonctionnalités intégrées sont les méthodes de régularisation.

Les méthodes de régularisation sont également appelées méthodes de pénalisation qui introduisent des contraintes supplémentaires dans l'optimisation d'un algorithme prédictif (tel qu'un algorithme de régression) qui biaisent le modèle vers une complexité moindre (moins de coefficients).

Des exemples d'algorithmes de régularisation sont le LASSO, Elastic Net et Ridge Regression.

Tutoriels et recettes de sélection de fonctionnalités

Nous avons déjà vu un certain nombre d’exemples de sélection de fonctionnalités sur ce blog.

  • Weka : pour un didacticiel montrant comment effectuer la sélection de fonctionnalités à l'aide de Weka, voir « Sélection de fonctionnalités pour améliorer la précision et réduire le temps d'entraînement ».
  • Scikit-Learn : pour une recette d'élimination récursive de fonctionnalités en Python à l'aide de scikit-learn, voir « Sélection de fonctionnalités en Python avec Scikit-Learn ».
  • R : pour une recette d'élimination de fonctionnalités récursive à l'aide du package Caret R, voir « Sélection de fonctionnalités avec le package Caret R »

Un piège lors de la sélection des fonctionnalités

La sélection de fonctionnalités est un autre élément clé du processus d’apprentissage automatique appliqué, comme la sélection de modèles. Vous ne pouvez pas tirer et oublier.

Il est important de considérer la sélection des fonctionnalités comme faisant partie du processus de sélection du modèle. Si vous ne le faites pas, vous risquez par inadvertance d'introduire des biais dans vos modèles, ce qui peut entraîner un surajustement.

… devrait effectuer la sélection de fonctionnalités sur un ensemble de données différent de celui sur lequel vous entraînez [votre modèle prédictif]… l'effet de ne pas le faire est que vous surajusterez vos données d'entraînement.

— Ben Allison en réponse à « L'utilisation des mêmes données pour la sélection des fonctionnalités et la validation croisée est-elle biaisée ou non ?

Par exemple, vous devez inclure la sélection de fonctionnalités dans la boucle interne lorsque vous utilisez des méthodes d'estimation de la précision telles que la validation croisée. Cela signifie que la sélection des fonctionnalités est effectuée sur le pli préparé juste avant l'entraînement du modèle. Une erreur serait d'effectuer d'abord la sélection des fonctionnalités pour préparer vos données, puis d'effectuer la sélection du modèle et la formation sur les fonctionnalités sélectionnées.

Si nous adoptons la procédure appropriée et effectuons une sélection de fonctionnalités dans chaque pli, il n'y a plus d'informations sur les cas retenus dans le choix des fonctionnalités utilisées dans ce pli.

— Dikran Marsupial en réponse à « Sélection des fonctionnalités du modèle final lors de la validation croisée dans l'apprentissage automatique »

La raison en est que les décisions prises pour sélectionner les fonctionnalités ont été prises sur l’ensemble de la formation, qui à son tour sont transmises au modèle. Cela peut amener un mode d'un modèle amélioré par les fonctionnalités sélectionnées par rapport aux autres modèles testés à obtenir des résultats apparemment meilleurs, alors qu'en fait il s'agit d'un résultat biaisé.

Si vous effectuez une sélection de fonctionnalités sur toutes les données, puis une validation croisée, les données de test dans chaque pli de la procédure de validation croisée ont également été utilisées pour choisir les fonctionnalités, ce qui biaise l'analyse des performances.

— Dikran Marsupial en réponse à « Sélection des fonctionnalités et validation croisée »

Liste de contrôle de sélection des fonctionnalités

Isabelle Guyon et Andre Elisseeff, les auteurs de « An Introduction to Variable and Feature Selection » (PDF), fournissent une excellente liste de contrôle que vous pourrez utiliser la prochaine fois que vous aurez besoin de sélectionner des caractéristiques de données pour votre problème de modélisation prédictive.

J'ai reproduit ici les parties saillantes de la liste de contrôle :

  1. Avez-vous des connaissances dans le domaine ? Si oui, créez un meilleur ensemble de fonctionnalités « » ad hoc
  2. Vos caractéristiques sont-elles proportionnées ? Si non, envisagez de les normaliser.
  3. Pensez-vous à une interdépendance des fonctionnalités ? Si oui, développez votre ensemble de fonctionnalités en construisant des fonctionnalités conjonctives ou des produits de fonctionnalités, autant que vos ressources informatiques vous le permettent.
  4. Devez-vous élaguer les variables d'entrée (par exemple, pour des raisons de coût, de vitesse ou de compréhension des données) ? Si non, construisez des fonctionnalités disjonctives ou des sommes pondérées de fonctionnalités
  5. Avez-vous besoin d'évaluer les fonctionnalités individuellement (par exemple pour comprendre leur influence sur le système ou parce que leur nombre est si important que vous devez effectuer un premier filtrage) ? Si oui, utilisez une méthode de classement variable ; sinon, faites-le quand même pour obtenir des résultats de base.
  6. Avez-vous besoin d'un prédicteur ? Si non, arrêtez
  7. Pensez-vous que vos données sont « sales » (comportent quelques modèles d'entrée dénués de sens et/ou des sorties bruyantes ou des étiquettes de classe erronées) ? Si oui, détectez les exemples aberrants à l'aide des variables les mieux classées obtenues à l'étape 5. comme représentation; vérifiez-les et/ou jetez-les.
  8. Savez-vous quoi essayer en premier ? Si non, utilisez un prédicteur linéaire. Utilisez une méthode de sélection directe avec la méthode « sonde » comme critère d'arrêt ou utilisez la méthode intégrée de norme 0 à des fins de comparaison, après le classement de l'étape 5, construisez une séquence de prédicteurs de même nature en utilisant des sous-ensembles croissants de caractéristiques. Pouvez-vous égaler ou améliorer les performances avec un sous-ensemble plus petit ? Si oui, essayez un prédicteur non linéaire avec ce sous-ensemble.
  9. Avez-vous de nouvelles idées, du temps, des ressources de calcul et suffisamment d'exemples ? Si oui, comparez plusieurs méthodes de sélection de fonctionnalités, y compris votre nouvelle idée, les coefficients de corrélation, la sélection rétrospective et les méthodes intégrées. Utilisez des prédicteurs linéaires et non linéaires. Sélectionnez la meilleure approche avec la sélection du modèle
  10. Voulez-vous une solution stable (pour améliorer les performances et/ou la compréhension) ? Si oui, sous-échantillonnez vos données et refaites votre analyse pour plusieurs « bootstrap ».

Lectures complémentaires

Avez-vous besoin d'aide pour sélectionner des fonctionnalités sur une plateforme spécifique ? Vous trouverez ci-dessous quelques tutoriels qui peuvent vous permettre de démarrer rapidement :

  • Comment effectuer la sélection de fonctionnalités dans Weka (sans code)
  • Comment effectuer une sélection de fonctionnalités en Python avec scikit-learn
  • Comment effectuer la sélection de fonctionnalités dans R avec le curseur

Pour approfondir le sujet, vous pouvez vous procurer un livre dédié sur le sujet, tel que l'un des suivants :

  • Sélection de fonctionnalités pour la découverte des connaissances et l'exploration de données
  • Méthodes informatiques de sélection des fonctionnalités
  • Intelligence computationnelle et sélection de fonctionnalités : approches approximatives et floues
  • Sous-espace, structure latente et sélection de fonctionnalités : atelier sur les perspectives statistiques et d'optimisation
  • Extraction, construction et sélection de fonctionnalités : une perspective d'exploration de données

Vous aimeriez peut-être approfondir l’ingénierie des fonctionnalités dans l’article :

  • Découvrez l'ingénierie des fonctionnalités, comment concevoir des fonctionnalités et comment y parvenir

Articles connexes