Quelle est la sélection de variable / caractéristique que vous préférez pour la classification binaire quand il y a beaucoup plus de variables / caractéristique que d'observations dans l'ensemble d'apprentissage? Le but ici est de discuter de la procédure de sélection des caractéristiques qui réduit le mieux l'erreur de classification.
Nous pouvons fixer des notations pour la cohérence: pour , soit \ {x_1 ^ i, \ dots, x_ {n_i} ^ i \} l'ensemble d'apprentissage des observations du groupe i . Donc n_0 + n_1 = n est la taille de l'ensemble d'apprentissage. Nous définissons p comme le nombre d'entités (c'est-à-dire la dimension de l'espace d'entités). Soit x [i] la i- ème coordonnée de x \ in \ mathbb {R} ^ p .{ x i 1 , … , x i n i } i n 0 + n 1 = n p x [ i ] i x ∈ R p
Veuillez donner des références complètes si vous ne pouvez pas donner les détails.
EDIT (mis à jour en continu): Procédures proposées dans les réponses ci-dessous
- Sélection avancée gourmande Procédure de sélection variable pour la classification binaire
- Élimination en amont Procédure de sélection variable pour la classification binaire
- Balayage Metropolis / MCMC Procédure de sélection des variables pour la classification binaire
- régression logistique pénalisée Procédure de sélection variable pour la classification binaire
Comme il s'agit d'un wiki communautaire, il peut y avoir plus de discussion et de mise à jour
J'ai une remarque: dans un certain sens, vous donnez tous une procédure qui permet de classer les variables mais pas la sélection des variables (vous êtes assez évasif sur la façon de sélectionner le nombre de fonctionnalités, je suppose que vous utilisez tous la validation croisée?) Pouvez-vous améliorer les réponses dans ce sens? (comme il s'agit d'un wiki communautaire, vous n'avez pas besoin d'être le rédacteur de réponses pour ajouter des informations sur la façon de sélectionner le nombre de variables? J'ai ouvert une question dans ce sens ici Validation croisée en très haute dimension (pour sélectionner le nombre de variables utilisées dans la classification dimensionnelle très élevée) )
la source
Réponses:
Une approche très populaire est la régression logistique pénalisée, dans laquelle on maximise la somme du log-vraisemblance et un terme de pénalisation composé de la norme L1 ("lasso"), de la norme L2 ("crête"), une combinaison des deux ("élastique"), ou une pénalité associée à des groupes de variables ("groupe lasso"). Cette approche a de nombreux avantages:
la source
J'ai une légère préférence pour Random Forests de Leo Breiman & Adele Cutleer pour plusieurs raisons:
Certains auteurs ont fait valoir qu'il fonctionnait aussi bien que les SVM pénalisés ou les Gradient Boosting Machines (voir, par exemple, Cutler et al., 2009, pour ce dernier point).
Une couverture complète de ses applications ou avantages peut être hors du sujet, donc je suggère les éléments d'apprentissage statistique de Hastie et al. (chap.15) et Sayes et al. (2007) pour d'autres lectures.
Enfin, il a une belle implémentation en R, avec le package randomForest . D'autres packages R l'étendent ou l'utilisent également, par exemple party et caret .
Les références:
Cutler, A., Cutler, DR et Stevens, JR (2009). Tree-Based Methods, dans High-Dimensional Data Analysis in Cancer Research , Li, X. et Xu, R. (éd.), Pp. 83-101, Springer.
Saeys, Y., Inza, I. et Larrañaga, P. (2007). Un examen des techniques de sélection des fonctionnalités en bioinformatique. Bioinformatics , 23 (19) : 2507-2517.
la source
Balayage Metropolis / MCMC
dE
la différence l'erreur sur le nouvel ensemble moins l'erreur sur l'ensemble précédent.min(1;exp(-beta*dE))
acceptez ce changement, sinon rejetez-le et essayez un autre changement aléatoire.Vous pouvez l'étendre avec un contrôle plus sage des
beta
paramètres. Le moyen le plus simple consiste à utiliser le recuit simulé lorsque vous augmentezbeta
(abaissez la température en analogie physique) au fil du temps pour réduire les fluctuations et conduire l'algorithme vers le minimum. Il est plus difficile d'utiliser l' échange de répliques .la source
Si vous êtes uniquement intéressé par les performances de généralisation, il vaut probablement mieux ne pas effectuer de sélection de fonctionnalités et utiliser plutôt la régularisation (par exemple, régression de crête). Il y a eu plusieurs défis ouverts dans la communauté du machine learning sur la sélection des fonctionnalités, et les méthodes qui reposent sur la régularisation plutôt que sur la sélection des fonctionnalités fonctionnent généralement au moins aussi bien, sinon mieux.
la source
Sélection avant gourmande.
Les étapes de cette méthode sont les suivantes:
la source
Élimination en arrière.
Commencez avec l'ensemble complet, puis entraînez de manière itérative le classificateur sur les fonctionnalités restantes et supprimez la fonctionnalité de la plus petite importance, arrêtez-vous lorsque l'erreur de classificateur augmente / devient rapidement élevée inacceptable.
L'importance peut même être obtenue en supprimant de manière itérative chaque fonctionnalité et en vérifiant l'augmentation d'erreur ou en l'adaptant au classificateur s'il la produit (comme dans le cas de la forêt aléatoire).
la source
(n - k - p) / (k - 1) * ...
avecn
le nombre d'observations,k
le nombre de classes (2 ici) etp
le nombre de variables.n - 2 - p < 0
quandn < p + 2
(ce qui est le cas ici) qui mène àF < 0
. Ce ne serait pas un problème?