Feature Selection

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)
    Résultat du code

    Explication du code :

    Import des bibliothèques

    from sklearn.feature_selection import SelectKBest, f_regression

    Cette ligne importe la classe SelectKBest ainsi que la fonction de scoring f_regression depuis le module sklearn.feature_selection.

    SelectKBest permet de sélectionner automatiquement les k meilleures variables explicatives selon un critère donné, ici f_regression.

    import pandas as pd

    import numpy as np

    Ces deux lignes importent respectivement les bibliothèques pandas et numpy, renommées ici en pd et np pour simplifier leur utilisation.

    Création d'un DataFrame avec des variables aléatoires

    np.random.seed(42) fixe la graine aléatoire afin d’assurer la reproductibilité des résultats.

    X = pd.DataFrame(np.random.rand(100, 15), columns=[f'feature_{i}' for i in range(15)]) crée un DataFrame contenant 100 lignes et 15 colonnes nommées feature_0 à feature_14 avec des valeurs aléatoires.

    y = np.random.rand(100) génère un vecteur cible aléatoire de 100 valeurs.

    Sélection des 10 meilleures variables

    selector = SelectKBest(score_func=f_regression, k=10) instancie un sélecteur avec la méthode f_regression pour choisir les 10 meilleures variables.

    X_selected = selector.fit_transform(X, y) applique la sélection et retourne un nouveau tableau contenant uniquement les variables retenues.

    Affichage des variables sélectionnées

    selected_features = X.columns[selector.get_support()] utilise un masque booléen pour extraire les noms des colonnes sélectionnées.

    print("Variables sélectionnées :", selected_features) affiche la liste des variables choisies par la méthode SelectKBest.