第三章、 演算法概念
3.3 以基因演算法為基礎的符號式迴歸引擎 (SRGP)
SRGP 是使用演化計算(Evolutionary Computing)中的基因規劃(Genetic Programming)來解決尋找迴歸公式的問題。SRGP 的演算法如下所示:
Step 1. 初始化。設定各種參數,以及產生第一個世代的族群。其中一 條染色體為小波迴歸所計算出來的資料趨勢。
Step 2. 使用適應度函式計算每一條染色體的適應度。
Step 3. 使用Tournament Selection 選擇兩條染色體做為親代。
Step 4. 使用單點式交配法(One Point Crossover)產生新的子代
Step 5. 計算族群之中每一條染色體的每一個基因節點是否突變。若是 突變,則1/2 機率為資料突變,另外 1/2 機率為結構突變。
Step 6. 計算每一條染色體的適應度
Step 7. 從父代和子代之中挑出最好的前50%的染色體保留,其餘的染 色體捨棄不用
Step 8. 判斷是否達到終止條件,若是達到條件則跳到 Step 10.輸出結 果,若是未達到條件則進行Step 9. Restart
Step 9. 判斷前面數代的適應值是否趨於收斂,若是收斂則保留最好的 一條染色體其餘的全部以亂數重新產生。若是沒有收斂則重複 Step 3.
Step 10. 停止執行並且輸出結果,最好的染色體即為所尋找的結果。
演算法一開始會將小波迴歸所得到迴歸公式產生出第一條染色體,剩下的染色 體則會會以亂數的方式產生。這個步驟被稱為初始化。亂數產生的染色體會依 照適應度函式進行評估,經由評估之後,適應值較高的個體具有較高的機會可 以繁衍下一代。透過選擇配偶的階段,會挑選出適應值比較高的個體進行交配 的程序。交配後會產生新的個體,稱之為子代。產生出來的子代會有很低的機 會染色體會和父代截然不同,這個步驟叫做突變。透過交配和突變族群會有新 的個體的出現,這些新個體將會進行適應度的計算來評估是否是屬於優良的個 體。父代和子代中最優秀的個體將會被保留下來,其他的則會被淘汰掉。最後 這一群新的族群我們稱之為下一個世代,演算法到此會判斷是否有達到演化的 目標,若是達到目標將會把最好的個體輸出即為解答。相反的,若是未達到演 化的目標,演算法將會重複的進行擇偶、交配、突變、淘汰等步驟直到滿足條
件為止。整個SRGP 的流程如下圖所示。
圖 3.3-1 SRGP 流程
3.3.1 適應度函式 (Fitness Function)
SRGP 是將數學運算式經過適當編碼成為算式樹,以算式樹作為解迴歸方 程式問題的染色體,透過基因規劃的運算來演化出最好的解答。但是在演化的 過程之中要決定一條染色體的好壞,我們需要定義適應度函式(Fitness Function) 來幫忙評估染色體的好壞。
迴歸分析就是希望找出依變數(Response Variables)與自變數(Predictors)之 間關係的模型,讓這模型帶入自變數之後所算出的值可以和因變數之間的誤差 越小越好。我們考慮下面的 Eq. ( 18 ),xi 為自變數(Predictor)、yi 為因變數 (Response Variables)、f()為迴歸方程式。我們的目標就是要找出 f(xi)且 yi和f(xi) 之間的誤差趨進為零。因此我們定義適應度函式為迴歸方程式與因變數之間的 誤差,如Eq. ( 19 )所示。
( )
初始化 適應度計算
選擇配偶 交配 突變 適應度計算
適者生存
輸出結果 目標?
達成 未達成 族群重新
∑ ( )
義如Eq. ( 21 )所示,node(t)為樹節點個數、max_treenode 為定義好的最大節點 個數,。3.3.2 選擇策略 (Selection)
演化式計算是受到達爾文的法則 “適者生存不適者淘汰”所啟發而發展出
挑選只挑選最好的染色體,收斂的速度非常快速,導致族群演化過於早熟,搜 尋解答時容易陷入了區域最佳解的問題之中。為了避免演化過於早熟陷入區域 最佳解的問題之中,本論文採用tournament 策略。選擇交配的染色體的時候並 非以當代最佳的染色體為父代,而是以 “相較”優良的染色體近行交配運算。
Tournament 選擇策略會先從整個族群之中隨機挑選出 n 條染色體,預設 n 值為2。再從這些挑選出來的染色體之中找出最好的一條暫時保留。重複挑選 的動作得到第二條染色體。最後才將這兩條染色體進行交配的運算。由於從族 群之中挑選n 條染色體時,每一條的染色體被挑選的機率是一樣的,因此所挑 選出來交配的染色體是相較下較為優良的個體。如此,族群在演化的過程中,
收斂不會進入早熟的狀態因而導致陷入區域最佳解的問題之中。
在演化的過程之中,除了交配時會需要進行選擇的動作之外,在族群產生 新的子代時也要進行選擇的動作來保留最好的個體。雖然演化整體趨勢是偏向 優化,但是新產生出來的子代不一定都會比父代還要優良。因此在世代交替的 時候,本論文採用菁英法則保留父代之中最好的一條,而非依照傳統的基因演 算法子代完全替代父代。
3.3.3 重新策略 (Restart)
當演化過程之中,隨著演化代數的增加族群會漸趨穩定,這時候族群內的 基因大多數都是相似的。當族群進入穩定的時後,有可能代表演化找到了最佳 的解答,但是也有可能代表陷入了區域最佳解(Local Optimal)的問題之中。因 此,我們在演算法之中加入了族群重新(Restart)的策略。當族群演化過程之中,
族群的適應值趨於穩定的時候便使用族群重新策略。保留最好的染色體其他的 染色體都已亂數重新產生,讓族群之中加入新的基因。