0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用隨機(jī)森林進(jìn)行特征重要性評估

新機(jī)器視覺 ? 來源:csdn ? 作者:zjuPeco ? 2022-10-10 17:14 ? 次閱讀

隨機(jī)森林是以決策樹為基學(xué)習(xí)器的集成學(xué)習(xí)算法。隨機(jī)森林非常簡單,易于實(shí)現(xiàn),計(jì)算開銷也很小,更令人驚奇的是它在分類和回歸上表現(xiàn)出了十分驚人的性能,因此,隨機(jī)森林也被譽(yù)為“代表集成學(xué)習(xí)技術(shù)水平的方法”。

一、隨機(jī)森林RF簡介

只要了解決策樹的算法,那么隨機(jī)森林是相當(dāng)容易理解的。隨機(jī)森林的算法可以用如下幾個(gè)步驟概括:

用有抽樣放回的方法(bootstrap)從樣本集中選取n個(gè)樣本作為一個(gè)訓(xùn)練集。

用抽樣得到的樣本集生成一棵決策樹。在生成的每一個(gè)結(jié)點(diǎn):

隨機(jī)不重復(fù)地選擇d個(gè)特征;

利用這d個(gè)特征分別對樣本集進(jìn)行劃分,找到最佳的劃分特征(可用基尼系數(shù)、增益率或者信息增益判別)。

重復(fù)步驟1到步驟2共k次,k即為隨機(jī)森林中決策樹的個(gè)數(shù)。

用訓(xùn)練得到的隨機(jī)森林對測試樣本進(jìn)行預(yù)測,并用票選法決定預(yù)測的結(jié)果。

下圖比較直觀地展示了隨機(jī)森林算法(圖片出自文獻(xiàn)2):

圖1:隨機(jī)森林算法示意圖

沒錯(cuò),就是這個(gè)到處都是隨機(jī)取值的算法,在分類和回歸上有著極佳的效果,是不是覺得強(qiáng)的沒法解釋~

然而本文的重點(diǎn)不是這個(gè),而是接下來的特征重要性評估。

二、特征重要性評估

現(xiàn)實(shí)情況下,一個(gè)數(shù)據(jù)集中往往有成百上前個(gè)特征,如何在其中選擇比結(jié)果影響最大的那幾個(gè)特征,以此來縮減建立模型時(shí)的特征數(shù)是我們比較關(guān)心的問題。這樣的方法其實(shí)很多,比如主成分分析,lasso等等。不過,這里我們要介紹的是用隨機(jī)森林來對進(jìn)行特征篩選。

用隨機(jī)森林進(jìn)行特征重要性評估的思想其實(shí)很簡單,說白了就是看看每個(gè)特征在隨機(jī)森林中的每棵樹上做了多大的貢獻(xiàn),然后取個(gè)平均值,最后比一比特征之間的貢獻(xiàn)大小。

好了,那么這個(gè)貢獻(xiàn)是怎么一個(gè)說法呢?通??梢杂没嶂笖?shù)(Gini index)或者袋外數(shù)據(jù)(OOB)錯(cuò)誤率作為評價(jià)指標(biāo)來衡量。

我們這里只介紹用基尼指數(shù)來評價(jià)的方法,首先對另一種方法做個(gè)簡單介紹。

的定義為:在 RF 的每棵樹中,使用隨機(jī)抽取的訓(xùn)練自助樣本建樹,并計(jì)算袋外數(shù)據(jù) OOB)的預(yù)測錯(cuò)誤率,然后隨機(jī)置換變量X,的觀測值后再次建樹并計(jì)算 OOB 的預(yù)測錯(cuò)誤率,最后計(jì)算兩次 OOB 錯(cuò)誤率的差值經(jīng)過標(biāo)準(zhǔn)化處理后在所有樹中的平均值即為變量 ,的置換重要性 ()

我們將變量重要性評分(variable importance measures)用 來表示,將Gini指數(shù)用 來表示,假設(shè)有 個(gè)特征 ,,,,, 棵決策樹, 個(gè)類別,現(xiàn)在要計(jì)算出每個(gè)特征 的Gini指數(shù)評分 ,亦即第 個(gè)特征在RF所有決策樹中節(jié)點(diǎn)分裂不純度的平均改變量。

第 棵樹節(jié)點(diǎn) 的 指數(shù)的計(jì)算公式為:

圖片

其中, 表示有 個(gè)類別, 表示節(jié)點(diǎn) 中類別 所占的比例。直觀地說,就是隨便從節(jié)點(diǎn) 中隨機(jī)抽取兩個(gè)樣本,其類別標(biāo)記不一致的概率。

特征 在第 棵樹節(jié)點(diǎn) 的重要性,即節(jié)點(diǎn) 分枝前后的 指數(shù)變化量為:

圖片

其中,和 分別表示分枝后兩個(gè)新節(jié)點(diǎn)的指數(shù)。如果,特征 在決策樹 i 中出現(xiàn)的節(jié)點(diǎn)為集合,那么 在第 棵樹的重要性為:

三、舉個(gè)例子

值得慶幸的是,sklearn已經(jīng)幫我們封裝好了一切,我們只需要調(diào)用其中的函數(shù)即可。

我們以UCI上葡萄酒的例子為例,首先導(dǎo)入數(shù)據(jù)集。

importpandasaspd
url='http://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data'
df=pd.read_csv(url,header=None)
df.columns=['Classlabel','Alcohol','Malicacid','Ash',
'Alcalinityofash','Magnesium','Totalphenols',
'Flavanoids','Nonflavanoidphenols','Proanthocyanins',
'Colorintensity','Hue','OD280/OD315ofdilutedwines','Proline']

然后,我們來大致看下這時(shí)一個(gè)怎么樣的數(shù)據(jù)集

importnumpyasnp
np.unique(df['Classlabel'])

輸出為

array([1,2,3],dtype=int64)

可見共有3個(gè)類別。然后再來看下數(shù)據(jù)的信息:

df.info()

輸出為


RangeIndex: 178 entries, 0 to 177
Data columns (total 14 columns):
Class label                     178 non-null int64
Alcohol                         178 non-null float64
Malic acid                      178 non-null float64
Ash                             178 non-null float64
Alcalinity of ash               178 non-null float64
Magnesium                       178 non-null int64
Total phenols                   178 non-null float64
Flavanoids                      178 non-null float64
Nonflavanoid phenols            178 non-null float64
Proanthocyanins                 178 non-null float64
Color intensity                 178 non-null float64
Hue                             178 non-null float64
OD280/OD315 of diluted wines    178 non-null float64
Proline                         178 non-null int64
dtypes: float64(11), int64(3)
memory usage: 19.5 KB

可見除去class label之外共有13個(gè)特征,數(shù)據(jù)集的大小為178。

按照常規(guī)做法,將數(shù)據(jù)集分為訓(xùn)練集和測試集。

try:
fromsklearn.cross_validationimporttrain_test_split
except:
fromsklearn.model_selectionimporttrain_test_split
fromsklearn.ensembleimportRandomForestClassifier
x,y=df.iloc[:,1:].values,df.iloc[:,0].values
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=0)
feat_labels=df.columns[1:]
forest=RandomForestClassifier(n_estimators=10000,random_state=0,n_jobs=-1)
forest.fit(x_train,y_train)

好了,這樣一來隨機(jī)森林就訓(xùn)練好了,其中已經(jīng)把特征的重要性評估也做好了,我們拿出來看下。

importances=forest.feature_importances_
indices=np.argsort(importances)[::-1]
forfinrange(x_train.shape[1]):
print("%2d)%-*s%f"%(f+1,30,feat_labels[indices[f]],importances[indices[f]]))

輸出的結(jié)果為

 1) Color intensity                0.182483
 2) Proline                        0.158610
 3) Flavanoids                     0.150948
 4) OD280/OD315 of diluted wines   0.131987
 5) Alcohol                        0.106589
 6) Hue                            0.078243
 7) Total phenols                  0.060718
 8) Alcalinity of ash              0.032033
 9) Malic acid                     0.025400
10) Proanthocyanins                0.022351
11) Magnesium                      0.022078
12) Nonflavanoid phenols           0.014645
13) Ash                            0.013916

對的就是這么方便。

如果要篩選出重要性比較高的變量的話,這么做就可以

threshold=0.15
x_selected=x_train[:,importances>threshold]
x_selected.shape

輸出為

(124, 3)

瞧,這不,幫我們選好了3個(gè)重要性大于0.15的特征了嗎~

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • RF
    RF
    +關(guān)注

    關(guān)注

    65

    文章

    3055

    瀏覽量

    167028
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1208

    瀏覽量

    24703

原文標(biāo)題:利用隨機(jī)森林評估特征重要性原理與應(yīng)用

文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    機(jī)器學(xué)習(xí)隨機(jī)森林相關(guān)知識

    機(jī)器學(xué)習(xí)之隨機(jī)森林(三)
    發(fā)表于 04-02 10:06

    GPS產(chǎn)業(yè)的發(fā)展和重要性與日俱增

    GPS產(chǎn)業(yè)的發(fā)展和重要性與日俱增,隨之而來的是對GPS接收機(jī)的測試要求越來越嚴(yán)格,從而準(zhǔn)確評估產(chǎn)品的性能。
    發(fā)表于 07-18 06:50

    隨機(jī)森林的相關(guān)知識

    機(jī)器學(xué)習(xí)之隨機(jī)森林(一)
    發(fā)表于 08-27 07:30

    代碼規(guī)范的重要性是什么

    論代碼規(guī)范的重要性
    發(fā)表于 05-19 13:07

    arm匯編的重要性是什么?

    arm匯編的重要性是什么?
    發(fā)表于 11-30 08:03

    基于隨機(jī)森林模型下CINI的RFG-SVM

    針對計(jì)算機(jī)輔助診斷(CAD)技術(shù)在乳腺癌疾病診斷準(zhǔn)確率的優(yōu)化問題,提出了一種基于隨機(jī)森林模型下Gini指標(biāo)特征加權(quán)的支持向量機(jī)方法(RFGSVM)。該方法利用
    發(fā)表于 11-22 15:57 ?0次下載
    基于<b class='flag-5'>隨機(jī)</b><b class='flag-5'>森林</b>模型下CINI的RFG-SVM

    隨機(jī)森林的跌倒檢測算法

    針對現(xiàn)有跌倒檢測算法由于缺乏真實(shí)老人跌倒樣本以及使用年輕人仿真跌倒樣本規(guī)模較小導(dǎo)致的過擬合和適應(yīng)不足等問題,提出了基于隨機(jī)森林的跌倒檢測算法。該算法采用滑動(dòng)窗口機(jī)制,對窗口內(nèi)的加速度數(shù)據(jù)進(jìn)行
    發(fā)表于 12-29 14:50 ?2次下載

    面向HC256,RC4利用NOST進(jìn)行系統(tǒng)隨機(jī)性檢測

    流密碼應(yīng)用廣泛,對密鑰流進(jìn)行隨機(jī)性測試在信息安全領(lǐng)域有重要作用。有別于對選定長度的隨機(jī)序列利用NIST統(tǒng)計(jì)包
    發(fā)表于 01-03 15:16 ?0次下載
    面向HC256,RC4<b class='flag-5'>利用</b>NOST<b class='flag-5'>進(jìn)行</b>系統(tǒng)<b class='flag-5'>隨機(jī)性</b>檢測

    基于遺傳算法和隨機(jī)森林的XGBoost改進(jìn)方法

    回歸預(yù)測是機(jī)器學(xué)習(xí)中重要的研究方向之一,有著廣闊的應(yīng)用領(lǐng)域。為了進(jìn)一步提升回歸預(yù)測的精度,提出了基于遺傳算法與隨機(jī)森林的 Gboost改進(jìn)方法( GA Xgboost_RF)。首先利用
    發(fā)表于 04-26 15:44 ?10次下載
    基于遺傳算法和<b class='flag-5'>隨機(jī)</b><b class='flag-5'>森林</b>的XGBoost改進(jìn)方法

    面向差分?jǐn)?shù)據(jù)挖掘隱私保護(hù)的隨機(jī)森林算法

    保護(hù)的同時(shí)提高分類的準(zhǔn)確率。以CART分類樹作為隨機(jī)森林中的單棵決策樹,使用 Laplace機(jī)制和指數(shù)機(jī)制添加噪聲并選擇最佳分裂特征。實(shí)驗(yàn)結(jié)果表明, RFDPP-Gini算法既能處理離散型特征
    發(fā)表于 05-12 14:14 ?1次下載

    基于特征切分和隨機(jī)森林的異常點(diǎn)檢測模型

    大數(shù)據(jù)時(shí)代,攻擊篡改、設(shè)備故障、人為造假等原因?qū)е潞A繑?shù)據(jù)中潛藏著許多異常值。準(zhǔn)確地檢測出數(shù)據(jù)中的異常點(diǎn),實(shí)現(xiàn)數(shù)據(jù)清洗,至關(guān)重要。文中提出一種結(jié)合特征切分與多層級聯(lián)隨杌森林的異常點(diǎn)檢測模型
    發(fā)表于 05-13 14:22 ?0次下載

    基于加權(quán)隨機(jī)森林等的惡意軟件檢測

    基于機(jī)器學(xué)習(xí)的 Android平臺惡意軟件檢測方法提取的權(quán)限信息特征維度高且類別區(qū)分能力弱,導(dǎo)致檢測精度低及復(fù)雜度高。為此,提出一種基于特征占比差與加權(quán)隨機(jī)森林的惡意軟件檢測方法。通過
    發(fā)表于 06-10 10:47 ?14次下載

    Python如何進(jìn)行特征重要性分析

    特征重要性分析用于了解每個(gè)特征(變量或輸入)對于做出預(yù)測的有用或價(jià)值。目標(biāo)是確定對模型輸出影響最大的最重要
    發(fā)表于 10-13 12:32 ?376次閱讀
    Python如何<b class='flag-5'>進(jìn)行</b><b class='flag-5'>特征</b><b class='flag-5'>重要性</b>分析

    Python中進(jìn)行特征重要性分析的9個(gè)常用方法

    重要性分析可以識別并關(guān)注最具信息量的特征,從而帶來以下幾個(gè)優(yōu)勢: 改進(jìn)的模型性能 減少過度擬合 更快的訓(xùn)練和推理 增強(qiáng)的可解釋 下面我們深入了解在Python中的一些特性重要性分析的
    的頭像 發(fā)表于 10-16 11:09 ?756次閱讀
    Python中<b class='flag-5'>進(jìn)行</b><b class='flag-5'>特征</b><b class='flag-5'>重要性</b>分析的9個(gè)常用方法

    什么是隨機(jī)森林隨機(jī)森林的工作原理

    隨機(jī)森林使用名為“bagging”的技術(shù),通過數(shù)據(jù)集和特征隨機(jī)自助抽樣樣本并行構(gòu)建完整的決策樹。雖然決策樹基于一組固定的特征,而且經(jīng)常過擬
    發(fā)表于 03-18 14:27 ?3588次閱讀
    什么是<b class='flag-5'>隨機(jī)</b><b class='flag-5'>森林</b>?<b class='flag-5'>隨機(jī)</b><b class='flag-5'>森林</b>的工作原理