Tengo dos implementaciones de un algoritmo genético que se supone que se comportan de manera equivalente. Sin embargo, debido a restricciones técnicas que no se pueden resolver, su salida no es exactamente la misma, dada la misma entrada.
Aún así, me gustaría mostrar que no hay una diferencia de rendimiento significativa.
Tengo 20 ejecuciones con la misma configuración para cada uno de los dos algoritmos, usando diferentes semillas iniciales de números aleatorios. Para cada corrida y generación se registró el error mínimo de aptitud del mejor individuo de la población . El algoritmo emplea un mecanismo de preservación de élite, por lo que la aptitud del mejor individuo está disminuyendo monotónicamente. Una ejecución consta de 1000 generaciones, por lo que tengo 1000 valores por ejecución. No puedo obtener más datos, ya que los cálculos son muy caros.
¿Qué prueba debo emplear? Probablemente, una forma fácil sería comparar el error en las generaciones finales (de nuevo, ¿qué prueba usaría aquí)? Pero también se podría pensar en comparar el comportamiento de convergencia en general.
Respuestas:
¡Probar algoritmos estocásticos puede ser bastante complicado!
Trabajo en biología de sistemas y hay muchos simuladores estocásticos disponibles para simular un modelo. Probar estos simuladores es complicado ya que dos realizaciones de un solo modelo serán típicamente diferentes.
En los dsmts hemos calculado (analíticamente) el valor esperado y la varianza de un modelo en particular. Luego realizamos una prueba de hipótesis para determinar si un simulador difiere de la verdad. La Sección 3 de la guía del usuario proporciona los detalles. Esencialmente, hacemos una prueba t para los valores medios y una prueba de chi cuadrado para las varianzas.
En su caso, está comparando dos simuladores, por lo que debe usar una prueba t de dos muestras.
fuente
Tal vez podría medir la diferencia promedio entre dos ejecuciones del mismo algoritmo a la diferencia promedio entre dos ejecuciones de diferentes algoritmos. No resuelve el problema de cómo medir esa diferencia, pero podría ser un problema más manejable. Y los valores individuales de las series de tiempo alimentarían el cálculo de la diferencia en lugar de tener que ser tratados como puntos de datos individuales para ser evaluados entre sí (tampoco creo que la diferencia particular en el enésimo paso sea lo que realmente desea hacer declaraciones sobre).
Actualizar detalles concernientes: ¿qué características de la serie de tiempo le interesan, más allá del error final? Supongo que en realidad tienes tres preguntas diferentes para resolver:
Todo lo que dije en la primera publicación fue que la respuesta a (1) probablemente no considera las diferencias individuales en cada una de las 1000 generaciones. Y eso recomendaría proponer un valor escalar para cada serie de tiempo o al menos similitud entre series de tiempo. Solo entonces llegas a la pregunta de estadística real (que menos conozco de los tres puntos, pero me aconsejaron usar una prueba t pareada en una pregunta similar que acabo de hacer, cuando tengo un valor escalar por elemento).
fuente