特征选择之遗传算法
遺傳算法的優點:
1. 與問題領域無關切快速隨機的搜索能力。
2. 搜索從群體出發,具有潛在的并行性,可以進行多個個體的同時比較,robust.
3. 搜索使用評價函數啟發,過程簡單
4. 使用概率機制進行迭代,具有隨機性。
5. 具有可擴展性,容易與其他算法結合。
6.?遺傳算法具有良好的全局搜索能力,可以快速地將解空間中的全體解搜索出,而不會陷入局部最優解的快速下降陷阱;是全局優化算法,一般的迭代方法容易陷入局部極小的陷阱而出現"死循環"現象,使迭代無法進行。遺傳算法很好地克服了這個缺點,是一種全局優化算法。
?
遺傳算法的缺點:?
???1、遺傳算法的編程實現比較復雜,首先需要對問題進行編碼,找到最優解之后還需要對問題進行解碼,
???2、另外三個算子的實現也有許多參數,如交叉率和變異率,并且這些參數的選擇嚴重影響解的品質,而目前這些參數的選擇大部分是依靠經驗.
??3、沒有能夠及時利用網絡的反饋信息,故算法的搜索速度比較慢,要得要較精確的解需要較多的訓練時間。
??4、算法對初始種群的選擇有一定的依賴性,能夠結合一些啟發算法進行改進。
??5、算法的并行機制的潛在能力沒有得到充分的利用,這也是當前遺傳算法的一個研究熱點方向。
????在現在的工作中,遺傳算法(1972年提出)已經不能很好的解決大規模計算量問題,它很容易陷入“早熟”。常用混合遺傳算法,合作型協同進化算法等來替代,這些算法都是GA的衍生算法。
????并且利用它的內在并行性,可以方便地進行分布式計算,加快求解速度。但是遺傳算法的局部搜索能力較差,導致單純的遺傳算法比較費時,在進化后期搜索效率較低。在實際應用中,遺傳算法容易產生早熟收斂的問題。采用何種選擇方法既要使優良個體得以保留,又要維持群體的多樣性,一直是遺傳算法中較難解決的問題。
????模擬退火算法雖具有擺脫局部最優解的能力,能夠以隨機搜索技術從概率的意義上找出目標函數的全局最小點。但是,由于模擬退火算法對整個搜索空間的狀況了解不多,不便于使搜索過程進入最有希望的搜索區域,使得模擬退火算法的運算效率不高。模擬退火算法對參數(如初始溫度)的依賴性較強,且進化速度慢。
http://blog.sina.com.cn/s/blog_6377a3100100h1mj.html
?
?
基于遺傳算法的特征選擇是一種wrapper方法,該算法是以支持向量機分類器的識別率作為特征選擇的可分性判斷依據。在遺傳算法中,對所選擇的特征用[0,1]二進制串來初始化,由于二進制數{0,1}是等概率出現的,所以最優特征個數的期望是原始特征個數的一半。要進一步減少特征個數,則可以讓二進制數{0,1}以不等概率出現,以a個特征中選擇b個特征為例,使得在a位二進制串中1出現的概率為b/ab/a。?
對于支持向量機和遺傳算法,可以看先前的博客《線性支持向量機》和《遺傳算法及其實現》。
改進的遺傳算法
一個完整的遺傳算法主要包括幾個步驟:基因編碼,種群初始化,選擇操作,交叉操作,變異操作,結束條件判斷等。
基因編碼
將選擇的特征組合用一個{0,1}二進制串表示,0表示不選擇對應的特征,1表示選擇對應的特征。對懲罰參數C和核參數σσ也采用二進制編碼,根據范圍和精度計算所需要的二進制串長度分別為lc,lσlc,lσ。
種群初始化
以a個特征中選取b個特征為例,確保在前a位二進制串中1出現的概率一定是b/ab/a,兩個參數部分的二進制碼隨機生成,二進制長度為la+lc+lσla+lc+lσ;然后以一定的種群規模進行種群初始化。
選擇操作
計算個體適應度,即先對個體進行解碼,再用訓練和測試樣本計算SVM的正確分類率:?
fitness=WA×SVMacuracy+WF×(Σlai=1Ci×Fi)?1WA:SVM分類準確率權重,一般設置為75?100%SVMaccuracy:SVM分類準確率WF:選擇特征和懲罰參數乘積和逆的權重,如果準確率非常重要,可以把它設置成100%Ci:特征i的損失,如果沒有關于損失的信息,可以設置為1Fi:1代表選擇了特征i;0表示沒有選擇特征i。fitness=WA×SVMacuracy+WF×(Σi=1laCi×Fi)?1WA:SVM分類準確率權重,一般設置為75?100%SVMaccuracy:SVM分類準確率WF:選擇特征和懲罰參數乘積和逆的權重,如果準確率非常重要,可以把它設置成100%Ci:特征i的損失,如果沒有關于損失的信息,可以設置為1Fi:1代表選擇了特征i;0表示沒有選擇特征i。
然后采用輪盤賭選擇法,隨機從種群中挑選一定的數目個體,再將適應度最好的個體作為父體,這個過程重復進行直到完成所有個體的選擇。
?
交叉操作
由于交叉操作的隨機性,會改變前a位二進制串中的1出現的概率,使其不等于b/ab/a,這將導致不同個體特征矢量的維數不盡相同,所以進行以下操作。?
首先將二進制編碼分成兩部分,前lala位特征編碼部分和后lc+lσlc+lσ位參數編碼部分。如下圖所示,?
?
首先對比兩個父體,找出兩父體個體同為1的基因位,稱之為“優勢基因位”,例如第1,4位。然后找兩父體其中一個為1的基因位,稱之為“非優勢基因位”,例如2,5,6,a。如果兩父體中存在“優勢基因位”,表明兩父體對該基因位所對應的特征分量的選擇意見趨于一致,該特征應在子代中予以保留。如果父代個體中存在“非優勢基因位”,表明兩個體在該特征上存在分歧。?
如果兩父體個體存在e個“優勢基因位”,則在子代中保留這些基因位,在“非優勢基因位”中隨機選擇b-e個基因位,并令這些基因位為1,產生兩個新個體。圖1中兩個子個體保留了第1,4位,子個體1在第2,5,6,a中隨機選擇了第6,a位并令其成為1,子個體2第2,5,6,a位中隨機選擇了第2,5位并令其為1.這樣保證了子個體與父體選擇的特征數式中為b。
變異操作
如果對特征編碼進行翻轉變異操作,那么將使二進制串中的為1的基因位發生變化,如果某一位由0變成1,則選擇的特征數變為d+1,反之變為d-1.為解決這個問題可以使用下面的方法。?
如圖2,分別統計編碼為1和0的基因位,分別在為1和0的基因位中隨機選擇一個二進制數,圖2是第2和第5位相互交換,得到變異子個體。?
結束條件
前面的選擇,交叉,變異操作合起來稱為遺傳操作,當遺傳操作到達設定的最大迭代次數時,算法結束。如果迭代遺傳過程中,連續若干代最優個體不再變化,算法也可提前結束。?
下面是算法的流程圖:?
參考?
【Cheng-Lung Huang , Chieh-Jen Wang】A GA-based feature selection and parameters optimization for support vector machines?
【杜卓明,馮靜】改進遺傳算法和支持向量機的特征選擇算法
?
原文鏈接。 https://blog.csdn.net/littlely_ll/article/details/72625312
?
?
智能優化算法和傳統優化算法的區別:
優化算法有很多,關鍵是針對不同的優化問題,例如可行解變量的取值(連續還是離散)、目標函數和約束條件的復雜程度(線性還是非線性)等,應用不同的算法。
對于連續和線性等較簡單的問題,可以選擇一些經典算法,如梯度、Hessian 矩陣、拉格朗日乘數、單純形法、梯度下降法等。
而對于更復雜的問題,則可考慮用一些智能優化算法,如遺傳算法和蟻群算法,此外還包括模擬退火、禁忌搜索、粒子群算法等。
優缺點比較:
?
?
傳統優化算法與遺傳算法之間的優缺點和特點比較
原文?https://blog.csdn.net/misayaaaaa/article/details/54407490
傳統優化算法與遺傳算法之間的優缺點比較
傳統優化算法優點:1:利用了解空間的特性,如可微等。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2:理論較為完善,計算量小。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3:收斂速度快。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?4:具有確定的終止準則。
?
傳統優化算法缺點:1:僅能求出優化問題的局部最優解。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2:求解的結果強烈依賴于初始值。
?
遺傳算法的優點:1:能夠求出優化問題的全局最優解。
? ? ? ? ? ? ? ? ? ? ? ? ? ?2:優化結果與初始條件無關。
? ? ? ? ? ? ? ? ? ? ? ? ? ?3:算法獨立于求解域。
? ? ? ? ? ? ? ? ? ? ? ? ? ?4:具有較強的魯棒性。
? ? ? ? ? ? ? ? ? ? ? ? ? ?5:適合于求解復雜的優化問題。
? ? ? ? ? ? ? ? ? ? ? ? ? ?6:應用較為廣泛。
?
遺傳算法的缺點:1:收斂速度慢。
? ? ? ? ? ? ? ? ? ? ? ? ? ?2:局部搜索能力差。
? ? ? ? ? ? ? ? ? ? ? ? ? ?3:控制變量較多。
? ? ? ? ? ? ? ? ? ? ? ? ? ?4:無確定的終止準則。
?
特點的比較:
?
遺傳算法:1:以編碼的方式工作,可以并行搜索多個峰值
? ? ? ? ? ? ? ? ?2:以編碼方式工作,不對參數本身進行操作,具有良好的可操作性
? ? ? ? ? ? ? ? ?3:用概率性傳遞規則代替確定性規則,具有全局尋優特點
? ? ? ? ? ? ? ? ?4:只使用目標函數和相應的適應度函數,不需要其他的輔助信息
?
傳統優化算法:1:需要不同形式的輔助信息,如可微、連續等
? ? ? ? ? ? ? ? ? ? ? ? 2:有固定的結構和參數,計算復雜度和收斂性可做理論分析?
? ? ? ? ? ? ? ? ? ? ? ? 3:有明確的條件描述,清晰的結構信息
?
?
智能優化算法總結
優化算法有很多,
經典算法包括:有線性規劃,動態規劃等;改進型局部搜索算法包括爬山法,最速下降法等,模擬退火、遺傳算法以及禁忌搜索稱作指導性搜索法。而神經網絡,混沌搜索則屬于系統動態演化方法。
?
梯度為基礎的傳統優化算法具有較高的計算效率、較強的可靠性、比較成熟等優點,是一類最重要的、應用最廣泛的優化算法。但是,傳統的最優化方法在應用于復雜、困難的優化問題時有較大的局限性。
?
一個優化問題稱為是復雜的,通常是指具有下列特征之一:(1)目標函數沒有明確解析表達;(2)目標函數雖有明確表達,但不可能恰好估值;(3)目標函數為多峰函數;(4)目標函數有多個,即多目標優化。
一個優化問題稱為是困難的,通常是指:目標函數或約束條件不連續、不可微、高度非線性,或者問題本身是困難的組合問題。傳統優化方法往往要求目標函數是凸的、連續可微的,可行域是凸集等條件,而且處理非確定性信息的能力較差。
?
這些弱點使傳統優化方法在解決許多實際問題時受到了限制。
智能優化算法一般都是建立在生物智能或物理現象基礎上的隨機搜索算法,目前在理論上還遠不如傳統優化算法完善,往往也不能確保解的最優性,因而常常被視為只是一些“元啟發式方法”(meta-heuristic)。但從實際應用的觀點看,這類新算法一般不要求目標函數和約束的連續性與凸性,甚至有時連有沒有解析表達式都不要求,對計算中數據的不確定性也有很強的適應能力。
?
下面給出一個局部搜索,模擬退火,遺傳算法,禁忌搜索的形象比喻:?
?
為了找出地球上最高的山,一群有志氣的兔子們開始想辦法。?
?
1.兔子朝著比現在高的地方跳去。他們找到了不遠處的最高山峰。但是這座山不一定是珠穆朗瑪峰。這就是局部搜索,它不能保證局部最優值就是全局最優值。?
?
2.兔子喝醉了。他隨機地跳了很長時間。這期間,它可能走向高處,也可能踏入平地。但是,他漸漸清醒了并朝最高方向跳去。這就是模擬退火。
3.兔子們吃了失憶藥片,并被發射到太空,然后隨機落到了地球上的某些地方。他們不知道自己的使命是什么。但是,如果你過幾年就殺死一部分海拔低的兔子,多產的兔子們自己就會找到珠穆朗瑪峰。這就是遺傳算法。?
?
4.兔子們知道一個兔的力量是渺小的。他們互相轉告著,哪里的山已經找過,并且找過的每一座山他們都留下一只兔子做記號。他們制定了下一步去哪里尋找的策略。這就是禁忌搜索。
一般而言,局部搜索就是基于貪婪思想利用鄰域函數進行搜索,若找到一個比現有值更優的解就棄前者而取后者。但是,它一般只可以得到“局部極小解”,就是說,可能這只兔子登“登泰山而小天下”,但是卻沒有找到珠穆朗瑪峰。而模擬退火,遺傳算法,禁忌搜索,神經網絡等從不同的角度和策略實現了改進,取得較好的“全局最小解”。?
?
https://blog.csdn.net/sinde1992/article/details/50321225
總結
- 上一篇: JavaScript数组迭代方法(图解)
- 下一篇: jQuery布局插件UI Layout简