機器學習|二進制粒子群優化算法應用於特征選擇問題


1.特征選擇

比如有一個M行(N+1)列的數據集,每一行代表一組數據,對於每一列,前N列代表N個特征,最后一列代表這組數據的標簽。

那么,對於特征選擇問題,就是要找到這N個特征的一個盡可能小的子集,然后通過這個子集中的特征進行學習,可以確保正確率較高的分類結果。(分類的結果是否正確通過查看第N+1列的標簽與預測的哪組數據在哪個類里是否相同)

所以,特征選擇問題本質上就是選擇一個合適的0/1串。串的長度是原始數據集中的特征個數N,0是不被選擇的屬性,而1是被選擇的屬性。

2.粒子群優化算法(Particle Swarm Optimization,PSO)

這是人們由鳥類覓食的集群活動的啟發而提出來的一個啟發式算法。首先,我們知道尋找一個合適的0/1串最簡單也最全面的方法就是暴力枚舉,也就是把所有的取值都計算一遍,這樣是不現實的。共有2的N次方種可能,是一個NP-Hard問題。啟發式算法就是在部分解中尋找一個最優解,當然這是一個局部最優解。但是,由於它只選擇了部分解,因此時間空間開銷都是較小的。

粒子群優化算法的思想是:假設空間中有一些粒子隨機的分布在不同的空間位置上,每個粒子有兩個屬性——位置和速度。這兩個屬性的初始值都是隨機的。每個粒子維護一個自身的最優點pbest(最優指的是適應度函數取得最優時的位置值),整個粒子群維護一個全局的最優點gbest(即所有粒子的pbest對應的適應度函數最大的那一個)。然后進行迭代,迭代的過程可以描述為粒子按照自身最優pbest的方向和全局最優gbest的方向按一定比例來改變速度,繼而改變本次迭代粒子到達的位置。公式如下所示:

速度公式:(w,c1,c2都是權重參數,rand是一個[0,1]的隨機數,t代表迭代次數)

速度公式可以這樣理解:粒子在某次迭代時的速度由三個方面決定——自身原有的速度(上一次迭代得到的速度)、自身歷史最佳點的速度、全局歷史最佳點的速度。這三個分量按照一定的權重合成了本次迭代的速度。

位置公式:

位置公式就是簡單的勻速直線運動公式:x=x0+vt(t=1 因為一次迭代相當於經過一個時間單位)

自定義一個迭代次數,按照這個方式進行迭代最終可能得到一個局部最優解(也可能出現沒到局部最優解時迭代就已經結束了的情況,所以迭代次數要定義的盡量大一些)

迭代結束時的全局最優解gbest(適應度函數取最優時的位置值)就是算法得到的解。

這里,要提一下適應度函數,它是人為制定的“最優”的標准,比如說,在粒子群優化算法應用到特征選擇的問題上,適應度函數可以定義為分類准確度的大小,也可以定義為分類錯誤率的大小。如果定義為前者,那么適應度函數取值最大時得到的是最優解;如果定義為后者,那么適應度函數取值最小時得到的是最優解。

注意:這里每個粒子的速度和位置都是N維向量,不要把思維局限在傳統的物理學問題上認為速度和位置是一個值,這是N維空間的問題,每一維都有一個值。

3.二進制粒子群優化算法(Binary Particle Swarm Optimization,BPSO)

根據前面的講述,我們可以意識到——粒子群優化算法是一個解決連續空間問題的算法,而要想應用到特征選擇問題上找到相要的0/1串,要做一些細微的修改使它能解決離散空間問題。當然,一種最簡單的方法就是給位置值設定一個閾值,超過閾值就設為1,否則就設為0,這樣就把連續空間的N維位置向量轉換為離散空間的0/1串了。不過這樣做解釋起來並沒有什么意義,所以二進制粒子群優化算法出現了。

它對粒子群優化算法的改進是:速度公式不變,增加了一個sigmoid函數,重新定義了位置公式。如下:

這樣得到的x就是一個0/1串,gbest中為1的特征就是最終要選擇的特征。

 

其他的好文檔指路:

特征選擇的詳細介紹:https://www.cnblogs.com/zhizhan/p/4083688.html

粒子群優化算法介紹:https://blog.csdn.net/google19890102/article/details/30044945

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM