資料探勘筆記 遺傳演算法

2021-08-18 17:12:06 字數 1718 閱讀 5933

遺傳演算法**於演化論,可以理解為一開始我們產生很多個隨機解,構成第一代假設集合(也叫做種群),由這些隨機解產生一代新的種群並進行假設解集合的更新,在產生下一代隨機解過程中,好的解保留,差的解遺棄,即通過變異和交叉迭代每一步。

(1)種群:在演算法中迭代更新的假設集合

(2)適應度函式:判斷假設好壞的定量值

(3)如何選出適應度較高的假設:一部分假設進行變異,一部分假設進行交叉操作。具體如何做後面詳細講。

故模型為:

ga(fitness,fitness_threshold,p,r,m)

fitness:適應度函式,輸入為某函式輸出為判斷值

fitness_threshold:適應度閾值,即迭代停止條件

p:種群中假設的個數;r:每一步進行交叉那一部分的比例;m:變異的比例

1.初始化種**:隨機的產生p個假設

2.評估:對p中的每乙個假設h,計算該假設的適應度fitness(h)

3.當p中假設最大的適應度仍小於fitness_threshold重複迭代下面步驟,直到滿足停止條件:

產生新的一代種**s:

(1)選擇:從源種**中選擇p(1-r)個假設加入ps中,每個假設的選擇概率為

(2)交叉:還是依照pr(h)的概率從p中選擇

(3)變異:在新種**s中均勻地選擇m%個假設,表示該假設的位元串對其中一位進行求反

4.更新:使用ps代替p

5.停止迭代後,返回適應度最大的假設

假設使用位元串表示,如下例:

從兩個父母串產生兩個後代,後代的串通過交叉掩碼確定複製父母串的位置,進而形成自己的表示串。如下圖所示。

拿第乙個單點交叉來說,第乙個後代前五位來自第乙個父母串,後六位來自第二個父母串;第二個後代前五位來自第二個父母串,後六位來自第乙個父母串。這裡介紹乙個後代生成規則——gabil system

每個假設對應乙個命題規則的析取集。規則的假設空間由一組固定屬性的約束組合構成。為了表示一組規則,將單個規則的位串表示連線起來。下圖中a1和a2是兩個布林屬性,c是分類。後代取複製的子串時定義兩個index值,例如d1=1和d2=3。

如果第乙個父母串劃分已經確定,則第二個父母串可以是<1,3>均在前五位進行劃分,<1,8>左邊劃在前五位右邊劃在後五位,<6,8>均在後五位劃分。那麼h3選擇圖中h1中括號外的部分和h2中括號內的部分。

對該假設串任取一位取反

適應度函式可以通過一系列標註的資料進行訓練得到,除了分類準確率,適應度還可以包括規則的複雜度和一般性。

(1)不同於梯度下降每次只改進一點點,遺傳演算法可以產生於父代假設完全不同的子代假設,不易陷於區域性最小。

(2)擁擠問題:由於適應度越高越有可能產生後代,因此多次迭代後,很有可能多個後代是同源的假設,這樣就喪失了假設的多樣性,搜尋速度降低。

解決方法:a.改變選擇函式,不再依照適應度作為概率可以改為排名選擇(任選兩個取最大)

b.適應度共享,如果相似個體較多,則降低每個個體的適應度

資料探勘之遺傳演算法

自然演變是一種基於群體的優化過程,在計算機上對這個過程進行 產生了隨機優化技術,在應用於解決現實世界中的難題時,這種技術常勝過經典的優化方法,遺傳演算法就是根據自然演變法則開發出來的 遺傳演算法的基本原理 遺傳演算法 ga 是不需要求導的隨機優化方法,它以自然選擇和演變過程為基礎,但是聯絡又是不牢靠...

遺傳演算法 筆記

1.個體編碼 一般用二進位制編碼表示乙個個體 二進位制編碼就是 基因型 個體就是 表現型 例子 乙個表現型為 1,2 的向量的 基因型為 這裡用3位二進位制表示乙個數 001 010 2.初始化群體 包括群體規模 包含的個體 3.適應度計算 適應度決定了每個個體的存活機率 或者說遺傳機率 4.選擇運...

python遺傳演算法 Python 遺傳演算法實現

關於遺傳演算法 遺傳演算法是仿照自然界中生物進化而產生的一類優化演算法。個人感覺遺傳演算法簡單粗暴,適應性廣。關於遺傳演算法的介紹網上有很多了,這裡按照我自己的理解簡單概括一下。編碼解碼,將待優化的引數編碼為dna序列,最簡單直接的為二進位制編碼 即有兩種鹼基的dna鏈 生成隨機初代 選擇,適應度 ...