Table des matières:
- Sélection par mesures univariées
- Lorsque vous utilisez une sélection univariée, vous devez décider vous-même du nombre de variables à conserver: La sélection gourmande réduit automatiquement le nombre de caractéristiques impliquées dans un modèle d'apprentissage en fonction de leur contribution effective au la performance mesurée par la mesure d'erreur.
Vidéo: Découvrez les librairies Python pour la Data Science 2024
Sélectionner les bonnes variables dans Python peut améliorer le processus d'apprentissage en science des données en réduisant la quantité de bruit (inutile informations) qui peuvent influencer les estimations de l'apprenant. La sélection de variables peut donc réduire efficacement la variance des prédictions. Pour ne faire intervenir que les variables utiles à l'entraînement et ignorer celles qui sont redondantes, vous pouvez utiliser ces techniques:
-
Approche univariée: Sélectionnez les variables les plus proches du résultat cible.
-
Approche gourmande ou rétrograde: Ne conservez que les variables que vous pouvez retirer du processus d'apprentissage sans endommager ses performances.
Sélection par mesures univariées
Si vous décidez de sélectionner une variable en fonction de son niveau d'association avec sa cible, la classe SelectPercentile fournit une procédure automatique permettant de ne conserver qu'un certain pourcentage des meilleures fonctionnalités associées. Les métriques disponibles pour association sont
-
f_regression: Utilisé uniquement pour les cibles numériques et basé sur les performances de régression linéaire.
-
f_classif: Utilisé uniquement pour les cibles catégorielles et basé sur le test statistique Analysis of Variance (ANOVA).
-
chi2: Effectue la statistique du khi-carré pour les cibles catégorielles, ce qui est moins sensible à la relation non linéaire entre la variable prédictive et sa cible.
Lors de l'évaluation des candidats pour un problème de classification, f_classif et chi2 tendent à fournir le même ensemble de variables supérieures. C'est toujours une bonne pratique de tester les sélections des deux métriques d'association.
Hormis l'application d'une sélection directe des associations de percentiles supérieures, SelectPercentile peut également classer les meilleures variables afin de faciliter le choix du percentile pour exclure une fonctionnalité de la participation au processus d'apprentissage. La classe SelectKBest est analogue dans sa fonctionnalité, mais elle sélectionne les k variables supérieures, où k est un nombre, pas un centile.
de sklearn. feature_selection import SelectPercentile de sklearn. feature_selection import f_regression Selector_f = SelectPercentile (f_regression, percentile = 25) Sélecteur_f. fit (X, y) pour n, s dans zip (boston.nom_fonctions, Selector_f.tags_): affiche 'F-score:% 3. 2ft pour la caractéristique% s '% (s, n) F-score: 88. 15 pour la caractéristique CRIM F-score: 75. 26 pour la caractéristique ZN F-score: 153. 95 pour la caractéristique INDUS F-score: 15. 97 pour Caractéristique CHAS F-score: 112. 59 pour la fonction NOX F-score: 471. 85 pour le dispositif RM F-score: 83.48 pour la fonction F-score AGE: 33. 58 pour la caractéristique DIS F-score: 85. 91 pour la caractéristique RAD F-score: 141. 76 pour la caractéristique TAX F-score: 175. 11 pour la caractéristique PTRATIO F-score: 63. 05 pour la fonction B score F: 601. 62 pour la fonction LSTAT
L'utilisation du niveau de sortie de l'association vous aide à choisir les variables les plus importantes pour votre modèle d'apprentissage automatique, mais vous devez faire attention à ces problèmes possibles: > Certaines variables à forte association pourraient aussi être fortement corrélées, introduisant des informations dupliquées, qui agissent comme du bruit dans le processus d'apprentissage.
-
Certaines variables peuvent être pénalisées, notamment les variables binaires (variables indiquant un statut ou une caractéristique en utilisant la valeur 1 quand elle est présente, 0 quand elle ne l'est pas). Par exemple, notez que la sortie affiche la variable binaire CHAS comme étant la moins associée à la variable cible (mais vous savez d'après les exemples précédents qu'elle est influente à partir de la phase de validation croisée).
-
Le processus de sélection univariée peut vous donner un réel avantage lorsque vous avez un grand nombre de variables à sélectionner et que toutes les autres méthodes deviennent infaisables. La meilleure procédure consiste à réduire la valeur de SelectPercentile par au moins la moitié des variables disponibles, à réduire le nombre de variables à un nombre gérable et, par conséquent, à utiliser une méthode plus sophistiquée et plus précise, telle qu'une recherche gourmande.
Utiliser une recherche gourmande
Lorsque vous utilisez une sélection univariée, vous devez décider vous-même du nombre de variables à conserver: La sélection gourmande réduit automatiquement le nombre de caractéristiques impliquées dans un modèle d'apprentissage en fonction de leur contribution effective au la performance mesurée par la mesure d'erreur.
La classe RFECV, qui adapte les données, peut vous fournir des informations sur le nombre de fonctionnalités utiles, vous les signaler et transformer automatiquement les données X, par la méthode transform, en un ensemble de variables réduit, comme indiqué dans l'exemple suivant:
de sklearn. feature_selection import sélecteur RFECV = RFECV (estimateur = régression, cv = 10, scoring = "mean_squared_error") sélecteur. fit (X, y) print ("Nombre optimal de fonctionnalités:% d"% selector.n_features_) Nombre optimal de fonctionnalités: 6
Il est possible d'obtenir un index du jeu de variables optimal en appelant l'attribut support_ de RFECV classe après vous l'adapter.
imprimer boston. feature_names [sélecteur. support_] ['CHAS "NOX" RM "DIS" PTRATIO "LSTAT']
Notez que CHAS est maintenant inclus parmi les fonctionnalités les plus prédictives, ce qui contraste avec le résultat de la recherche univariée La méthode RFECV peut détecter si une variable est important, peu importe qu'il soit binaire, catégorique ou numérique, car il évalue directement le rôle joué par l'entité dans la prédiction.
La méthode RFECV est certainement plus efficace, comparée à l'approche -univariée, parce qu'elle prend en compte les caractéristiques hautement corrélées et est optimisé pour optimiser la mesure d'évaluation (qui n'est généralement pas un Chi-carré ou un F-score) étant un processus gourmand, il est exigeant en termes de calcul et peut seulement approcher le meilleur ensemble de prédicteurs.
Comme RFECV apprend le meilleur ensemble de variables à partir des données, la sélection peut être trop rapide, ce qui arrive avec tous les autres algorithmes d'apprentissage automatique. Essayer RFECV sur différents échantillons des données d'entraînement peut confirmer les meilleures variables à utiliser.