T-Test

如何檢查修改後的遺傳算法是否明顯優於原始算法?

  • February 18, 2011

我的問題涉及如何能夠斷言“改進的”進化算法確實得到了改進(至少從統計學的角度來看),而不僅僅是隨機運氣(考慮到這些算法的隨機性,這是一個問題)。

假設我正在處理一個標準 GA(之前)和一個“改進的”GA(之後)。我有一套 8 個測試問題。

我重複運行這兩種算法,例如 10 次(?)通過 8 個測試問題中的每一個,並記錄需要多少代才能提出解決方案。我將從相同的初始隨機種群開始(使用相同的種子)。

我是否會使用配對 t 檢驗來驗證每個測試問題的平均值之間的任何差異(希望是改進)是否具有統計學意義?我應該為每個測試/對運行這些算法超過 10 次嗎?

我應該注意哪些陷阱?我假設我可以將這種方法用於任何(進化)算法比較。

還是我真的走錯了路?我基本上是在尋找一種方法來比較進化算法的兩種實現,並報告一個與另一個相比的工作情況。

謝謝!

您不會使用配對樣本 t 檢驗。這樣做的原因是,不能假設特定的隨機種子以相同的方式偏向兩種算法的結果,即使該隨機種子僅用於生成種群而不用於後續操作,例如變異和選擇。換句話說,邏輯上可能的是,在一種算法下,給定的種群將進化得比該算法的平均值更好,但在另一種算法下會以相反的方式表現。如果您有理由相信兩種算法的種子和性能之間存在相似的聯繫,您可以使用 Pearson 相關係數來比較每個種子在兩種測試中的性能。但是,默認情況下,我會假設沒有聯繫,尤其是在您擁有相當多的人口的情況下。

就運行 10 次以上而言,當然更多的樣本總是更好,儘管您的計算資源顯然可能是一個限制因素。生成功效曲線可能是一個好主意,它將向您顯示在您的 alpha 水平上統計顯著性所需的差異大小與 SD 和 n 之間的關係。換句話說,在給定的 n 和 SD 下,差異必須有多大?http://moon.ouhsc.edu/dthompso/CDM/power/hypoth.htm <– 功率曲線信息見頁面底部。

最後,如果您正在運行一個實際上具有已定義停止點的遺傳算法,就像您的那樣,您可以對找到解決方案所需的代數進行簡單的非配對 t 檢驗。否則,量化算法性能往往會變得有點棘手

就陷阱和算法效率對其他問題的普遍性而言,在將算法移植到其他問題時,您真的不能將算法的有效性視為理所當然。根據我的經驗,遺傳算法通常必須針對您應用它們的每個新問題進行相當多的調整。話雖如此,根據您的 8 個測試集的多樣性,它們可能會為您提供一些指示,說明您的結果的可概括性,以及它們可概括的應用範圍。

引用自:https://stats.stackexchange.com/questions/7389

comments powered by Disqus