Sélection de fonctionnalités pour les machines à vecteurs de support

9

Ma question est triple

Dans le cadre des machines à vecteurs de support "Kernelized"

  1. La sélection des variables / fonctionnalités est-elle souhaitable - d'autant plus que nous régularisons le paramètre C pour éviter le sur-ajustement et que le principal motif derrière l'introduction de noyaux dans un SVM est d'augmenter la dimensionnalité du problème, dans un tel cas, réduire les dimensions par réduction des paramètres semble contre-intuitif
  2. Si la réponse à la 1ère question est "NON", alors, à quelles conditions la réponse changerait-elle que l'on devrait garder à l'esprit?
  3. Existe-t-il de bonnes méthodes qui ont été essayées pour réduire les fonctionnalités des SVM dans la bibliothèque scikit-learn de python - j'ai essayé la méthode SelectFpr et je recherche des personnes ayant des expériences avec différentes méthodes.
Nitin Srivastava
la source
1
La sélection des fonctionnalités sera toujours utile à moins que vos fonctionnalités initiales ne soient au départ de très haute qualité. Sklearn propose de nombreuses bibliothèques de sélection de fonctionnalités différentes ( scikit-learn.org/stable/modules/feature_selection.html ) Je suis moi-même partisan de RFE.
David
1
Vous n'avez pas mentionné votre contexte - notez que si c'est dans un contexte commercial, chaque fonctionnalité qui reste dans le modèle va nécessiter une maintenance à un certain niveau - il y a un coût littéral en argent si vous avez plus de variables, dans le sens où cela nécessite, par exemple, plus d'efforts de collecte de données, de temps DBA et de programmation. Cette considération ne s'applique évidemment pas si c'est pour une maquette Kaggle ou similaire, et si l'utilisation de 200 fonctionnalités supplémentaires dans l'ensemble de données vous donne une augmentation de 0,01% des performances, vous êtes dans l'argent.
Robert de Graaf

Réponses:

3

Personnellement, j'aime diviser la sélection de fonctionnalités en deux:

  • sélection de fonctions non supervisée
  • sélection de fonctions supervisée

La sélection de fonctionnalités non supervisée est des éléments comme le clustering ou PCA où vous sélectionnez la gamme de fonctionnalités la moins redondante (ou créez des fonctionnalités avec peu de redondance). La sélection supervisée des fonctionnalités est des choses comme Lasso où vous sélectionnez les fonctionnalités avec le plus de puissance prédictive.

Personnellement, je préfère généralement ce que j'appelle la sélection de fonctionnalités supervisée. Ainsi, lorsque j'utilise une régression linéaire, je sélectionne des entités basées sur Lasso. Des méthodes similaires existent pour induire la rareté des réseaux de neurones.

Mais en effet, je ne vois pas comment j'y arriverais dans une méthode utilisant des noyaux, donc vous feriez probablement mieux d'utiliser ce que j'appelle une sélection de fonctionnalités non supervisée.

EDIT: vous avez également posé des questions sur la régularisation. Je considère que la régularisation aide principalement parce que nous travaillons avec des échantillons finis et donc la distribution de la formation et des tests sera toujours quelque peu différente, et vous voulez que votre modèle ne soit pas trop adapté. Je ne suis pas sûr que cela supprime la nécessité d'éviter de sélectionner des fonctionnalités (si vous en avez en effet trop). Je pense que la sélection de fonctionnalités (ou la création d'un sous-ensemble plus petit) aide à rendre les fonctionnalités que vous avez plus robustes et évite au modèle d'apprendre des corrélations parasites. Donc, la régularisation aide, mais pas sûr que ce soit une alternative complète. Mais je n'y ai pas suffisamment réfléchi.

Ricardo Cruz
la source