Skip to main content

La sélection des fonctionnalités est un processus de recherche et sélectionne la fonctionnalité la plus utile de l'ensemble de données, une étape importante dans le tuyau d'apprentissage. Les caractéristiques inutiles réduisent la vitesse de formation, réduisent l'explication du modèle et surtout, réduisent les performances générales du kit de test.

J'ai constaté que j'avais utilisé une méthode de sélection particulière pour plusieurs problèmes académiques, ce qui m'a fait me sentir déçu. J'ai donc construit une classe d'entités sélectionnée à Python. Je l'ai trouvé sur GitHub. Les caractéristiques de genre incluent certaines des méthodes de sélection des fonctionnalités les plus populaires:

  1. sur la base des caractéristiques des arbres sans importance dans le modèle
Caractéristiques
Il n'y a qu'une valeur unique

dans cet article, je vais dans un échantillon d'apprentissage de l'échantillon de données utilisant la fonctionnalité. Nous verrons comment ça donne pHOC, nous effectuons rapidement ces méthodes, ce qui permet de réaliser des flux de travail plus efficaces.

Le code complet peut être pris sur GitHub, j'encourage les contributions. Le sélecteur de fonctionnalités est en cours de développement et continuera d'améliorer en fonction des besoins de la communauté!

Ensembles de données d'échantillons

Dans cet exemple, nous utiliserons des données concurrentielles Apprentissage pour apprendre les risques de crédit à la maison sur Koggle. (Pour commencer la concurrence, veuillez vous reporter à cet article). L'ensemble du jeu de données peut être téléchargé, où nous utiliserons un exemple pour prouver.


Échantillon de données, l'objectif est l'étiquette classifiée
Ce jeu est un problème de classification supervisé, il s'agit d'une très bonne définition de données car elle manque de nombreuses valeurs manquantes, De nombreuses fonctionnalités de valeurs (lignes populaires) et de fonctionnalités non liées, ce n'est pas utile pour les modèles d'apprentissage de la machine.

Créer une instance

pour créer une instance de classe CasedereleCORT, nous devons transférer un ensemble de données structuré, contenant des fonctionnalités dans des lignes et des colonnes. Nous pouvons utiliser certaines fonctionnalités uniquement, mais la méthode basée sur les méthodes nécessite également des étiquettes de formation. Comme nous disposons d'une tâche de classification superviseure, nous utiliserons un ensemble de fonctionnalités et un ensemble d'étiquettes.

(Assurez-vous d'exécuter ce script dans le même dossier avec la fonctionnalité_Selector.py)
Le sélecteur de fonctionnalité comporte cinq méthodes pour trouver les fonctions de suppression nécessaires. Nous pouvons visiter toutes les fonctionnalités définies et les supprimer manuellement des données ou utiliser la fonction "Supprimer" dans le sélecteur de fonctionnalités.

Ici, nous détaillerons chaque méthode d'identification et d'afficher la manière dont les cinq méthodes sont exécutées. La fonctionnalité THELecturors présente également un certain nombre de fonctionnalités de dessin car les données d'inspection visuelle constituent une composante majeure de la machine d'apprentissage.

Manquant

La recherche de la première méthode de la fonctionnalité sera supprimée très simple: voir caractéristiques de nao La valeur de suppression de la valeur de suppression est supérieure à un certain seuil. L'appel suivant identifie les caractéristiques de la valeur inférieure de 60%.


Nous pouvons voir le rapport de chaque colonne de Dataframe: fs.identify_missing(missing_threshold = 0.6)17 features with greater than 0.60 missing values.
fs.missing_stats.head() Pour voir les fonctions que vous souhaitez supprimer, nous accédons aux propriétés ops de ce casedelector est Un dictionnaire Python, une valeur d'une liste de caractéristiques.
Enfin, nous tirons toute la distribution de toutes les caractéristiques manquantes:
missing_features = fs.ops['missing']missing_features[:5]['OWN_CAR_AGE', 'YEARS_BUILD_AVG', 'COMMONAREA_AVG', 'FLOORSMIN_AVG','LIVINGAPARTMENTS_AVG'] Caractéristiques d'une fonction populaire linéaire
SPECTRUM CARACTERISTIQUES SPECTRUM Cette variable est une caractéristique très liée ensemble. Dans l'apprentissage de la machine, en raison de la variance importante, le modèle peut interpréter, entraînant la réduction générale du kit de test. fs.plot_missing() Définition de méthody_collinéaire a trouvé une fonction de ligne commune basée sur le coefficient de corrélation spécifié. Pour chaque paire de fonctionnalités connexes, il détermine que l'une des fonctionnalités sera supprimée (parce que nous simplement supprimer une):

Nous pouvons créerUne image claire avec l'association, ce qui signifie des cartes chaudes. Cela montre toutes les caractéristiques d'au moins une caractéristique de corrélation au-dessus du seuil:


Comme mentionné, nous pouvons accéder à l'ensemble des livres de noms des livres des livres seront supprimés ou affichés des fonctionnalités très associées. dans la trame de données. fs.identify_collinear(correlation_threshold = 0.98)21 features with a correlation magnitude greater than 0.98.
fs.plot_collinear() Si nous voulons étudier notre ensemble de données, nous pouvons également transmettre tout Plot_All = true à l'appel pour dessiner tous les graphiques associés dans les données:

Caractéristiques Zéro

# list of collinear features to removecollinear_features = fs.ops['collinear']# dataframe of collinear featuresfs.record_collinear.head() peut appliquer les deux premières méthodes à tout ensemble de données structuré, et sûrement - pour avec un certain seuil, chaque résultat est identique. La méthode suivante ne s'applique que pour apprendre des problèmes de machine avec une supervision. À cet égard, nous avons des étiquettes de modèles de formation et d'incertitude. Fonctions de détermination_zero_importance Recherchez des fonctionnalités sans importance basées sur les modèles d'apprentissageHauteur de dégradé (GBM).
Utilisation d'un modèle d'apprentissage basé sur des arbres à base d'exemples, dans une intégration avancée, nous pouvons trouver les caractéristiques importantes de la fonctionnalité. La valeur absolue de l'importance ne dispose pas de valeurs relatives et de valeurs relatives ne peut être utilisée pour déterminer la caractéristique la plus appropriée de la tâche. Nous pouvons également faire la sélection des fonctionnalités en supprimant des fonctionnalités importantes. Dans un modèle à base d'arbres, aucun bouton n'est divisé sans utiliser les caractéristiques de l'importance de 0. Nous pouvons donc les supprimer sans affecter les performances du modèle.
Calculatrice) Les caractéristiques utilisent l'importance de la recherche de palans gradient dans la bibliothèque LightGMM. Pour réduire la variance, l'importance typique de 10 GBM s'engage est calculée. De plus, les modèles sont formés avec des arrêts précoce avec le kit de vérification (vous pouvez choisir un kit d'authentification fermé) pour éviter une condition physique excessive des données de formation.
Le code suivant appelle cette méthode, extraitDéplacez les caractéristiques de zéro importance:
Les paramètres que nous colliers sont les suivants:
Mission: classer le problème correspondant "ou" régression "

Eval_metric : un indicateur pour les derniers arrêts (si cela s'est désactivé a été désactivé, il n'est pas nécessaire d'utiliser cet indicateur)

N_IPECT: Numéro de formation, utilisé pour décrire le sexe moyen

LY_STOP: Utilisez-vous des arrêts précoces pour former le modèle

Cette fois, nous avons deux images avec Plot_Feature_importsances:


sur la gauche, nous avons les caractéristiques les plus importantes de Plot_n (tiré en fonction de l'importance de l'importance, le total est de 1), à droite, nous avons accumulé une importance pour le nombre de fonctionnalités. La ligne verticale est tirée dans le "seuil" de l'importance cumulative, est de 99% dans cet exemple.
Pour des méthodes importantes en fonction de l'importance, il y a deux précautions à retenir:
# plot the feature importancesfs.plot_feature_importances(threshold = 0.99, plot_n = 12)124 features required for 0.99 of cumulative importance La formation de palan dégradé est aléatoire, ouiEntrée moyenne de fonctionnalité chaque fois que le modèle fonctionne. Il y aura des changements
Cela ne devrait pas avoir d'impact important (la caractéristique la plus importante ne deviendra pas soudainement la moins importante), mais cela modifiera certaines des caractéristiques. Cela peut également affecter le nombre de niveaux d'importance égal à 0 est déterminé. Si l'importance des fonctionnalités change à chaque fois, ne soyez pas surpris!

Pour former le modèle de modélisation, les caractéristiques sont "seulement cryptées" en premier. Cela signifie qu'une partie de l'importance de 0 peut être une fonctionnalité unique de cryptage thermique ajoutée au cours du processus de modélisation.

Lorsque nous arrivons au stade de la suppression de la fonctionnalité, il est possible de supprimer une fonctionnalité de cryptage unique. Toutefois, si nous apprenons la machine après avoir sélectionné la fonctionnalité, nous avons toujours un seul code de chaleur réalisé sur la fonctionnalité!

    Fonctions de faible importance
  • La méthode suivante est basée sur l'importance de 0 etOptions supplémentaires en utilisant l'entrée caractéristique du modèle. Conditions de détermination_LOW_IMORTANCE Trouver des fonctionnalités sans avantages minimaux pour un total important.
    Par exemple, l'appel suivant a révélé que la fonctionnalité la moins importante n'est pas requise pour 99% du total important:
    • Sur la base de la graphique clé accumulant et cette information est le gradient Le palan pense que de nombreuses fonctionnalités sont indépendantes de l'apprentissage. De même, le résultat de cette méthode changera à chaque heure de formation.
      Pour afficher toutes les caractéristiques importantes dans la trame de données:

      Méthode Low_Importance Dessine sur une méthode d'utilisation de l'analyse principale du composant (PCA), cette méthode ne stocke généralement que le PC doit conserver des différents taux de variance (tels que 95%). Le pourcentage de l'importance totale est basé sur la même idée.

      La méthode basée sur l'importance de la fonctionnalité n'est correcte que lorsque nous prédisons un modèle à base d'arbres. Une partCependant, la méthode basée sur l'importance est la méthode de la boîte noire, car nous ne savons pas pourquoi le modèle estime que ces fonctionnalités sont indépendantes. Si vous utilisez ces méthodes, exécutez-les plusieurs fois pour voir les modifications de résultat, vous pouvez peut-être créer plusieurs ensembles de données avec différents paramètres pour les tests!

      Caractéristiques d'une seule valeur unique fs.identify_low_importance(cumulative_importance = 0.99) features required for cumulative importance of 0.99 after one hot encoding.116 features do not contribute to cumulative importance of 0.99.

      La méthode finale est assez basique: trouvez toute colonne avec une seule valeur. Une seule des fonctionnalités uniques est inutile à apprendre, car la variance de cette fonctionnalité est nulle. Par exemple, les plantes basées sur des plantes ne segmentent jamais qu'une seule caractéristique (car il n'y a pas d'emballage pour l'observation).

      Il n'y a pas d'option de paramètre ici, contrairement aux autres méthodes:

      fs.feature_importances.head(10) nous pouvons dessiner le tableau de la valeur unique de chaque type:

      Il faut se rappeler que NaN est supprimé avant de calculer la valeur unique en panda par défaut.

      SupprimerCaractéristiques
      Lorsque nous déterminons que les fonctionnalités seront supprimées, nous avons deux options pour les supprimer. Toutes les fonctionnalités seront supprimées stockées dans le dictionnaire OPS du jeu de fonctions, nous pouvons utiliser la liste pour supprimer des fonctionnalités manuelles. Une autre option consiste à utiliser la fonction d'intégration «Supprimer».

      Pour cette méthode, nous sommes introduits sur la méthode pour supprimer des fonctionnalités. Si nous voulons utiliser tous les déploiements, nous n'avons besoin que de transférer les méthodes = "Tout".

      fs.identify_single_unique()4 features with a single unique value. Cette méthode renvoie une image de données pour supprimer des fonctionnalités. Vous pouvez également supprimer la seule fonctionnalité de cryptage créée pendant le processus d'apprentissage:
      fs.plot_unique() Les tests seront supprimés avant de continuer à fonctionner! L'ensemble de données d'origine est stocké dans la propriété de données de la fonctionnalité comme sauvegarde!

      Exécution de tous les modes Nous pouvons utiliser IMPOR_ALL au lieu d'utiliser uniquement ces méthodes. Cela nécessite une cupidité typiqueNombre de chaque méthode: Veuillez noter que le nombre total de fonctionnalités changera puisque nous remercions le modèle. Après cela, vous pouvez appeler la fonction "Supprimer" pour supprimer ces fonctionnalités. Résumé Avant de former le modèle de machine, la fonction de sélection de classe effectue des fonctionnalités de suppression courantes. Il fournit des fonctionnalités de visualisation et des fonctions qui seront supprimées. La méthode peut être exécutée séparément, ou elle peut être exécutée une fois pour obtenir un processus de travail efficace. Les méthodes sont manquantes, ajoutées et a_unique est déterminée et les méthodes basées sur l'importance de la fonctionnalité changeront comme chaque course. Choisir la fonctionnalité, comme le domaine des machines d'apprentissage, dans une large mesure, il est expérimental et de nombreuses combinaisons qui doivent être vérifiées pour trouver la meilleure réponse. Essayez une certaine configuration dans le tuyau est que les meilleures pratiques et le sélecteur de fonctionnalités fournissent une méthode de paramètres de sélection de notation rapide.

Catégories