模型参数优化(一):遗传算法
? ? ? ?參數是指算法中的未知數,有的需要人為指定,比如神經網絡算法中的學習效率,有的是從數據中擬合而來,比如線性回歸中的系數,如此等等。在使用選定算法進行建模時,設定或得到的參數很可能不是最優或接近最優的,這時需要對參數進行優化以得到更優的預測模型。常用的參數優化方法主要包括交叉驗證、網格搜索、遺傳算法、粒子群優化、模擬退火,本節介紹遺傳算法。
? ? ??遺傳算法實質:選定一批最佳參數,使得目標函數最優。
1.基本概念
? ? ? ? 遺傳算法是模擬自然界遺傳選擇與淘汰的生物進化計算模型。達爾文的自然選擇學說認為,遺傳和變異是決定生物進化的內在因素。遺傳是指父代與子代之間,在性狀上的相似現象,而變異是指父代與子代之間以及子代的個體之間,在性狀上或多或少地存在的差異現象,變異能夠改變生物的性狀以適應新的環境變化。而生存斗爭是生物進化的外在因素,由于弱肉強食的生存斗爭不斷地進行,其結果是適者生存,具有適應性變異的個體被保留下來,不具有適應性變異的個體被淘汰。更進一步,孟德爾提出了遺傳學的兩個基本規律:分離律和自由組合律,認為生物是通過基因突變與基因的不同組合和自然選擇的長期作用而進化的。
? ? ? ?由于生物進化與某些問題的最優求解過程存在共通性,即都是在產生或尋找最優的個體(或者問題的解),這就產生了基于自然選擇、基因重組、基因突變等遺傳行為來模擬生物進化機制的算法,通常叫作遺傳算法,它最終發展成為一種隨機全局搜索和優化的算法。
? ? ? ?遺傳算法研究的對象是種群,即很多個體的集合,對應于求解的問題,這里的個體代表一個解,種群代表這些解的集合,當然,開始的時候,也許所有的解不是最優的,經過將這些解進行編碼、選擇、交叉、變異之后,逐代進化,從子代中可以找到求解問題的全局最優解。
- 編碼:將表現型的解轉化為基因型,便于進行遺傳操作;
- 解碼:即是從基因型轉化為表現型,以直觀判斷個體的表現以,從而決定是否選擇進入下一代或直接得到最優解。
- 選擇的標準:優化準則。
- 交叉:也就是基因重組,即兩個個體,互相交換?因型的對應片段。
- 變異:指的是基因突變,是指個體基因型中某個基因的改變。
? ? ? 種群的每代個體經過了這幾個關鍵的步驟之后,種群得以進化,在最終的子代中找到問題的最優解。這就是使用遺傳算法求解最優化問題的大致過程。
2、名詞概念
? ? ? 染色體(個體):在參數尋優問題中一個染色體代表一個參數,染色體的十進制數值,用于獲取待尋優參數實際輸入到模型中的值。
? ? ??基因:每一個染色體都對應多個基因,基因是二進制數,基因的取值長度是染色體的長度。遺傳算法的交叉、變異操作都是對染色體的基因進行的。
? ? ? 種群:初始化的染色體可能的取值數
? ? ? 適應度函數:表征每一組染色體(每一組參數)對應的模型評價指標(本博文的python實例中,采用3-flod 交叉檢驗的平均值作為適應度函數值)。
? ? ? 假設對于兩個參數的尋優,我們設定染色體長度為20,種群數為200,就是說初始化兩個染色體,每個染色體初始化200個可能的值,每一個染色體的十進制數值用20位二進制數表示。、
3. 遺傳算法實現過程
第一步:編碼。變量x是遺傳算法的表現型形式,從表現型到基因型的映射稱為編碼,通常采用二進制編碼形式,串的長度取決于求解的精度。
- 染色體長度:如參數batch取值范圍為[10,100],區間長度為90,將其分成90份。因為:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ?所以二進制串的長度是7,即染色體長度是7。
- 解碼:二進制對應的十進制數
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
(1)首先將二進制轉為十進制:比如一個二進制為10101,轉化為十進制就是(2)把21放到上面的解碼公式就得到了最終的batch:min=10,max=100
第二步:產生父代個體,構建初始種群。
第三步:選擇個體。根據適應度函數選擇再生個體,被選出的概率正比于染色體的適應性,適應性分數愈高,被選中的可能性也就愈大。常用的方法就是采用所謂的輪盤賭選擇法。
第四部:交叉。
第五步:變異。
即:
? ? ? ?第一步:(產生初始種群:即優化參數的候選者)根據種群規模,隨機產生初始種群,每個個體表示染色體的基因型,如LSTM超參數batch_size、epochs等優化,初始種群為batch_size、epochs的候選值。
? ? ? ?第二步:(計算適應度:即目標函數)計算每個個體的適應度,并判斷是否滿足優化準則,若滿足,則輸出最佳個體及其代表的最優解,并結束算法;若不滿足,則轉入下一步。適應度,即因變量f,如LSTM的loss。
? ? ? ?第三步:(選擇)依據適應度選擇再生個體,適應度高的個體被選中的概率高,反之,適應度低的個體被選中的概率低,甚至可能被淘汰。
? ? ? ?第四步:(交叉)根據一定的交叉概率和交叉方法生成子代個體。
? ? ? ?第五步:(變異)根據一定的變異概率和變異方法,生成子代個體。
? ? ? ?第六步:(循環計算適應度)由交叉和變異產生新一代種群,返回到第二步。
?遺傳算法中的優化準則,一般根據問題的不同有不同的確定方式。通常采取如下之一作為判斷條件:
4、遺傳算法單參數/多參數尋優
? ? ? ?多參數尋優和單一參數尋優的基本思路是相同的,不過在種群初始化時,每次需要初始化m個染色體,并且在選擇、交叉、變異操作時,m個染色體是分別進行的。
? ? ? 步驟一:種群、染色體、基因初始化。
? ? ? 步驟二:計算種群中每一組染色體對應的適應度函數值。
? ? ? 步驟三:對種群中的染色體進行選擇、交叉、變異操作,產生新的種群。
? ? ? 步驟四:判斷是否滿足終止條件?如果不滿足,跳轉到步驟二;如果滿足,輸出最優參數。
? ? ? 步驟五:結束。
5. 代碼實現?
5.1 python實現
? ? ?參考:遺傳算法(GA)的新手入門必備,python3案例
? ? ? ? ? ? ? ??python遺傳算法(詳解)
? ? ? ? ? ? ? ??遺傳算法多參數尋優
4.2 R實現
? ? ? R語言預測實戰:6.3.5
總結
以上是生活随笔為你收集整理的模型参数优化(一):遗传算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R语言笔记-sample()函数
- 下一篇: 模型参数优化(二):粒子群优化