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?