模型參數優化(一):遺傳算法

       參數是指算法中的未知數,有的需要人爲指定,比如神經網絡算法中的學習效率,有的是從數據中擬合而來,比如線性迴歸中的係數,如此等等。在使用選定算法進行建模時,設定或得到的參數很可能不是最優或接近最優的,這時需要對參數進行優化以得到更優的預測模型。常用的參數優化方法主要包括交叉驗證、網格搜索、遺傳算法、粒子羣優化、模擬退火,本節介紹遺傳算法。

1.基本概念

        遺傳算法是模擬自然界遺傳選擇與淘汰的生物進化計算模型。達爾文的自然選擇學說認爲,遺傳和變異是決定生物進化的內在因素。遺傳是指父代與子代之間,在性狀上的相似現象,而變異是指父代與子代之間以及子代的個體之間,在性狀上或多或少地存在的差異現象,變異能夠改變生物的性狀以適應新的環境變化。而生存鬥爭是生物進化的外在因素,由於弱肉強食的生存鬥爭不斷地進行,其結果是適者生存,具有適應性變異的個體被保留下來,不具有適應性變異的個體被淘汰。更進一步,孟德爾提出了遺傳學的兩個基本規律:分離律和自由組合律,認爲生物是通過基因突變與基因的不同組合和自然選擇的長期作用而進化的。

       由於生物進化與某些問題的最優求解過程存在共通性,即都是在產生或尋找最優的個體(或者問題的解),這就產生了基於自然選擇、基因重組、基因突變等遺傳行爲來模擬生物進化機制的算法,通常叫作遺傳算法,它最終發展成爲一種隨機全局搜索和優化的算法。

       遺傳算法研究的對象是種羣,即很多個體的集合,對應於求解的問題,這裏的個體代表一個解種羣代表這些解的集合,當然,開始的時候,也許所有的解不是最優的,經過將這些解進行編碼、選擇、交叉、變異之後,逐代進化,從子代中可以找到求解問題的全局最優解。

  • 編碼:將表現型的解轉化爲基因型,便於進行遺傳操作;
  • 解碼:即是從基因型轉化爲表現型,以直觀判斷個體的表現以,從而決定是否選擇進入下一代或直接得到最優解。
  • 選擇的標準:優化準則。
  • 交叉:也就是基因重組,即兩個個體,互相交換 因型的對應片段。
  • 變異:指的是基因突變,是指個體基因型中某個基因的改變。

      種羣的每代個體經過了這幾個關鍵的步驟之後,種羣得以進化,在最終的子代中找到問題的最優解。這就是使用遺傳算法求解最優化問題的大致過程。

2. 實現步驟

       第一步:(產生初始種羣)根據種羣規模,隨機產生初始種羣,每個個體表示染色體的基因型。
       第二步:(計算適應度)計算每個個體的適應度,並判斷是否滿足優化準則,若滿足,則輸出最佳個體及其代表的最優解,並結束算法;若不滿足,則轉入下一步。適應度,即因變量f
       第三步:(選擇)依據適應度選擇再生個體,適應度高的個體被選中的概率高,反之,適應度低
的個體被選中的概率低,甚至可能被淘汰。
       第四步:(交叉)根據一定的交叉概率和交叉方法生成子代個體。
       第五步:(變異)根據一定的變異概率和變異方法,生成子代個體。
       第六步:(循環計算適應度)由交叉和變異產生新一代種羣,返回到第二步。

 遺傳算法中的優化準則,一般根據問題的不同有不同的確定方式。通常採取如下之一作爲判斷條件:

  1. 種羣中個體的最大適應度超過了設定值。(隨着代數的增大,最大適應度向變大的方向移動)
  2. 種羣中個體的平均適應度超過了設定值。
  3. 世代數超過了設定值。
  4. 種羣中個體的最大適應度除以平均適應度超過了設定值。 

3. 代碼實現 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章