Quels algorithmes d'apprentissage automatique sont bons pour estimer les fonctionnalités les plus importantes?

12

J'ai des données avec un nombre minimum de fonctionnalités qui ne changent pas, et quelques fonctionnalités supplémentaires qui peuvent changer et avoir un grand impact sur le résultat. Mon ensemble de données ressemble à ceci:

Les fonctionnalités sont A, B, C (toujours présentes) et D, E, F, G, H (parfois présentes)

A = 10, B = 10, C = 10                  outcome = 10
A = 8,  B = 7,  C = 8                   outcome = 8.5
A = 10, B = 5,  C = 11, D = 15          outcome = 178
A = 10, B = 10, C = 10, E = 10, G = 18  outcome = 19
A = 10, B = 8,  C = 9,  E = 8,  F = 4   outcome = 250
A = 10, B = 11, C = 13, E = 8,  F = 4   outcome = 320
...

Je veux prédire la valeur du résultat, et la combinaison de paramètres supplémentaires est très importante pour déterminer le résultat. Dans cet exemple, la présence de E et F conduit à un gros résultat, contrairement à la présence de E et G. Quels algorithmes ou techniques d'apprentissage automatique sont bons pour capturer ce phénomène?

Benjamin Crouzier
la source
Par «parfois présent», voulez-vous dire que vous ne connaissez leur valeur que de temps en temps? Ou qu'ils sont connus pour ne pas jouer de rôle dans la plupart des cas? Ou peut-être autre chose?
David J. Harris
@ DavidJ.Harris Par "parfois présent", je veux dire que l'exemple de formation particulier ne possède pas la propriété. C'est comme s'il était égal à zéro. Dans mon problème, toutes mes fonctionnalités seront des nombres positifs dans une plage donnée (par exemple, de 5 à 15 ou 100 à 1000).
Benjamin Crouzier
1
il pourrait être bon de regarder ce lien eren.0fees.net/2012/10/22/…
erogol

Réponses:

14

C'est l'un des principaux domaines de recherche en apprentissage automatique et il est connu sous le nom de sélection de fonctionnalités .

En général, la seule façon de dire quel est le meilleur sous-ensemble de fonctionnalités (pour l'entrée dans un modèle prédictif qui peut les combiner), est d'essayer tous les sous-ensembles possibles. Ceci est généralement impossible, donc les gens essaient d'échantillonner l'espace des sous-ensembles de fonctionnalités par diverses heuristiques (voir l'article pour quelques approches typiques).

Au niveau du bit
la source
3

D'après ma compréhension, vous recherchez une mesure d'importance variable. Celles-ci se déclinent en plusieurs versions basées sur plusieurs approches théoriques différentes, mais toutes ont des liens étroits avec les méthodes utilisées pour optimiser l'algorithme dont vous parlez. Généralement, chaque algorithme d'apprentissage automatique aura une méthode d'optimisation canonique; rétropropagation pour les réseaux de neurones, optimisation minimale séquentielle pour les SVM, divers critères d'information et tests de signification statistique pour les arbres de décision, y compris la signification du chi carré ou l'impureté de gini. Bien entendu, d'autres méthodes d'optimisation plus originales sont fréquemment proposées pour chacun des algorithmes.

Ces méthodes d'optimisation pour chaque algorithme définissent essentiellement l'importance variable pour le modèle en question. Essentiellement, vous recherchez une approximation ou une représentation interprétable des résultats de cette étape d'optimisation que l'algorithme entreprend. Cependant, cela est problématique pour plusieurs raisons.

  1. La difficulté de déterminer l'influence d'une variable donnée sur la sélection de forme de modèle, étant donné que la sélection est souvent un processus stochastique lui-même.Les variables influencent la sélection du modèle dans une certaine mesure, de sorte que même si une variable n'est pas importante pour la prédiction finale dans un modèle , il peut avoir formé de manière cruciale la forme du modèle elle-même. Étant donné que la génération du modèle lui-même est souvent stochastique (optimisée à l'aide de l'optimisation des essaims de particules ou d'une méthode d'ensachage, etc.), il est difficile de comprendre exactement comment une variable donnée a pu façonner sa forme.

  2. La difficulté d'extraire l'importance d'une seule variable étant donné qu'elle peut n'être importante qu'en conjonction ou interaction avec une autre variable.

  3. Certaines variables peuvent n'être importantes que pour certaines observations. Le manque d'importance sur d'autres observations peut confondre la mesure de l'importance globale en faisant la moyenne d'une différence réelle.

Il est également difficile d'obtenir une métrique immédiatement interprétable pour une importance variable exactement telle que définie par le modèle, car elle peut ne pas produire un seul numéro (en particulier dans le cas de l'ensachage). Au lieu de cela, dans ces cas, il existe une distribution d'importance pour chaque variable.

Une façon de surmonter ces problèmes pourrait être d'utiliser la perturbation. C'est une façon d'analyser votre modèle final en ajoutant du bruit aléatoire à vos variables, puis en vérifiant comment cela affecte les résultats. L'avantage est qu'il vous permet de trouver quelles variables sont les plus importantes empiriquement grâce à la simulation - répondant à la question de savoir quelles variables détruiraient le plus la prédiction si elles étaient supprimées. L'inconvénient est qu'il y a de fortes chances que même si les variables ont été supprimées / perturbées, le modèle (s'il a été ré-formé) pourrait utiliser les autres variables pour reconstruire leur effet, ce qui signifie que la mesure de "l'importance des variables" que vous dérivez n'est encore vraiment indique l'importance dans votre modèle formé, mais pas l'importance globale dans tous les modèles possibles.

analyste
la source
3

Comme le mentionne @Bitwise, la sélection ou l'extraction de fonctionnalités est un vaste domaine de recherche en soi et il existe d'innombrables façons de le faire.

Les autres réponses sont toutes valables à mon avis, mais au final, vous ferez probablement le plus, et choisirez la méthode la plus intuitive pour vous et que vous comprenez le mieux. J'ajouterais encore deux options possibles.

La régression multiple est probablement la technique la plus ancienne. L'idée est d'adapter un modèle pour décrire la réponse des prédicteurs et de ne garder que les prédicteurs qui ont un impact important sur la réponse (un grand coefficient de proportionnalité). Ici , vous auriez probablement recoder l'absence de D, E, F et G comme D=0, E=0, F=0, G =0ou quelque chose comme ça.

Une autre technique qui n'a jamais gagné la popularité qu'elle mérite est l'analyse de co-inertie (une variante de l' analyse canonique ). Pour autant que je sache, il n'y a pas d'implémentation et il faudrait recommencer à zéro ( par exemple). Il s'agit d'une méthode linéaire qui trouve la meilleure combinaison linéaire de fonctionnalités qui correspond à vos résultats. Ce billet de blog montre un exemple de la façon dont il peut être utilisé.

gui11aume
la source
2

J'utilise le gain d'informations (également connu sous le nom d'informations mutuelles). Mon conseiller et moi utilisons régulièrement l'approche décrite dans cet article Cohen, 2008 pour analyser les fonctionnalités de classification par SVM.

Kyle.
la source
2

Les forêts aléatoires pourraient être très utiles pour ce que vous voulez faire. Le package randomForest pour R a une fonction qui calcule 2 mesures d'importance. Il a également la possibilité de créer des graphiques de dépendance partielle afin que vous puissiez inspecter visuellement l'effet marginal que le prédicteur peut avoir sur la réponse.

dcl
la source
1

Je suis méchant ici mais pour une raison. Avez-vous pensé à remplacer les observations non uniformes par une variable indicatrice présente | non_présente? D'après votre description, il semble que cette valeur d'indicateur soit une caractéristique valide car la présence des facteurs D à H n'est pas informative: leur présence indique simplement des résultats plus importants.

jcb
la source