基于随机森林的特征选择算法
http://xuebao.jlu.edu.cn/gxb/article/2014/1671-5497-44-1-137.html
0 引言圖像處理、信息檢索以及生物信息學(xué)等技術(shù)的發(fā)展,產(chǎn)生了以超大規(guī)模特征為特點(diǎn)的高維數(shù)據(jù)集。如何有效地從高維數(shù)據(jù)中提取或選擇出有用的特征信息或規(guī)律,并將其分類識(shí)別已成為當(dāng)今信息科學(xué)與技術(shù)所面臨的基本問題[?1]。特征選擇是指從原始特征集中選擇使某種評(píng)估標(biāo)準(zhǔn)最優(yōu)的特征子集,以使在該最優(yōu)特征子集上所構(gòu)建的分類或回歸模型達(dá)到與特征選擇前近似甚至更好的預(yù)測(cè)精度。Davies證明尋找滿足要求的最小特征子集是NP完全問題[?2]。在實(shí)際應(yīng)用中,通常是通過采用啟發(fā)式搜索算法,在運(yùn)算效率和特征子集質(zhì)量間找到一個(gè)好的平衡點(diǎn),即近似最優(yōu)解。
隨機(jī)森林(Random forest,RF)[?3]是一種集成機(jī)器學(xué)習(xí)方法,它利用隨機(jī)重采樣技術(shù)bootstrap和節(jié)點(diǎn)隨機(jī)分裂技術(shù)構(gòu)建多棵決策樹,通過投票得到最終分類結(jié)果。RF具有分析復(fù)雜相互作用分類特征的能力,對(duì)于噪聲數(shù)據(jù)和存在缺失值的數(shù)據(jù)具有很好的魯棒性,并且具有較快的學(xué)習(xí)速度,其變量重要性度量可以作為高維數(shù)據(jù)的特征選擇工具,近年來已經(jīng)被廣泛應(yīng)用于各種分類、預(yù)測(cè)、特征選擇以及異常點(diǎn)檢測(cè)問題中[?4,?5,?6,?7]。
特征選擇算法根據(jù)所采用的特征評(píng)價(jià)策略可以分為Filter和Wrapper兩大類[?8]。Filter方法獨(dú)立于后續(xù)采取的機(jī)器學(xué)習(xí)算法,可以較快地排除一部分非關(guān)鍵性的噪聲特征,縮小優(yōu)化特征子集搜索范圍,但它并不能保證選擇出一個(gè)規(guī)模較小的優(yōu)化特征子集。Wrapper方法在篩選特征的過程中直接用所選特征子集來訓(xùn)練分類器,根據(jù)分類器在測(cè)試集的性能表現(xiàn)來評(píng)價(jià)該特征子集的優(yōu)劣,該方法在計(jì)算效率上不如Filter方法,但其所選的優(yōu)化特征子集的規(guī)模相對(duì)要小一些。
本文以隨機(jī)森林算法為基本工具研究Wrapper特征選擇方法,利用隨機(jī)森林分類器的分類準(zhǔn)確率作為特征可分性判據(jù),基于隨機(jī)森林算法本身的變量重要性度量進(jìn)行特征重要性排序,利用序列后向選擇方法(Sequential backward selection,SBS)和廣義序列后向選擇方法(Generalized sequential backward selection,GSBS)選取特征子集。實(shí)驗(yàn)結(jié)果表明,相比于文獻(xiàn)中[9-10]已有的特征選擇算法,本文的算法在性能上有較大的提高。
1 隨機(jī)森林定義1 隨機(jī)森林[?3]是一個(gè)由一組決策樹分類器{?h(?X,?θ?k),?k=1,2,…,?K}組成的集成分類器,其中{?θ?k}是服從獨(dú)立同分布的隨機(jī)向量,K表示隨機(jī)森林中決策樹的個(gè)數(shù),在給定自變量?X下,每個(gè)決策樹分類器通過投票來決定最優(yōu)的分類結(jié)果。
隨機(jī)森林是許多決策樹集成在一起的分類器,如果把決策樹看成分類任務(wù)中的一個(gè)專家,隨機(jī)森林就是許多專家在一起對(duì)某種任務(wù)進(jìn)行分類。
生成隨機(jī)森林的步驟如下:
(1)從原始訓(xùn)練數(shù)據(jù)集中,應(yīng)用bootstrap方法有放回地隨機(jī)抽取?K個(gè)新的自助樣本集,并由此構(gòu)建?K棵分類回歸樹,每次未被抽到的樣本組成了?K個(gè)袋外數(shù)據(jù)(Out-of-bag,OOB)。
(2)設(shè)有?n個(gè)特征,則在每一棵樹的每個(gè)節(jié)點(diǎn)處隨機(jī)抽取?m?try?個(gè)特征(?m?try≤?n),通過計(jì)算每個(gè)特征蘊(yùn)含的信息量,在?m?try個(gè)特征中選擇一個(gè)最具有分類能力的特征進(jìn)行節(jié)點(diǎn)分裂。
(3)每棵樹最大限度地生長,不做任何剪裁。
(4)將生成的多棵樹組成隨機(jī)森林,用隨機(jī)森林對(duì)新的數(shù)據(jù)進(jìn)行分類,分類結(jié)果按樹分類器的投票多少而定。
定義2 給定一組分類器?h1?(?X),?h2?(?X),…,?h?k?(?X),每個(gè)分類器的訓(xùn)練集都是從原始的服從隨機(jī)分布的數(shù)據(jù)集(?Y,?X)中隨機(jī)抽樣所得,余量函數(shù)(Margin function)定義為
| (1) |
式中:?I(?)是示性函數(shù)。
余量函數(shù)用于度量平均正確分類數(shù)超過平均錯(cuò)誤分類數(shù)的程度,余量值越大,分類預(yù)測(cè)越可靠。
定義3 泛化誤差定義為
| (2) |
式中:下標(biāo)?X、?Y表示概率?P覆蓋?X、?Y空間。
在隨機(jī)森林中,當(dāng)決策樹分類器足夠多,?h?k(?X)=?h(?X,?θ?k)服從強(qiáng)大數(shù)定律。
定理1 隨著隨機(jī)森林中決策樹數(shù)量的增加,所有序列?θ1,?θ2,…,?θk,?PE*幾乎處處收斂于
| (3) |
定理1表明隨機(jī)森林不會(huì)隨著決策樹的增加而產(chǎn)生過擬合問題,但可能會(huì)產(chǎn)生一定限度內(nèi)的泛化誤差。
變量重要性評(píng)估是隨機(jī)森林算法的一個(gè)重要特點(diǎn)。隨機(jī)森林程序通常提供4種變量重要性度量。本文采用基于袋外數(shù)據(jù)分類準(zhǔn)確率的變量重要性度量。
定義4 基于袋外數(shù)據(jù)分類準(zhǔn)確率的變量重要性度量[?7]定義為袋外數(shù)據(jù)自變量值發(fā)生輕微擾動(dòng)后的分類正確率與擾動(dòng)前分類正確率的平均減少量。
假設(shè)有bootstrap樣本?b=1,2,…,?B,?B表示訓(xùn)練樣本個(gè)數(shù),特征?X?j的基于分類準(zhǔn)確率的變量重要性度量?D?j按照下面的步驟計(jì)算:
(1)設(shè)置?b=1,在訓(xùn)練樣本上創(chuàng)建決策樹?T?b,并將袋外數(shù)據(jù)標(biāo)記為?
(2)在袋外數(shù)據(jù)上使用?T?b?對(duì)?數(shù)據(jù)進(jìn)行分類,統(tǒng)計(jì)正確分類的個(gè)數(shù),記為?
(3)對(duì)于特征?X?j,j=1,2,…,?N,對(duì)?中的特征?Xj的值進(jìn)行擾動(dòng),擾動(dòng)后的數(shù)據(jù)集記為?,使用?T?b?對(duì)?數(shù)據(jù)進(jìn)行分類,統(tǒng)計(jì)正確分類的個(gè)數(shù),記為?
(4)對(duì)于?b=2,3,…,?B,重復(fù)步驟(1)~(3)。
(5)特征?X?j?的變量重要性度量?Dj通過下面的公式進(jìn)行計(jì)算:
| (4) |
定義5 隨機(jī)森林算法的分類準(zhǔn)確率定義為
| (5) |
式中:TP(true positive)代表正確的肯定;TN(true negative)代表正確的否定;FP(false positive)代表錯(cuò)誤的肯定;FN(false negative)代表錯(cuò)誤的否定。
2 本文算法RFFS 2.1 算法描述本文提出了一種基于隨機(jī)森林的Wrapper特征選擇方法RFFS,利用隨機(jī)森林算法的變量重要性度量對(duì)特征進(jìn)行排序,然后采用序列后向搜索方法,每次從特征集合中去掉一個(gè)最不重要(重要性得分最小)的特征,逐次進(jìn)行迭代,并計(jì)算分類正確率,最終得到變量個(gè)數(shù)最少、分類正確率最高的特征集合作為特征選擇結(jié)果。為了保證實(shí)驗(yàn)結(jié)果的穩(wěn)定性,本文采用了10折交叉驗(yàn)證方法,在每一次迭代中,將數(shù)據(jù)集劃分成10等份,利用其中的9份作為訓(xùn)練集用于構(gòu)建隨機(jī)森林分類器,剩余的1份作為驗(yàn)證集數(shù)據(jù)進(jìn)行驗(yàn)證。在10折交叉驗(yàn)證過程中,選擇測(cè)試集上分類準(zhǔn)確率最高的一次迭代產(chǎn)生的變量重要性排序作為刪除特征的依據(jù),將10次迭代的平均分類準(zhǔn)確率作為該輪迭代的分類精度。具體過程如算法1所示。
算法1 基于隨機(jī)森林的特征選擇算法RFFS
輸入:原始數(shù)據(jù)集S
輸出:驗(yàn)證集上的最大分類正確率TGMaxAcc及其對(duì)應(yīng)的特征集合FGSort
步驟:
1.初始化
1.1讀入原始數(shù)據(jù)集S
1.2設(shè)置TGMaxAcc=0
2.For(ft in N-2)
2.1 將數(shù)據(jù)集S隨機(jī)劃分成10等份
2.2 設(shè)置局部最大分類準(zhǔn)確率TLMaxAcc=0
2.3 設(shè)置局部平均分類準(zhǔn)確率TLMeanAcc=0
2.4 初始化10折交叉驗(yàn)證中每次迭代的分類準(zhǔn)確率
TLAcc[1∶10]=0
2.5 For(i in 1∶10)
2.5.1 在S上運(yùn)行randomForest創(chuàng)建分類器
2.5.2 在測(cè)試集上執(zhí)行predict進(jìn)行分類
2.5.3 比較分類結(jié)果與觀測(cè)值,計(jì)算TLAcc
2.5.4 計(jì)算TLMeanAcc=TLMeanAcc+TLAcc[i]/10
2.5.5 If(TLMaxAcc<=TLAcc[i])
2.5.6 則TLMaxAcc=TLAcc[i]
2.5.7 對(duì)特征按變量重要性排序并存為FSort
2.6 If(TGMaxAcc<=TLMeanAcc)
則TGMaxAcc=TLMeanAcc
FGSort=FSort
2.7 從FSort中去掉重要性得分最低的一個(gè)特征,得到新的數(shù)據(jù)集S
3.輸出結(jié)果
3.1輸出全局最高分類準(zhǔn)確率TGMaxAcc
3.2輸出全局最高分類準(zhǔn)確率對(duì)應(yīng)的特征集合FGSort
注:ft代表循環(huán)變量,N代表數(shù)據(jù)集中所有特征個(gè)數(shù)。
2.2 時(shí)間復(fù)雜度分析本文所提出的隨機(jī)森林特征選擇方法中基分類器選擇CART算法。假設(shè)訓(xùn)練數(shù)據(jù)集的特征維數(shù)為?m,訓(xùn)練樣本個(gè)數(shù)為?n, CART算法的時(shí)間復(fù)雜度為?Ο?mnlogn2?。隨機(jī)森林在構(gòu)建CART樹的過程中,從?m個(gè)特征中隨機(jī)選擇?mtry個(gè)特征計(jì)算信息增益,并且對(duì)樹的生長不進(jìn)行剪枝,故訓(xùn)練每一個(gè)基分類器的計(jì)算時(shí)間小于?Ο?mnlogn2假設(shè)隨機(jī)森林中基分類器的個(gè)數(shù)為?k個(gè),則隨機(jī)森林算法的時(shí)間復(fù)雜度可以近似為?Οmnlogn2?。在本實(shí)驗(yàn)中,采用序列后向選擇策略進(jìn)行特征選擇需要循環(huán)?m-22次,每一輪循環(huán)中采用10折交叉驗(yàn)證,需運(yùn)行隨機(jī)森林算法10次,每輪循環(huán)需對(duì)特征子集進(jìn)行排序,采用快速排序算法的平均時(shí)間復(fù)雜度為?Ο?mlogm,根據(jù)排序后的特征集合生成新的訓(xùn)練數(shù)據(jù)集需要進(jìn)行m-2次,每次計(jì)算時(shí)間為常數(shù),故本算法總的時(shí)間復(fù)雜度可以近似表示為
| (6) |
由式(6)可見,RFFS算法的時(shí)間復(fù)雜度與特征維數(shù)?成近似平方關(guān)系,與數(shù)據(jù)集樣本個(gè)數(shù)?成近似立方關(guān)系,對(duì)于高維小樣本數(shù)據(jù),運(yùn)算時(shí)間是可以接受的,算法具有較好的擴(kuò)展性。
3 實(shí)驗(yàn)結(jié)果及分析 3.1 實(shí)驗(yàn)數(shù)據(jù)與方法為便于比較,從UCI數(shù)據(jù)集中選取了wdbc、breast-cancer-wisconsin、pima-indians-diabetes和heart disease4個(gè)數(shù)據(jù)集進(jìn)行測(cè)試。表1列出了這些數(shù)據(jù)集的特征,數(shù)據(jù)集維數(shù)從幾個(gè)到數(shù)十個(gè)不等。
| 表1?取自UCI的數(shù)據(jù)集Table 1?Dataset from UCI |
本文算法采用R語言進(jìn)行實(shí)現(xiàn),隨機(jī)森林核心算法采用R軟件中的randomForest程序包,其中?參數(shù)取Breiman建議的默認(rèn)值?為訓(xùn)練數(shù)據(jù)集中特征的個(gè)數(shù)),?ntree參數(shù)設(shè)置為1000。實(shí)驗(yàn)的硬件環(huán)境為Intel Core(TM)2 Duo CPU E4600@2.40 GHz,3.75 G的內(nèi)存,操作系統(tǒng)為Microsoft Windows 7,繪圖軟件采用Matlab7.0。
3.2 實(shí)驗(yàn)結(jié)果分析本文算法RFFS在搜索實(shí)現(xiàn)最大分類準(zhǔn)確率的特征子集時(shí)采用的是序列后向搜索策略,特征選擇過程和結(jié)果如圖1所示。從圖1可以看出,隨著不重要特征(在隨機(jī)森林變量重要性排序中排在最后的特征)的依次刪除,分類準(zhǔn)確率整體上呈現(xiàn)逐步提高的趨勢(shì),這主要是因?yàn)椴幌嚓P(guān)特征和冗余特征的消除提高了分類器性能;當(dāng)分類準(zhǔn)確率到達(dá)最高值97.98%后又開始呈現(xiàn)下降趨勢(shì),則是因?yàn)橛杏玫奶卣鞅幌?降低了分類器的性能。這說明了本文算法能夠有效地識(shí)別并消除冗余特征和不相關(guān)特征,從而提高分類器的分類性能。
| ? |
|
| 圖1?分類精度與特征個(gè)數(shù)之間的關(guān)系Fig.1?Relationship between classification accuracy and feature number |
表2列出了RFFS算法和CBFS算法、AMGA算法在不同實(shí)驗(yàn)數(shù)據(jù)集上的性能比較,其中SF列表示選出的最優(yōu)特征子集中的特征個(gè)數(shù),Acc列表示算法在實(shí)驗(yàn)數(shù)據(jù)集上的分類性能。CBFS算法、AMGA算法在相應(yīng)數(shù)據(jù)集上的實(shí)驗(yàn)數(shù)據(jù)分別來自文獻(xiàn)[?9]和文獻(xiàn)[?10],“—”表示該算法在相應(yīng)數(shù)據(jù)集上沒有進(jìn)行實(shí)驗(yàn)。
| 表2?不同算法的性能比較Table 2?Performance comparison of different algorithms |
從表2可以看出,RFFS算法在Breast、Diabetes、和Heart數(shù)據(jù)集上的分類正確率分別為98.2%、81.1%、92.3%,選擇出的特征個(gè)數(shù)分別為6、5、6。與CBFS算法相比,RFFS算法在特征個(gè)數(shù)基本相等或者更少的情況下,分類性能明顯優(yōu)于CBFS。RFFS算法在Breast數(shù)據(jù)集上選擇的特征個(gè)數(shù)與AMGA算法相等,分類性能略低于AMGA算法;在Diabetes數(shù)據(jù)集上,RFFS算法選擇的特征個(gè)數(shù)與AMGA算法相等,分類性能略高于AMGA算法;在Heart數(shù)據(jù)集上,RFFS算法比AMGA算法選擇了更少的特征數(shù)目,卻獲得了更高的分類精度。從整體上看,本文方法優(yōu)于文獻(xiàn)[?9]和文獻(xiàn)[?10]中的方法。實(shí)驗(yàn)結(jié)果表明,RFFS算法不僅能夠選擇出較優(yōu)的特征子集,而且能夠獲得較高的分類性能。
另外,本文算法也可以容易地?cái)U(kuò)展為使用廣義后向搜索策略進(jìn)行最優(yōu)子集搜索,為了獲得最好的分類效果,本文對(duì)刪除“最不重要特征”時(shí)采用的不同步長進(jìn)行了實(shí)驗(yàn),結(jié)果如表3所示。從表3可以看出,在所有6組實(shí)驗(yàn)中(依次刪除1個(gè)到6個(gè)特征),最高的分類性能是在每次刪除一個(gè)特征時(shí)獲得。需要說明的是,每次刪除一個(gè)特征并不是在所有數(shù)據(jù)集上的最優(yōu)選擇,由于本文所涉及的數(shù)據(jù)集特征數(shù)目還不是特別高,所以每次刪除一個(gè)特征有助于獲取最優(yōu)子集。當(dāng)數(shù)據(jù)集特征數(shù)目非常高時(shí),每次刪除一個(gè)特征就不再適用,因?yàn)榇罅康奶卣鲾?shù)目將會(huì)大大增加時(shí)間開銷,并且不能快速有效地消除冗余和不相關(guān)特征。如何對(duì)采用廣義后向搜索時(shí)的?值進(jìn)行設(shè)置,將是下一步研究的方向。
| 表3?每次刪除不同個(gè)數(shù)特征的實(shí)驗(yàn)結(jié)果Table 3?Experiment result when deleting different number of features in each time |
提出了一種基于隨機(jī)森林的封裝式特征選擇算法,該算法利用隨機(jī)森林算法的變量重要性度量對(duì)特征進(jìn)行排序,采用后向序列搜索方法尋找能夠訓(xùn)練最優(yōu)性能分類器的特征子集。實(shí)驗(yàn)結(jié)果表明本文的特征選擇算法可以獲得較好的分類性能和特征子集,與以前文獻(xiàn)中的方法[?9,?10]相比具有一定的優(yōu)勢(shì)。如何在高維數(shù)據(jù)集中確定廣義后向搜索方法中的?值,是下一步的研究內(nèi)容。
The authors have declared that no competing interests exist.參考文獻(xiàn) View Option?
| [1] | 蔣勝利.?高維數(shù)據(jù)的特征選擇與特征提取研究[D].?西安: 西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,?2011.? Jiang?Sheng-li.?Research on feature selection and feature extraction for high-dimensional data[D].?Xi'an: School of Computer Science and Engineering, Xidian University,?2011.?[本文引用:1] |
| [2] | Davies?S,?Russl?S.?NP-completeness of searches for smallest possible feature sets[C]∥Proceedings of the AAAI Fall Symposiums on Relevance, Menlo Park,?1994:?37-39.?[本文引用:1] |
| [3] | Breiman?L.?Rand om forests[J].?Machine Learning,?2001,?45(1):?5-32.?[本文引用:2]?[JCR: 1.467] |
| [4] | Strobl?Carolin,?Boulesteix?Anne-Laure,?Kneib?Thomas,?et al.?Conditional variable importance for rand om forests[J].?BMC Bioinformatics,?2008,?9(1):?1-11.?[本文引用:1]?[JCR: 3.024] |
| [5] | Reif?David M,?Motsinger?Alison A,?McKinney?Brett A,?et al.?Feature selection using a rand om forests classifier for the integrated analysis of multiple data types[C]∥IEEE Symposium on Computational Intelligence and Bioinformatics and Computational Biology,?2006:?171-178.?[本文引用:1] |
| [6] | Mohammed?Khalilia,?Sounak?Chakraborty,?Mihail?Popescu.?Predicting disease risks from highly imbalanced data using rand om forest[J].?BMC Medical Informatics and Decision Making,?2011,?11(7):?51-58.?[本文引用:1][JCR: 1.603] |
| [7] | Verikas?A,?Gelzinis?A,?Bacauskiene?M.?Mining data with rand om forests: a survey and results of new tests[J].?Pattern Recognition,?2011,?44(2):?330-349.?[本文引用:2]?[JCR: 2.632] |
| [8] | Inza?I,?Larranaga?P,?Blanco?R.?Filter versus wrapper gene selection approaches in DNA microarray domains[J].?Artificial Intelligence in Medicine,?2004,?31(2):?91-103.?[本文引用:1]?[JCR: 1.355] |
| [9] | 蔣盛益,?鄭琪,?張倩生.?基于聚類的特征選擇方法[J].?電子學(xué)報(bào),?2008,?36(12):?157-160.? Jiang?Sheng-yi,?Zheng?Qi,?Zhang?Qian-sheng.?Clustering-based feature selection[J].?Acta Electronica Sinica,2008,?36(12):?157-160.?[本文引用:3]?[CJCR: 0.686] |
| [10] | 劉元寧,?王剛,?朱曉冬,?等.?基于自適應(yīng)多種群遺傳算法的特征選擇[J].?吉林大學(xué)學(xué)報(bào): 工學(xué)版,?2011,?41(6):?1690-1693.? Liu?Yuan-ning,?Wang?Gang,?Zhu?Xiao-dong,?et al.?Feature selection based on adaptive multi-population genetic algorithm[J].?Journal of Jilin University(Engineering and Technology Edition),?2011,?41(6):?1690-1693.[本文引用:3]?[CJCR: 0.701] |
總結(jié)
以上是生活随笔為你收集整理的基于随机森林的特征选择算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动态SQL中变量赋值
- 下一篇: CA证书认证流程