2.1 算法描述
本文提出了一種基于隨機森林的Wrapper特征選擇方法RFFS,利用隨機森林算法的變量重要性度量對特征進行排序,然后采用序列后向搜索方法,每次從特征集合中去掉一個最不重要(重要性得分最小)的特征,逐次進行迭代,并計算分類正確率,最終得到變量個數最少、分類正確率最高的特征集合作為特征選擇結果。為了保證實驗結果的穩定性,本文采用了10折交叉驗證方法,在每一次迭代中,將數據集劃分成10等份,利用其中的9份作為訓練集用于構建隨機森林分類器,剩余的1份作為驗證集數據進行驗證。在10折交叉驗證過程中,選擇測試集上分類準確率最高的一次迭代產生的變量重要性排序作為刪除特征的依據,將10次迭代的平均分類準確率作為該輪迭代的分類精度。具體過程如算法1所示。
算法1 基于隨機森林的特征選擇算法RFFS
輸入:原始數據集S
輸出:驗證集上的最大分類正確率TGMaxAcc及其對應的特征集合FGSort
步驟:
1.初始化
1.1讀入原始數據集S
1.2設置TGMaxAcc=0
2.For(ft in N-2)
2.1 將數據集S隨機劃分成10等份
2.2 設置局部最大分類準確率TLMaxAcc=0
2.3 設置局部平均分類準確率TLMeanAcc=0
2.4 初始化10折交叉驗證中每次迭代的分類準確率
TLAcc[1∶10]=0
2.5 For(i in 1∶10)
2.5.1 在S上運行randomForest創建分類器
2.5.2 在測試集上執行predict進行分類
2.5.3 比較分類結果與觀測值,計算TLAcc
2.5.4 計算TLMeanAcc=TLMeanAcc+TLAcc[i]/10
2.5.5 If(TLMaxAcc<=TLAcc[i])
2.5.6 則TLMaxAcc=TLAcc[i]
2.5.7 對特征按變量重要性排序并存為FSort
2.6 If(TGMaxAcc<=TLMeanAcc)
則TGMaxAcc=TLMeanAcc
FGSort=FSort
2.7 從FSort中去掉重要性得分最低的一個特征,得到新的數據集S
3.輸出結果
3.1輸出全局最高分類準確率TGMaxAcc
3.2輸出全局最高分類準確率對應的特征集合FGSort
注:ft代表循環變量,N代表數據集中所有特征個數。