Avons-nous encore besoin de sélectionner des fonctionnalités lors de l'utilisation d'algorithmes de régularisation?


20

J'ai une question concernant la nécessité d'utiliser des méthodes de sélection d'entités (forêts aléatoires, valeur d'importance des caractéristiques ou méthodes de sélection d'entités univariées, etc.) avant d'exécuter un algorithme d'apprentissage statistique.

Nous savons que pour éviter le sur-ajustement, nous pouvons introduire une pénalité de régularisation sur les vecteurs de poids.

Donc, si je veux faire une régression linéaire, je pourrais introduire les paramètres de régularisation net L2 ou L1 ou même Elastic net. Pour obtenir des solutions éparses, la pénalité L1 aide à la sélection des fonctionnalités.

Ensuite, est-il toujours nécessaire de faire la sélection des fonctionnalités avant d'exécuter la régression de régularisation L1 telle que Lasso?. Techniquement, Lasso m'aide à réduire les fonctionnalités de pénalité L1, alors pourquoi la sélection des fonctionnalités est-elle nécessaire avant d'exécuter l'algo?

J'ai lu un article de recherche disant que faire Anova puis SVM donne de meilleures performances que d'utiliser SVM seul. Maintenant la question est: SVM fait intrinsèquement la régularisation en utilisant la norme L2. Afin de maximiser la marge, il minimise la norme du vecteur de poids. Il fait donc de la régularisation dans sa fonction objective. Ensuite, techniquement, les algorithmes tels que SVM ne devraient pas se soucier des méthodes de sélection des fonctionnalités?. Mais le rapport dit toujours que la sélection des fonctionnalités univariées avant que le SVM normal soit plus puissant.

Quelqu'un avec des pensées?


Une question que je voudrais poser est de savoir comment fonctionne la régularisation SVM avec les méthodes du noyau? La norme L2 reg repose sur la normalisation des entrées. Cependant, si vous utilisez un noyau (par exemple un polynôme), vos entrées effectives (c'est-à-dire les pouvoirs polynomiaux) ne sont plus normalisées.
seanv507

Réponses:


17

La sélection des fonctionnalités améliore parfois les performances des modèles régularisés, mais d'après mon expérience, cela aggrave généralement les performances de généralisation. La raison en est que plus nous faisons de choix concernant notre modèle (y compris les valeurs des paramètres, le choix des fonctionnalités, le réglage des hyper-paramètres, le choix du noyau ...), plus nous devons faire de données ces choix de manière fiable. Généralement, nous faisons ces choix en minimisant certains critères évalués sur un ensemble fini de données, ce qui signifie que le critère a inévitablement une variance non nulle. Par conséquent, si nous minimisons le critère de manière trop agressive, nous pouvons le sur-ajuster, c'est-à-dire que nous pouvons faire des choix qui minimisent le critère en raison de caractéristiques qui dépendent de l'échantillon particulier sur lequel il est évalué, plutôt que parce qu'il produira un véritable amélioration des performances.

Maintenant, le SVM est une implémentation approximative d'une performance liée à la généralisation qui ne dépend pas de la dimensionnalité, donc en principe, nous pouvons nous attendre à de bonnes performances sans sélection de fonctionnalités, à condition que les paramètres de régularisation soient correctement choisis. La plupart des méthodes de sélection des fonctionnalités n'ont pas de telles "garanties" de performances.

Pour les méthodes L1, je ne me soucierais certainement pas de la sélection des fonctionnalités, car le critère L1 est généralement efficace pour rogner les fonctionnalités. La raison pour laquelle il est efficace est qu'il induit un ordre dans lequel les fonctionnalités entrent et sortent du modèle, ce qui réduit le nombre de choix disponibles dans la sélection des fonctionnalités et est donc moins sujet à un sur-ajustement.

La meilleure raison de la sélection des fonctionnalités est de savoir quelles fonctionnalités sont pertinentes / importantes. La pire raison de la sélection des fonctionnalités est d'améliorer les performances, pour les modèles régularisés, cela aggrave généralement les choses. Cependant, pour certains jeux de données, cela peut faire une grande différence, alors la meilleure chose à faire est de l'essayer et d'utiliser un schéma d'évaluation des performances robuste et non biaisé (par exemple, la validation croisée imbriquée) pour savoir si le vôtre est l'un de ces jeux de données.


Qu'entendez-vous par valviation croisée imbriquée? Applique-t-il la validation croisée k fois N?
yasin.yazici

5

jβ^j=.0001β^j=0

Cependant, il existe toujours des raisons de supprimer complètement une variable.

  1. Parfois, le but n'est pas la précision prédictive mais l'explication d'un phénomène mondial. Parfois, vous voulez savoir quelles variables font et n’ont pas d’impact sur une certaine variable dépendante. Dans ces types de situations, un modèle parcimonieux est un moyen privilégié pour comprendre et interpréter
  2. β^j
  3. Raisons de calcul - un modèle avec moins de variables s'exécute généralement plus rapidement et vous n'avez pas besoin de stocker les données pour ces variables externes.

2
Salut TrynnaDoStat, je suis totalement d'accord avec vos points 1 et 3. Mais l'argument 2 ne touche pas vraiment le point. Si vous sélectionnez des fonctionnalités avec le même ensemble de données, vous risquez également d'avoir choisi le mauvais ensemble de fonctionnalités. Parce qu'une variable aléatoire peut sembler bien corrélée avec la variable objectif dans les données.
gstar2002

β^j

0

Je ne pense pas que le sur-ajustement soit la raison pour laquelle nous avons besoin d'une sélection de fonctionnalités en premier lieu. En fait, le sur-ajustement est quelque chose qui se produit si nous ne donnons pas suffisamment de données à notre modèle, et la sélection des fonctionnalités réduit encore la quantité de données que nous transmettons à notre algorithme.

Je dirais plutôt que la sélection des fonctionnalités est nécessaire en tant qu'étape de prétraitement pour les modèles qui n'ont pas le pouvoir de déterminer l'importance des fonctionnalités par eux-mêmes, ou pour les algorithmes qui deviennent beaucoup moins efficaces s'ils doivent effectuer cette pondération d'importance par eux-mêmes. .

Prenons par exemple un algorithme simple k-plus proche basé sur la distance euclidienne. Il considérera toujours toutes les caractéristiques comme ayant le même poids ou la même importance pour le classement final. Donc, si vous lui donnez 100 fonctionnalités mais seulement trois d'entre elles sont pertinentes pour votre problème de classification, alors tout le bruit de ces fonctionnalités supplémentaires masquera complètement les informations des trois fonctionnalités importantes, et vous n'obtiendrez aucune prévision utile. Si vous déterminez à la place les fonctionnalités critiques à l'avance et ne transmettez que celles au classificateur, cela fonctionnera beaucoup mieux (sans parler d'être beaucoup plus rapide).

D'un autre côté, regardez un classificateur de forêt aléatoire. Pendant l'entraînement, il déterminera automatiquement les fonctionnalités les plus utiles en trouvant une répartition optimale en choisissant parmi un sous-ensemble de toutes les fonctionnalités. Par conséquent, il fera beaucoup mieux pour passer au crible les 97 fonctionnalités inutiles pour trouver les trois bonnes. Bien sûr, il fonctionnera toujours plus rapidement si vous effectuez la sélection au préalable, mais sa puissance de classification ne souffrira généralement pas beaucoup en lui donnant beaucoup de fonctionnalités supplémentaires, même si elles ne sont pas pertinentes.

Enfin, regardez les réseaux de neurones. Encore une fois, il s'agit d'un modèle qui a le pouvoir d'ignorer les fonctionnalités non pertinentes, et la formation par rétropropagation converge généralement vers l'utilisation des fonctionnalités intéressantes. Cependant, il est connu que l'algorithme d'apprentissage standard converge beaucoup plus rapidement si les entrées sont «blanchies», c'est-à-dire mises à l'échelle en variance unitaire et avec corrélation croisée supprimée (LeCun et al, 1998) . Par conséquent, bien que vous n'ayez pas strictement besoin de sélectionner des fonctionnalités, il peut être payant en termes de performances pures de faire un prétraitement des données d'entrée.

Donc, en résumé, je dirais que la sélection des fonctionnalités a moins à voir avec le sur-ajustement et plus avec l'amélioration de la puissance de classification et de l'efficacité de calcul d'une méthode d'apprentissage. Le montant nécessaire dépend beaucoup de la méthode en question.


3
(1) Je ne suis pas d'accord avec votre première proposition. La sélection des fonctionnalités ne réduit pas la quantité de données mais réduit le nombre de fonctionnalités. Le nombre d'instances (échantillons) reste le même, et il peut aider au surajustement car, le classificateur a besoin de moins de paramètres (s'il s'agit d'un modèle paramétrique) pour ajuster les données. Moins de paramètres signifient moins de puissance de représentation, donc moins de chances de s'ajuster. (2) Quel est le type d'algorithme de sélection des fonctionnalités que vous avez mentionné d'utiliser avant KNN? Comment sait-il quelles fonctionnalités seront plus efficaces?
yasin.yazici

@ yasin.yazici: Supposons que vous effectuez une classification des chiffres manuscrits et que vous jetez tout sauf le pixel supérieur gauche. N'avez-vous pas simplement réduit la quantité de données dont vous disposiez?
cfh

@chf Non, cela ne fait que réduire le nombre de fonctionnalités. De moins que l'ensemble de données soit MNIST, il y a 784 entités pour chaque échantillon et 60000 échantillons. Si vous jetez une partie de vos fonctionnalités, vous avez encore 60000 échantillons.
yasin.yazici

@ yasin.yazici: Mon point est que le nombre d'échantillons n'est pas le même que la quantité de données. Les données sont toute la matrice des «échantillons x caractéristiques».
cfh

La sélection des fonctionnalités peut (et souvent) s'adapter. Si vous utilisez des apprenants régularisés et que vous ne vous souciez pas de l'importance des fonctionnalités, alors, à moins que vous n'ayez beaucoup de données et un schéma de validation robuste, je ne vois pas beaucoup d'utilité pour la sélection des fonctionnalités.
Firebug

0

Je pense que si vous n'avez pas un nombre suffisant de points de données pour optimiser de manière robuste les paramètres, vous pouvez faire une sélection de fonctionnalités pour supprimer certaines variables. Mais je ne suggérerais pas d'en faire trop, car vous pouvez perdre le signal que vous souhaitez modéliser.

De plus, il se peut que vous ne souhaitiez pas certaines fonctionnalités de vos modèles basées sur la compréhension de l'entreprise que vous souhaitiez supprimer.


0

Dans le cas du lasso, le prétraitement des données pour supprimer les éléments nuisibles est en fait assez courant. Pour un article récent sur les moyens d'y parvenir, veuillez consulter les tests de dépistage des problèmes de lasso de Xiang et al . La motivation commune mentionnée dans les articles que j'ai vus est de réduire la charge de calcul liée au calcul de la solution.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.