Contexte du problème: Dans le cadre de mes recherches, j'ai écrit deux algorithmes qui peuvent sélectionner un ensemble de fonctionnalités à partir d'un ensemble de données (données d'expression génique de patients cancéreux). Ces caractéristiques sont ensuite testées pour voir dans quelle mesure elles peuvent classer un échantillon invisible comme cancéreux ou non cancéreux. Pour chaque exécution de l'algorithme, une solution (un ensemble de fonctionnalités) est générée et testée sur Z échantillons invisibles. Est calculé en pourcentage de précision de la solution comme ceci: (correct classifications / Z) * 100
.
J'ai deux algorithmes: l'algorithme X et l'algorithme Y
J'ai trois ensembles de données distincts (différents cancers): ensemble de données A, ensemble de données B et ensemble de données C. Ces ensembles de données sont très différents les uns des autres. Ils n'ont pas le même nombre d'échantillons ou le même nombre de mesures (caractéristiques) par échantillon.
J'ai exécuté chaque algorithme 10 fois sur chaque ensemble de données. Ainsi, l'algorithme X a 10 résultats de l'ensemble de données A, 10 de l'ensemble de données B et 10 de l'ensemble de données C. Globalement, l'algorithme X a 30 résultats.
Mon problème: je voudrais voir si les performances combinées de l'algorithme X dans les trois ensembles de données sont statistiquement significativement différentes des performances combinées de l'algorithme Y.
Est-il possible pour moi de combiner les résultats de l'algorithme X de chaque ensemble de données en un seul ensemble de résultats? De cette façon, j'aurais 30 résultats standardisés pour l'algorithme X et 30 résultats standardisés pour l'algorithme Y. Je peux ensuite utiliser le test t pour voir s'il y a une différence significative entre les deux méthodes.
Modifier - Ce sont des algorithmes évolutionnaires, ils renvoient donc une solution légèrement différente à chaque exécution. Cependant, s'il y a une fonctionnalité dans un échantillon qui, lorsqu'elle est présente, peut fortement classer l'échantillon comme étant cancéreux ou non cancéreux, alors cette fonctionnalité sera sélectionnée presque chaque fois que l'algorithme est exécuté.
Je reçois légèrement différents résultats pour chacun des 10 pistes pour les raisons suivantes:
- Ces algorithmes sont répartis aléatoirement.
- J'utilise une validation de sous-échantillonnage aléatoire répétée (10 répétitions).
- Les ensembles de données que j'utilise (puces à ADN et protéomique) sont très difficiles à travailler dans le sens où il existe de nombreux optima locaux dans lesquels l'algorithme peut rester coincé.
- Il y a beaucoup d'interactions inter-fonctionnalités et inter-sous-ensembles que je voudrais détecter.
- J'entraîne 50 chromosomes et ils ne sont pas limités à une longueur particulière. Ils sont libres de croître et de rétrécir (bien que la pression de sélection les guide vers des longueurs plus courtes). Cela introduit également des variations dans le résultat final.
Cela dit, l'algorithme sélectionne presque toujours un sous-ensemble particulier de fonctionnalités!
Voici un échantillon de mes résultats (seulement 4 exécutions sur 10 pour chaque algorithme sont affichées ici):
Jeu de données / exécution Algorithme X Algorithme Y A 1 90,91 90,91 A 2 90,91 95,45 A 3 90,91 90,91 A 4 90,91 90,91 B 1 100 100 B 2 100 100 B 3 95,65 100 B 4 95,65 86,96 C 1 90,32 87,10 C 2 70,97 80,65 C 3 96,77 83,87 C 4 80,65 83,87
Comme vous pouvez le voir, j'ai rassemblé les résultats de deux algorithmes de trois ensembles de données. Je peux faire un test de Kruskal-Wallis sur ces données mais sera-t-il valide? Je pose cette question car:
- Je ne suis pas sûr que les précisions dans les différents ensembles de données soient comparables. S'ils ne le sont pas, les rassembler comme je l'ai fait n'aurait aucun sens et tout test statistique effectué sur eux serait également vide de sens.
- Lorsque vous assemblez des précisions de cette manière, le résultat global est susceptible de valeurs aberrantes. Les excellentes performances d'un algorithme sur un ensemble de données peuvent masquer ses performances moyennes sur un autre ensemble de données.
Je ne peux pas non plus utiliser le test t dans ce cas, c'est parce que:
- Commensurabilité - le test t n'a de sens que lorsque les différences entre les ensembles de données sont proportionnées.
- Le test t nécessite que les différences entre les deux algorithmes comparés soient distribuées normalement, il n'y a aucun moyen (du moins que je sache) de garantir cette condition dans mon cas.
- Le test t est affecté par des valeurs aberrantes qui faussent les statistiques du test et diminuent la puissance du test en augmentant l'erreur standard estimée.
Qu'est-ce que tu penses? Comment puis-je faire une comparaison entre l'algorithme X et Y dans ce cas?
la source
Réponses:
À moins que vos algorithmes présentent d'énormes différences de performances et que vous ayez un grand nombre de cas de test, vous ne pourrez pas détecter les différences en regardant simplement les performances.
Cependant, vous pouvez utiliser une conception appairée:
Pour la comparaison, jetez un œil au test de McNemar . L'idée derrière l'exploitation d'une conception appariée ici est que tous les cas où les deux algorithmes se sont bien comportés et ceux qui se sont tous deux trompés ne vous aident pas à distinguer les algorithmes. Mais si un algorithme est meilleur que l'autre, il devrait y avoir de nombreux cas où le meilleur algorithme a eu raison mais pas le pire, et quelques-uns qui ont été prédits correctement par la pire méthode mais faux par le meilleur.
Aussi, Cawley et Talbot: Sur le sur-ajustement dans la sélection du modèle et les biais de sélection ultérieurs dans l'évaluation des performances, JMLR, 2010, 1, 2079-2107. est très pertinent.
En raison des aspects aléatoires de vos algorithmes, vous souhaiterez également vérifier plusieurs fois la même division du même ensemble de données. À partir de cela, vous pouvez estimer la variation entre différentes séries qui sont par ailleurs égales. Il peut être difficile de juger de la différence entre les ensembles de variables sélectionnés. Mais si votre objectif ultime est la performance prédictive, vous pouvez également utiliser la variation entre les prédictions du même scénario de test pendant différentes exécutions pour mesurer la stabilité des modèles résultants.
Vous voudrez ensuite également vérifier (comme indiqué ci-dessus) la variation due aux différentes divisions de l'ensemble de données et la mettre en relation avec la première variance.
Les fractions (comme les% d'échantillons correctement reconnus) sont généralement supposées être distribuées binomialement , dans certains cas une approximation normale est possible, mais les petits caractères pour cela ne se rencontrent presque jamais dans des champs avec de larges matrices de données. Cela a pour conséquence que les intervalles de confiance sont énormes pour un petit nombre de cas de test. Dans R,
binom::binom.confint
calcule les intervalles de confiance pour la vraie proportion étant donné non. de tests et non. de succès.Enfin, mon expérience avec l'optimisation génétique des données spectroscopiques (ma thèse Diplom en allemand) suggère que vous devriez également vérifier les erreurs de formation. Les GA ont tendance à s'adapter très rapidement, entraînant de très faibles erreurs d'entraînement. Les faibles erreurs de formation sont non seulement trop optimistes, mais elles ont également pour conséquence que l'AG ne peut pas différencier de nombreux modèles qui semblent également parfaits. (Vous pouvez avoir moins de problème avec cela si le GA en interne entraîne également des sous-échantillons aléatoires et des ensembles de tests internes).
Articles en anglais:
orienté application, montre comment nous interprétons les variantes sélectionnées et que il existe des "changements" connus dans les sélections qui sont équivalentes pour des raisons chimiques.
Beleites et Salzer: Évaluer et améliorer la stabilité des modèles chimiométriques dans des situations de petite taille d'échantillon, Anal Bioanal Chem, 2008, 390, 1261 - 1271.
discute des intervalles de confiance binomiaux pour le taux de succès, etc., pourquoi nous n'avons pas pu le calculer. Au lieu de cela, nous utilisons la variation observée sur la validation croisée répétée. La discussion sur l'estimation de la taille effective de l'échantillon doit être prise avec prudence, de nos jours je dirais que c'est quelque part entre trompeur et faux (je suppose que la science évolue :-)).
figure. 11 montre les résultats des tests indépendants (validation croisée externe avec division par spécimen) de 40 modèles différents pour le même spécimen. L'estimation interne correspondante de l'AG était de 97,5% de prédictions correctes (un modèle a obtenu tous les spectres du spécimen faux, les modèles restants étaient corrects pour tous les spectres - non présentés dans le document). C'est le problème de sur-ajustement que j'ai mentionné ci-dessus.
Dans cet article récent Beleites, Neugebauer, Bocklitz, Krafft et Popp: Sample Size Planning for Classification Models, Anal Chem Acta, 2013, 760, 25 - 33. nous illustrons les problèmes d'estimation d'erreur de classification avec trop peu de patients / échantillons indépendants. Montre également comment estimer le nombre de patients nécessaires si vous ne pouvez pas effectuer de tests par paires.
la source
Vous exécutez une sélection plus précise avec GA 10 fois et chaque fois que vous obtenez une sortie différente !!
Premièrement, si vous commencez par la même graine, vous devriez toujours obtenir le même sous-ensemble de caractères sélectionné. Cependant, si vous utilisez une graine aléatoire, vous devriez également obtenir presque les mêmes fonctionnalités sélectionnées. Une raison pour obtenir le même featuer sélectionné est indiquée dans votre message. De plus, pour une comparaison équitable, vous pouvez utiliser les mêmes graines dans les séries de A pour les expériences de B.
Deuxièmement, vous pouvez utiliser la validation croisée ou le bootstraping pour la comparaison. De cette façon, vous obtenez une comparaison plus représentative. Dans ce cas, il existe une source de variation, c'est-à-dire des échantillons d'apprentissage aléatoires qui semblent plus forts que les semences aléatoires. Ainsi, la comparaison peut révéler quel algorthim est vraiment meilleur.
Enfin, vous pouvez utiliser le test t comme vous l'avez proposé ou utiliser directement certains tests non paramétriques comme le test de Kruskal-Wallis.
la source