Eu tenho duas implementações de um algoritmo genético que devem se comportar de forma equivalente. No entanto, devido a restrições técnicas que não podem ser resolvidas, sua saída não é exatamente a mesma, dada a mesma entrada.
Ainda assim, gostaria de mostrar que não há diferença significativa de desempenho.
Eu tenho 20 execuções com a mesma configuração para cada um dos dois algoritmos, usando sementes de números aleatórios iniciais diferentes. Para cada execução e geração do mínimo de erro de fitness do melhor indivíduo na população foi gravado. O algoritmo emprega um mecanismo de preservação de elite, de modo que a aptidão do melhor indivíduo diminui monotonicamente. Uma corrida consiste em 1000 gerações, então eu tenho 1000 valores por corrida. Não consigo obter mais dados, pois os cálculos são muito caros.
Qual teste devo empregar? Uma maneira fácil seria provavelmente comparar apenas o erro nas gerações finais (novamente, qual teste eu usaria aqui)? Mas também se pode pensar em comparar o comportamento de convergência em geral.
Respostas:
Testar algoritmos estocásticos pode ser bastante complicado!
Trabalho em biologia de sistemas e existem muitos simuladores estocásticos disponíveis para simular um modelo. Testar esses simuladores é complicado, pois duas realizações de um único modelo serão tipicamente diferentes.
Nos dsmts , calculamos (analiticamente) o valor e a variação esperados de um modelo específico. Em seguida, realizamos um teste de hipótese para determinar se um simulador difere da verdade. A seção 3 do guia do usuário fornece os detalhes. Essencialmente, fazemos um teste t para os valores médios e um teste qui-quadrado para variâncias.
No seu caso, você está comparando dois simuladores, portanto, você deve usar um teste t com duas amostras.
fonte
Talvez você possa medir a diferença média entre duas execuções do mesmo algoritmo com a diferença média entre duas execuções de algoritmos diferentes. Não resolve o problema de como medir essa diferença, mas pode ser um problema mais tratável. E os valores individuais da série temporal alimentariam o cálculo da diferença em vez de serem tratados como pontos de dados individuais para serem avaliados uns contra os outros (também não acho que a diferença específica na enésima etapa seja o que você realmente deseja). faça declarações sobre).
Atualização Sobre os detalhes - bem, em quais recursos da série temporal você está interessado, além do erro final? Eu acho que você realmente tem três perguntas diferentes para resolver:
Tudo o que eu estava dizendo no primeiro post foi que a resposta para (1) provavelmente não considera as diferenças individuais em cada uma das 1000 gerações. E que eu recomendaria a criação de um valor escalar para cada série temporal ou pelo menos semelhança entre séries temporais. Somente então você chega à questão das estatísticas reais (que eu sei menos sobre os três pontos), mas fui aconselhado a usar um teste t emparelhado em uma pergunta semelhante que acabei de fazer, ao ter um valor escalar por elemento).
fonte