Antecedentes del problema: como parte de mi investigación, he escrito dos algoritmos que pueden seleccionar un conjunto de características de un conjunto de datos (datos de expresión génica de pacientes con cáncer). Estas características luego se prueban para ver qué tan bien pueden clasificar una muestra invisible como cancerosa o no cancerosa. Para cada ejecución del algoritmo, se genera una solución (un conjunto de características) y se prueba en Z muestras no vistas. Porcentaje precisión de la solución se calcula de esta manera: (correct classifications / Z) * 100
.
Tengo dos algoritmos: algoritmo X y algoritmo Y
Tengo tres conjuntos de datos separados (diferentes tipos de cáncer): conjunto de datos A, conjunto de datos B y conjunto de datos C. Estos conjuntos de datos son muy diferentes entre sí. No tienen el mismo número de muestras o el mismo número de mediciones (características) por muestra.
He ejecutado cada algoritmo 10 veces en cada conjunto de datos. Entonces, el algoritmo X tiene 10 resultados del conjunto de datos A, 10 del conjunto de datos B y 10 del conjunto de datos C. En general, el algoritmo X tiene 30 resultados.
Mi problema: me gustaría ver si el rendimiento combinado del algoritmo X en los tres conjuntos de datos es estadísticamente significativamente diferente del rendimiento combinado del algoritmo Y.
¿Es posible para mí combinar resultados para el algoritmo X de cada conjunto de datos en un solo conjunto de resultados? De esta manera, tendría 30 resultados estandarizados para el algoritmo X y 30 resultados estandarizados para el algoritmo Y. Luego, puedo usar la prueba t para ver si hay una diferencia significativa entre los dos métodos.
Editar: estos son algoritmos evolutivos, por lo que devuelven una solución ligeramente diferente cada vez que se ejecutan. Sin embargo, si hay una característica en una muestra que, cuando está presente, puede clasificar fuertemente la muestra como cancerosa o no cancerosa, entonces esa característica se seleccionará casi cada vez que se ejecute el algoritmo.
Obtengo resultados ligeramente diferentes para cada una de las 10 ejecuciones debido a las siguientes razones:
- Estos algoritmos se siembran al azar.
- Uso validación de submuestreo aleatorio repetido (10 repeticiones).
- Los conjuntos de datos que uso (microarrays de ADN y Proteómica) son muy difíciles de trabajar en el sentido de que hay muchos óptimos locales en los que el algoritmo puede quedarse atrapado.
- Hay muchas interacciones entre funciones y entre subconjuntos que me gustaría detectar.
- Entreno 50 cromosomas y no están restringidos a ninguna longitud en particular. Son libres de crecer y encogerse (aunque la presión de selección los guía hacia longitudes más cortas). Esto también introduce alguna variación en el resultado final.
¡Dicho esto, el algoritmo casi siempre selecciona un subconjunto particular de características!
Aquí hay una muestra de mis resultados (aquí solo se muestran 4 ejecuciones de 10 para cada algoritmo):
Conjunto de datos / ejecutar Algoritmo X Algoritmo 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
Como puede ver, he reunido resultados para dos algoritmos de tres conjuntos de datos. Puedo hacer la prueba de Kruskal-Wallis con estos datos, pero ¿será válido? Pregunto esto porque:
- No estoy seguro de que las precisiones en diferentes conjuntos de datos sean conmensurables. Si no lo son, entonces juntarlos como lo he hecho no tendría sentido y cualquier prueba estadística realizada en ellos tampoco tendría sentido.
- Cuando se juntan precisiones como esta, el resultado general es susceptible de valores atípicos. El excelente rendimiento de un algoritmo en un conjunto de datos puede enmascarar su rendimiento promedio en otro conjunto de datos.
No puedo usar t-test en este caso tampoco, esto es porque:
- Conmensurabilidad: la prueba t solo tiene sentido cuando las diferencias sobre los conjuntos de datos son proporcionales.
- La prueba t requiere que las diferencias entre los dos algoritmos comparados se distribuyan normalmente, no hay forma (al menos que yo sepa) de garantizar esta condición en mi caso.
- La prueba t se ve afectada por valores atípicos que sesgan las estadísticas de la prueba y disminuyen la potencia de la prueba al aumentar el error estándar estimado.
¿Qué piensas? ¿Cómo puedo hacer una comparación entre el algoritmo X e Y en este caso?
Respuestas:
A menos que sus algoritmos tengan grandes diferencias en el rendimiento y tenga un gran número de casos de prueba, no podrá detectar diferencias simplemente observando el rendimiento.
Sin embargo, puede hacer uso de un diseño pareado:
Para la comparación, eche un vistazo a la prueba de McNemar . La idea detrás de explotar un diseño emparejado aquí es que todos los casos en que ambos algoritmos fueron correctos y aquellos en los que ambos se equivocaron no ayudan a distinguir los algoritmos. Pero si un algoritmo es mejor que el otro, debería haber muchos casos en los que el mejor algoritmo funcionó correctamente, pero no el peor, y pocos que fueron predichos correctamente por el peor método pero incorrectos por el mejor.
Además, Cawley y Talbot: sobre el ajuste excesivo en la selección del modelo y el sesgo de selección posterior en la evaluación del rendimiento, JMLR, 2010, 1, 2079-2107. Es muy relevante.
Debido a los aspectos aleatorios de sus algoritmos, también querrá verificar la misma división del mismo conjunto de datos varias veces. A partir de eso, puede estimar la variación entre diferentes ejecuciones que, de lo contrario, son iguales. Puede ser difícil juzgar cuán diferentes son los conjuntos de variables seleccionados. Pero si su objetivo final es el rendimiento predictivo, también puede usar la variación entre las predicciones del mismo caso de prueba durante diferentes ejecuciones para medir la estabilidad de los modelos resultantes.
Entonces también querrá verificar (como se indicó anteriormente) la variación debido a las diferentes divisiones del conjunto de datos y poner esto en relación con la primera variación.
Por lo general, se supone que las fracciones (como% de muestras correctamente reconocidas) se distribuyen binomialmente , en algunos casos es posible una aproximación normal, pero la letra pequeña para esto casi nunca se cumple en campos con matrices de datos anchas. Esto tiene la consecuencia de que los intervalos de confianza son enormes para un pequeño número de casos de prueba. En R,
binom::binom.confint
calcula los intervalos de confianza para la proporción verdadera dado el no. de pruebas y no. de éxitosFinalmente, mi experiencia con la optimización genética para datos espectroscópicos (mi tesis de Diplom en alemán) sugiere que también debe verificar los errores de entrenamiento. Los GA tienden a sobreajustarse muy rápido, llegando a errores de entrenamiento muy bajos. Los errores de entrenamiento bajos no solo son demasiado optimistas, sino que también tienen la consecuencia de que el GA no puede diferenciar entre muchos modelos que parecen ser igualmente perfectos. (Es posible que tenga menos problemas con eso si el GA internamente también submuestra aleatoriamente el tren y los conjuntos de pruebas internas).
Artículos en inglés:
orientado a la aplicación, muestra cómo interpretamos las variantes seleccionadas y eso existen "cambios" conocidos en las selecciones que son equivalentes por razones químicas.
Beleites y Salzer: Evaluación y mejora de la estabilidad de los modelos quimiométricos en situaciones de pequeño tamaño de muestra, Anal Bioanal Chem, 2008, 390, 1261 - 1271.
analiza los intervalos de confianza binomiales para la tasa de aciertos, etc., por qué no pudimos calcularlo. En cambio, usamos la variación observada sobre la validación cruzada repetida. La discusión sobre el cálculo aproximado para el tamaño efectivo de la muestra debe tomarse con precaución, hoy en día diría que está en algún lugar entre engañoso e incorrecto (supongo que eso está avanzando en la ciencia :-)).
higo. 11 muestra los resultados de la prueba independiente (validación cruzada externa con división por muestra) de 40 modelos diferentes para la misma muestra. La estimación interna correspondiente del GA fue 97.5% de predicciones correctas (un modelo tenía todos los espectros de la muestra incorrectos, los modelos restantes eran correctos para todos los espectros, no se muestran en el documento). Este es el problema con el sobreajuste que mencioné anteriormente.
En este reciente artículo Beleites, Neugebauer, Bocklitz, Krafft y Popp: Planificación del tamaño de muestra para modelos de clasificación, Anal Chem Acta, 2013, 760, 25 - 33. ilustramos los problemas con la estimación del error de clasificación con muy pocos pacientes / muestras independientes. También ilustra cómo estimar los números de pacientes necesarios si no puede hacer pruebas emparejadas.
fuente
¡Estás ejecutando una selección más fuerte con GA 10 veces y cada vez que obtienes un resultado diferente!
Primero, si comienza por la misma semilla, siempre debe obtener el mismo subconjunto de featuer seleccionado. Sin embargo, si está utilizando una semilla aleatoria, también, muy probablemente, debería obtener casi las mismas características seleccionadas. Una razón para obtener el mismo featuer seleccionado se indica en su publicación. Además, para una comparación justa, puede usar las mismas semillas en las corridas de A para los experimentos de B.
En segundo lugar, puede usar validación cruzada o bootstraping para la comparación. De esta manera obtienes una comparación más representativa. En este caso, hay una fuente de variación, es decir, muestras de entrenamiento aleatorias que parecen más fuertes que las semillas aleatorias. Por lo tanto, la comparación puede revelar qué algorthim es realmente mejor.
Finalmente, puede usar la prueba t como propuso o usar directamente algunas pruebas no paramétricas como la prueba de Kruskal-Wallis.
fuente