Ich habe zwei Implementierungen eines genetischen Algorithmus, die sich gleichwertig verhalten sollen. Aufgrund technischer Einschränkungen, die nicht gelöst werden können, ist ihre Ausgabe bei gleicher Eingabe jedoch nicht exakt gleich.
Trotzdem möchte ich zeigen, dass es keinen signifikanten Leistungsunterschied gibt.
Ich habe 20 Läufe mit der gleichen Konfiguration für jeden der beiden Algorithmen, wobei unterschiedliche anfängliche Zufallszahlen verwendet werden. Für jeden Lauf und jede Generation wurde die minimale Fehlerfähigkeit des besten Individuums in der Population aufgezeichnet. Der Algorithmus verwendet einen Elite-Erhaltungsmechanismus, so dass die Fitness des besten Individuums monoton abnimmt. Ein Lauf besteht aus 1000 Generationen, also habe ich 1000 Werte pro Lauf. Ich kann nicht mehr Daten erhalten, da die Berechnungen sehr teuer sind.
Welchen Test soll ich anwenden? Ein einfacher Weg wäre wahrscheinlich, nur den Fehler in den letzten Generationen zu vergleichen (wieder, welchen Test würde ich hier verwenden)? Man könnte aber auch darüber nachdenken, das Konvergenzverhalten im Allgemeinen zu vergleichen.
Antworten:
Das Testen stochastischer Algorithmen kann ziemlich schwierig sein!
Ich arbeite in der Systembiologie und es gibt viele stochastische Simulatoren, mit denen ein Modell simuliert werden kann. Das Testen dieser Simulatoren ist schwierig, da zwei Realisierungen aus einem einzelnen Modell normalerweise unterschiedlich sind.
In den dsmts haben wir (analytisch) den erwarteten Wert und die Varianz eines bestimmten Modells berechnet. Anschließend führen wir einen Hypothesentest durch, um festzustellen, ob ein Simulator von der Wahrheit abweicht. Abschnitt 3 des Benutzerhandbuchs enthält die Einzelheiten. Im Wesentlichen führen wir einen t-Test für die Mittelwerte und einen Chi-Quadrat-Test für Varianzen durch.
In Ihrem Fall vergleichen Sie zwei Simulatoren, daher sollten Sie stattdessen nur einen T-Test mit zwei Stichproben verwenden.
quelle
Vielleicht könnten Sie die durchschnittliche Differenz zwischen zwei Läufen desselben Algorithmus zur durchschnittlichen Differenz zwischen zwei Läufen verschiedener Algorithmen messen. Löst nicht das Problem, wie dieser Unterschied gemessen werden kann, könnte aber ein leichter zu handhabendes Problem sein. Und die einzelnen Werte der Zeitreihen würden in die Differenzberechnung einfließen, anstatt als einzelne Datenpunkte behandelt werden zu müssen, um gegeneinander ausgewertet zu werden (ich denke auch nicht, dass der besondere Unterschied im n-ten Schritt das ist, was Sie wirklich wollen Aussagen machen über).
Update Bezüglich Details - Nun, welche Funktionen der Zeitreihe interessieren Sie über den endgültigen Fehler hinaus? Ich denke, Sie haben tatsächlich drei verschiedene Fragen zu lösen:
Alles, was ich im ersten Beitrag gesagt habe, war, dass die Antwort auf (1) wahrscheinlich nicht die individuellen Unterschiede bei jeder der 1000 Generationen berücksichtigt. Und dass ich empfehlen würde, einen Skalarwert für jede Zeitreihe oder zumindest eine Ähnlichkeit zwischen Zeitreihen zu erstellen. Erst dann gelangen Sie zur eigentlichen Statistikfrage (von der ich am wenigsten über alle drei Punkte weiß, aber mir wurde empfohlen, bei einer ähnlichen Frage, die ich gerade gestellt habe, einen gepaarten t-Test zu verwenden, wenn Sie einen Skalarwert pro Element haben).
quelle