Sélection des fonctionnalités pour le modèle «final» lors de la validation croisée en apprentissage automatique

76

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.

  1. Sélectionnez un échantillon comme ensemble de test
  2. Sur les échantillons restants, sélectionnez la fonction
  3. Appliquer l'algorithme d'apprentissage machine aux échantillons restants en utilisant les fonctionnalités sélectionnées
  4. Teste si le test est correctement classé
  5. 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.

danielsbrewer
la source
Je devrais dire, pour une divulgation complète, que j'ai déjà posté ceci dans la liste des
bioconducteurs
Veuillez résumer les résultats des bioconducteurs ici?
Shane le

Réponses:

39

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:np

  1. Cutler, A., Cutler, DR et Stevens, JR (2009). Méthodes basées sur des arbres, dans l'analyse de données de grande dimension dans la recherche sur le cancer , Li, X. et Xu, R. (éd.), P. 83-101, Springer.
  2. Saeys, Y., Inza, I. et Larrañaga, P. (2007). Un examen des techniques de sélection des caractéristiques en bioinformatique. Bioinformatics , 23 (19) : 2507-2517.
  3. Díaz-Uriarte, R., Alvarez de Andrés, S. (2006). Sélection de gènes et classification des données de puces à ADN utilisant des forêts aléatoires. BMC Bioinformatics , 7 : 3.
  4. Diaz-Uriarte, R. (2007). GeneSrF et varSelRF: un outil Web et un progiciel R pour la sélection et la classification de gènes par forêt aléatoire. BMC Bioinformatics , 8 : 328

Puisque vous parlez de SVM, vous pouvez rechercher un SVM pénalisé .

chl
la source
Merci pour ça. Je ne suis pas particulièrement vendu sur SVM, juste en utilisant cela comme exemple. Donc, si vous avez utilisé des arbres aléatoires, vous n'avez pas à faire de validation croisée? Est-ce correct.
danielsbrewer
7
oui, les RF incluent un échantillonnage aléatoire de variables (typiquement ) lors de la croissance d'un arbre et chaque arbre est basé sur un échantillon d'individus boosté. une importance variable est calculée sur des échantillons dits «sans sac» (ceux qui ne sont pas utilisés pour construire l'arbre de décision) en utilisant une technique de permutation. L'algorithme est répété pour m arbres (m = 500 par défaut) et les résultats sont moyennés pour compenser l'incertitude au niveau de l'arbre (amplification). p
chl
3
Il est important que cela s'appelle Random Forest, pas Random Trees; vous pouvez avoir des problèmes avec Google.
1
+1, bonne réponse et fortuite pour moi - merci beaucoup pour les références papier, en particulier la critique.
ars
Avec suffisamment de données, ne serait-il pas préférable de mettre en place un ensemble de tests, d'effectuer une procédure sur l'ensemble d'apprentissage afin d'optimiser les paramètres du modèle, d'adapter l'ensemble du train (et d'appeler celui-ci le classificateur "final"), puis d'évaluer le modèle final sur le plateau de test?
utilisateur0
40

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)

Dikran Marsupial
la source
17

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

Joris Meys
la source
9

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.nn1n

Aniko
la source
Je pense qu’il ya encore un problème de généralisation lorsqu’on utilise le même échantillon (1) pour évaluer les performances de classification / prédiction du classificateur lors du réglage de ses paramètres (éventuellement, avec la sélection de caractéristiques) et (2) l’utilisation à tour de rôle de ses prédictions sur l’ensemble du jeu de données. En fait, vous brisez le contrôle exercé sur la suralimentation qui a été élaboré à l'aide de la validation croisée. Hastie et al. fournir une belle illustration des pièges CV, esp. wrt. sélection des fonctionnalités, dans leur ouvrage ESL, § 7.10.2 de la 2e édition.
chl
@chl: qui a parlé des paramètres de réglage? Si des opérations supplémentaires sont effectuées, elles doivent également être répétées lors de la validation croisée. Modifier clairement votre algorithme jusqu'à obtenir de bons taux d'erreur validés de manière croisée constitue une "triche". Au fait, je conviens que la validation croisée, en particulier l’abandon progressif, n’est pas si génial.
Aniko
Non, ce n'est pas de la triche, car CV vous montre approximativement le comportement de l'algorithme sur les nouvelles données. Vous devez simplement vous assurer que vous n'avez pas choisi quelque chose en fonction de l'ensemble (il s'agit d'une fuite d'informations sur la structure de l'ensemble complet, qui peut donc biaiser immédiatement toutes les pièces du train).
@mbq - Ankino a raison, ajuster votre modèle afin de minimiser une statistique de CV est une "triche" et la statistique de CV du modèle final présentera un biais optimiste substantiel. La raison en est que la statistique CV a une variance non négligeable (car elle est évaluée sur un ensemble fini de données) et donc si vous optimisez directement la statistique CV, vous pouvez la sur-ajuster et vous pouvez vous retrouver avec un modèle. cela se généralise moins bien que celui avec lequel vous avez commencé. Pour une démonstration de cela, dans un contexte d'apprentissage automatique, voir jmlr.csail.mit.edu/papers/v11/cawley10a.html Solution: Utilisez imbriqué XVAL
Dikran Marsupial le
1

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.

FMZ
la source
-1

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.

shabbychef
la source
Oh mon, encore une fois; avez-vous lu le titre de cet article?
2
Ok, pour être clair - je ne dis pas que LOOCV est une bonne idée pour un grand nombre d'objets; évidemment ce n'est pas le cas, mais Shao n'est pas applicable ici. En effet, dans la plupart des cas, les règles relatives aux LM ne valent pas pour ML.
2
On peut également se demander si les résultats asymptotiques sont d’une utilité pratique lorsqu’on examine des jeux de données comportant un grand nombre d’entités et relativement peu de régularités. Dans ce cas, la variance de la procédure aura probablement une plus grande importance pratique que les biais ou la cohérence. La valeur principale de LOOCV réside dans le fait que, pour de nombreux modèles, elle peut être mise en œuvre avec un coût de calcul négligeable. Par conséquent, même si sa variance est supérieure à celle du bootstrap, elle peut constituer la seule approche réalisable dans les limites du budget de calcul disponible. C'est pourquoi je l'utilise, mais j'utilise autre chose pour l'évaluation des performances!
Dikran Marsupial