Je suis un peu confus au sujet de la sélection des fonctionnalités et de l'apprentissage automatique, et je me demandais si vous pouviez m'aider. J'ai un jeu de données de micropuces qui est classé en deux groupes et qui comporte des milliers de fonctionnalités. Mon objectif est d'obtenir un petit nombre de gènes (mes caractéristiques) (10 à 20) dans une signature que je pourrai théoriquement appliquer à d'autres ensembles de données afin de classifier de manière optimale ces échantillons. Étant donné que je n'ai pas beaucoup d'échantillons (<100), je n'utilise pas de jeu de test et d'apprentissage, mais j'utilise la validation croisée Leave-one-out pour aider à déterminer la robustesse. J'ai lu qu'il fallait sélectionner les fonctionnalités pour chaque groupe d'échantillons, c.-à-d.
- Sélectionnez un échantillon comme ensemble de test
- Sur les échantillons restants, sélectionnez la fonction
- Appliquer l'algorithme d'apprentissage machine aux échantillons restants en utilisant les fonctionnalités sélectionnées
- Teste si le test est correctement classé
- Aller à 1.
Si vous faites cela, vous obtiendrez peut-être différents gènes à chaque fois, alors comment obtenez-vous votre classificateur de gène «final» optimal? c'est-à-dire quelle est l'étape 6.
Ce que je veux dire par optimal est la collection de gènes que toute étude ultérieure devrait utiliser. Par exemple, supposons que j'ai un ensemble de données cancer / normal et que je souhaite trouver les 10 gènes les plus importants permettant de classer le type de tumeur en fonction d'un SVM. J'aimerais connaître l'ensemble des gènes plus les paramètres SVM qui pourraient être utilisés dans d'autres expériences pour voir s'il pouvait être utilisé comme test de diagnostic.
Réponses:
C'est une très bonne question à laquelle je me suis confronté lorsque je travaillais avec les données des SNP ... Et je n'ai trouvé aucune réponse évidente dans la littérature.
Que vous utilisiez LOO ou K-fold CV, vous vous retrouverez avec des fonctionnalités différentes car l'itération de validation croisée doit être la boucle la plus externe, comme vous l'avez dit. Vous pouvez penser à une sorte de système de vote qui classerait les n-vecteurs des caractéristiques que vous avez obtenues de votre LOO-CV (vous ne vous souvenez plus du journal, mais cela vaut la peine de consulter le travail de Harald Binder ou d' Antoine Cornuéjols ). En l'absence d'un nouvel échantillon de test, ce qui est généralement fait consiste à réappliquer l'algorithme ML à l'ensemble de l'échantillon une fois que vous avez trouvé ses paramètres optimisés pour la validation croisée. Mais en procédant de cette façon, vous ne pouvez pas vous assurer qu'il n'y a pas de surajustement (car l'échantillon était déjà utilisé pour l'optimisation du modèle).
Ou bien, vous pouvez également utiliser des méthodes intégrées qui vous fournissent des fonctionnalités classées par le biais d'une mesure d'importance variable, comme dans Random Forests (RF). Comme validation croisée est inclus dans RFS, vous n'avez pas à vous soucier de la cas ou la malédiction de la dimensionnalité. Voici de beaux articles sur leurs applications dans les études d'expression génique:n≪p
Puisque vous parlez de SVM, vous pouvez rechercher un SVM pénalisé .
la source
En principe:
Faites vos prévisions en utilisant un seul modèle formé sur l'ensemble du jeu de données (il n'y a donc qu'un seul ensemble d'entités). La validation croisée n'est utilisée que pour estimer la performance prédictive du modèle unique formé sur l'ensemble de données. En recourant à la validation croisée, il est VITAL de répéter dans chaque repli toute la procédure utilisée pour s’adapter au modèle principal, sans quoi vous risquez de vous retrouver avec un biais substantiellement optimiste en matière de performances.
Pour voir pourquoi cela se produit, considérons un problème de classification binaire avec 1000 entités binaires mais seulement 100 observations, où les observations et les observations sont purement aléatoires. Il n'existe donc aucune relation statistique entre les entités et les observations. Si nous formons un modèle primaire sur l'ensemble de données complet, nous pouvons toujours obtenir une erreur zéro sur l'ensemble de formation, car il y a plus de fonctionnalités que de cas. Nous pouvons même trouver un sous-ensemble de fonctionnalités "informatives" (qui se trouvent être corrélées par hasard). Si nous effectuons ensuite une validation croisée en utilisant uniquement ces fonctionnalités, nous obtiendrons une estimation de la performance meilleure que celle de la spéculation aléatoire. La raison en est que dans chaque étape de la procédure de validation croisée, il existe des informations sur les cas retenus utilisés pour les tests, car les fonctions ont été choisies car elles étaient toutes bonnes pour prédire, y compris ceux tenus. Bien entendu, le taux d'erreur réel sera de 0,5.
Si nous adoptons la procédure appropriée et effectuons la sélection des caractéristiques dans chaque pli, il n’y aura plus aucune information sur les cas suspendus dans le choix des caractéristiques utilisées dans ce pli. Si vous utilisez la procédure appropriée, dans ce cas, vous obtiendrez un taux d'erreur d'environ 0,5 (bien qu'il puisse varier un peu pour différentes réalisations de l'ensemble de données).
Les bons articles à lire sont:
Christophe Ambroise, Geoffrey J. McLachlan, "Biais de sélection dans l'extraction de gènes sur la base de données d'expression de microréseaux", PNAS http://www.pnas.org/content/99/10/6562.abstract
qui est très pertinent pour le PO et
Gavin C. Cawley, Nicola LC Talbot, "Sur-ajustement dans la sélection du modèle et biais de sélection ultérieurs dans l'évaluation de la performance", JMLR 11 (Jul): 2079-2107, 2010 http://jmlr.csail.mit.edu/papers /v11/cawley10a.html
ce qui démontre que la même chose peut facilement se produire lors de la sélection du modèle (par exemple, le réglage des hyper-paramètres d'un SVM, qui doivent également être répétés à chaque itération de la procédure CV).
En pratique:
Je recommanderais d'utiliser Bagging et d'utiliser l'erreur hors du sac pour estimer les performances. Vous obtiendrez un modèle de comité utilisant de nombreuses fonctionnalités, mais c'est en fait une bonne chose. Si vous utilisez un seul modèle, il est probable que vous surpasserez le critère de sélection des entités et que vous vous retrouverez avec un modèle qui fournit des prévisions plus mauvaises qu'un modèle qui utilise un plus grand nombre d'entités.
Le livre d’Alan Millers sur la sélection de sous-ensembles en régression (monographies de Chapman et Hall sur les statistiques et les probabilités appliquées, volume 95) donne le bon conseil (page 221) selon lequel si la performance prédictive est la chose la plus importante, ne faites aucune sélection de caractéristiques. , utilisez simplement la régression de crête à la place. Et c'est dans un livre sur la sélection de sous-ensembles !!! ; o)
la source
Pour ajouter à chl: Lorsque vous utilisez des machines à vecteurs de support, une méthode de pénalisation fortement recommandée est le filet élastique. Cette méthode ramènera les coefficients à zéro et, en théorie, conservera les coefficients les plus stables du modèle. Initialement, il était utilisé dans un cadre de régression, mais il est facilement étendu pour une utilisation avec des machines à vecteurs de support.
La publication originale : Zou et Hastie (2005): Régularisation et sélection de variables via le filet élastique. JRStatist.Soc. B, 67-2, pp.301-320
Filet élastique pour SVM : Zhu & Zou (2007): Sélection de variables pour la machine à vecteurs de support: Tendances du calcul neuronal, chapitre 2 (Editeurs: Chen et Wang)
Améliorations apportées au filet élastique Jun-Tao et Ying-Min (2010): un filet élastique amélioré pour la classification du cancer et la sélection des gènes: Acta Automatica Sinica, 36-7, pp.976-981
la source
En tant qu'étape 6 (ou 0), vous exécutez l'algorithme de détection de fonction sur l'intégralité du jeu de données.
La logique est la suivante: vous devez penser à la validation croisée en tant que méthode permettant de connaître les propriétés de la procédure utilisée pour sélectionner les fonctionnalités. Il répond à la question: "si j'ai des données et que j'effectue cette procédure, alors quel est le taux d'erreur pour classifier un nouvel échantillon?". Une fois que vous connaissez la réponse, vous pouvez utiliser la procédure (sélection de fonctionnalités + développement de règles de classification) sur l'ensemble des données. Les personnes aiment bien les laisser-aller, car les propriétés prédictives dépendent généralement de la taille de l'échantillon et que est généralement suffisamment proche de pour ne pas avoir beaucoup d'importance.nn−1 n
la source
Voici comment je sélectionne les fonctionnalités. Supposons que sur la base de certaines connaissances, il existe 2 modèles à comparer. Le modèle A utilise les fonctionnalités n ° 1 à n °. 10. Le modèle B utilise n ° 11 à n °. 20. J'appliquerai LOO CV au modèle A pour obtenir sa performance hors échantillon. Faites la même chose pour le modèle B puis comparez-les.
la source
Je ne suis pas sûr des problèmes de classification, mais dans le cas de la sélection des fonctionnalités pour les problèmes de régression, Jun Shao a montré que l'option Laisser un CV est asymptotique , c'est-à-dire que la probabilité de sélectionner le sous-ensemble approprié de fonctionnalités ne converge pas vers 1, le nombre d'échantillons augmente. D'un point de vue pratique, Shao recommande une procédure de validation croisée de Monte-Carlo ou une procédure d'exclusion.
la source