在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

利用隨機森林進行特征重要性評估

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

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

一、隨機森林RF簡介

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

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

用抽樣得到的樣本集生成一棵決策樹。在生成的每一個結點:

隨機不重復地選擇d個特征;

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

重復步驟1到步驟2共k次,k即為隨機森林中決策樹的個數。

用訓練得到的隨機森林對測試樣本進行預測,并用票選法決定預測的結果。

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

圖1:隨機森林算法示意圖

沒錯,就是這個到處都是隨機取值的算法,在分類和回歸上有著極佳的效果,是不是覺得強的沒法解釋~

然而本文的重點不是這個,而是接下來的特征重要性評估。

二、特征重要性評估

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

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

好了,那么這個貢獻是怎么一個說法呢?通??梢杂没嶂笖担℅ini index)或者袋外數據(OOB)錯誤率作為評價指標來衡量。

我們這里只介紹用基尼指數來評價的方法,首先對另一種方法做個簡單介紹。

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

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

第 棵樹節點 的 指數的計算公式為:

圖片

其中, 表示有 個類別, 表示節點 中類別 所占的比例。直觀地說,就是隨便從節點 中隨機抽取兩個樣本,其類別標記不一致的概率。

特征 在第 棵樹節點 的重要性,即節點 分枝前后的 指數變化量為:

圖片

其中,和 分別表示分枝后兩個新節點的指數。如果,特征 在決策樹 i 中出現的節點為集合,那么 在第 棵樹的重要性為:

三、舉個例子

值得慶幸的是,sklearn已經幫我們封裝好了一切,我們只需要調用其中的函數即可。

我們以UCI上葡萄酒的例子為例,首先導入數據集。

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']

然后,我們來大致看下這時一個怎么樣的數據集

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

輸出為

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

可見共有3個類別。然后再來看下數據的信息:

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個特征,數據集的大小為178。

按照常規做法,將數據集分為訓練集和測試集。

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)

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

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]]))

輸出的結果為

 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個重要性大于0.15的特征了嗎~

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • RF
    RF
    +關注

    關注

    65

    文章

    3059

    瀏覽量

    167364
  • 數據集
    +關注

    關注

    4

    文章

    1209

    瀏覽量

    24834

原文標題:利用隨機森林評估特征重要性原理與應用

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    機器學習隨機森林相關知識

    機器學習之隨機森林(三)
    發表于 04-02 10:06

    GPS產業的發展和重要性與日俱增

    GPS產業的發展和重要性與日俱增,隨之而來的是對GPS接收機的測試要求越來越嚴格,從而準確評估產品的性能。
    發表于 07-18 06:50

    隨機森林的相關知識

    機器學習之隨機森林(一)
    發表于 08-27 07:30

    代碼規范的重要性是什么

    論代碼規范的重要性
    發表于 05-19 13:07

    UPS的重要性

    中心機房的UPS太重要了,前不久就出現過停電壞了一個磁盤陳列硬盤的事故,一個2T的硬盤壞了,還好有一個備用的硬盤使用,否則磁盤陳列里的資料就岌岌可危了。服務器多了,UPS的重要性尤其重要,學校周邊
    發表于 11-16 09:09

    arm匯編的重要性是什么?

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

    基于隨機森林模型下CINI的RFG-SVM

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

    隨機森林的跌倒檢測算法

    針對現有跌倒檢測算法由于缺乏真實老人跌倒樣本以及使用年輕人仿真跌倒樣本規模較小導致的過擬合和適應不足等問題,提出了基于隨機森林的跌倒檢測算法。該算法采用滑動窗口機制,對窗口內的加速度數據進行
    發表于 12-29 14:50 ?2次下載

    面向HC256,RC4利用NOST進行系統隨機性檢測

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

    面向差分數據挖掘隱私保護的隨機森林算法

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

    基于特征切分和隨機森林的異常點檢測模型

    大數據時代,攻擊篡改、設備故障、人為造假等原因導致海量數據中潛藏著許多異常值。準確地檢測出數據中的異常點,實現數據清洗,至關重要。文中提出一種結合特征切分與多層級聯隨杌森林的異常點檢測模型
    發表于 05-13 14:22 ?0次下載

    基于加權隨機森林等的惡意軟件檢測

    基于機器學習的 Android平臺惡意軟件檢測方法提取的權限信息特征維度高且類別區分能力弱,導致檢測精度低及復雜度高。為此,提出一種基于特征占比差與加權隨機森林的惡意軟件檢測方法。通過
    發表于 06-10 10:47 ?14次下載

    Python如何進行特征重要性分析

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

    Python中進行特征重要性分析的9個常用方法

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

    什么是隨機森林隨機森林的工作原理

    隨機森林使用名為“bagging”的技術,通過數據集和特征隨機自助抽樣樣本并行構建完整的決策樹。雖然決策樹基于一組固定的特征,而且經常過擬
    發表于 03-18 14:27 ?3762次閱讀
    什么是<b class='flag-5'>隨機</b><b class='flag-5'>森林</b>?<b class='flag-5'>隨機</b><b class='flag-5'>森林</b>的工作原理
    主站蜘蛛池模板: 一级毛片在线播放 | 免费看黄色片的软件 | 欧美日本一区二区三区 | 中文字幕在线看视频一区二区三区 | 在线视频久久 | 拍拍拍拍拍拍拍无挡大全免费 | 日本黄色小说视频 | 亚洲日韩图片专区第1页 | 国产黄色在线 | 香蕉视频色版在线观看 | 天天干天天噜 | 热久久久久 | 色天使久久综合网天天 | 日本久久久久久久 | 又粗又长又大又黄的日本视频 | 亚洲视频你懂的 | 欧美性猛交xxxxbbbb | 天天摸天天爽天天澡视频 | 国产精品久久久久久久久免费hd | 欧美色综合高清视频在线 | αv天堂| 亚洲一区区 | 午夜免费福利在线 | 久久精品国波多野结衣 | 福利99| 色视频在线 | 国产精品久久久精品视频 | 国产亚洲精品美女久久久 | 一二三区乱码一区二区三区码 | 美女又黄又免费 | 天天天综合 | 亚洲午夜视频在线 | 男人操女人视频在线观看 | 五月天停婷基地 | 黄色免费毛片 | 欧美性生交xxxxx久久久 | 中文字幕视频一区 | 欧美特级午夜一区二区三区 | 最好看免费中文字幕2018视频 | 狠狠色噜噜狠狠狠 | 网友自拍区一区二区三区 |