Feature Selection (sélection des variables pertinentes)
La Feature Selection (sélection des variables pertinentes) est un processus qui consiste à choisir un sous-ensemble des caractéristiques (ou variables) les plus significatives d’un jeu de données pour améliorer les performances d’un modèle d’apprentissage automatique. Cela permet de réduire la complexité du modèle, d’éviter le surapprentissage (overfitting), d’améliorer l’interprétabilité du modèle et de réduire les coûts computationnels. La sélection des variables peut se faire par différentes méthodes telles que : Méthodes filtrantes : elles évaluent l’importance des variables indépendamment du modèle, en utilisant des tests statistiques (comme le chi-carré, la corrélation, etc.). Méthodes wrapper : elles évaluent la performance du modèle en utilisant différentes combinaisons de variables et choisissent celles qui optimisent la performance. Méthodes imbriquées : elles intègrent la sélection des variables directement dans le processus d’apprentissage du modèle, comme dans les algorithmes Lasso (régression) ou les arbres de décision. La feature selection permet donc de simplifier les modèles, améliorer leur efficacité et leur précision tout en réduisant le bruit des données.
Fonctions :
-
SelectKBest()
SelectKBest est une méthode de sélection de variables qui choisit les k meilleures caractéristiques en fonction d'un test statistique.
Importation :
from sklearn.feature_selection import SelectKBest, f_regression
Attributs :
Paramètre Description score_func
Fonction statistique utilisée (ex: f_regression
,chi2
,mutual_info_classif
)k
Nombre de caractéristiques à sélectionner fit(X, y)
Entraîne le sélecteur sur les données transform(X)
Applique la sélection sur les données Exemple de code :
from sklearn.feature_selection import SelectKBest, f_regression import pandas as pd import numpy as np # Création d'un DataFrame avec des variables aléatoires np.random.seed(42) X = pd.DataFrame(np.random.rand(100, 15), columns=[f'feature_{i}' for i in range(15)]) y = np.random.rand(100) # Variable cible # Sélection des 10 meilleures variables selector = SelectKBest(score_func=f_regression, k=10) X_selected = selector.fit_transform(X, y) # Affichage des variables sélectionnées selected_features = X.columns[selector.get_support()] print("Variables sélectionnées :", selected_features)
Explication du code :
- Création des données :
X
contient 15 variables aléatoires.y
est la variable cible (régression).
- Sélection avec
SelectKBest
:f_regression
calcule la corrélation entre chaque variable ety
.- Seules les
k=10
meilleures sont conservées.
- Affichage des variables retenues :
selector.get_support()
retourne un masque booléen des features sélectionnées.
🔎 Remarques
- Pour un problème de classification, utiliser
f_classif
oumutual_info_classif
. - D'autres méthodes existent (
RFE
,VarianceThreshold
, etc.) pour améliorer la sélection.
- Création des données :