- Python機(jī)器學(xué)習(xí)(原書第3版)
- (美)塞巴斯蒂安·拉施卡 瓦希德·米爾賈利利
- 780字
- 2021-06-11 16:13:48
4.6 用隨機(jī)森林評(píng)估特征的重要性
在前面的章節(jié)中,我們學(xué)習(xí)了如何通過(guò)邏輯回歸,用L1正則化來(lái)消除那些不相關(guān)的特征,用SBS算法做特征選擇,并將其應(yīng)用到KNN算法。另一個(gè)用來(lái)從數(shù)據(jù)集中選擇相關(guān)特征的有用方法是隨機(jī)森林,即在第3章中介紹過(guò)的集成技術(shù)。可以用隨機(jī)森林的方法計(jì)算所有決策樹(shù)的平均雜質(zhì)度衰減,來(lái)測(cè)量特征的重要性,而不必考慮數(shù)據(jù)是否線性可分。更加方便的是,scikit-learn中實(shí)現(xiàn)的隨機(jī)森林已經(jīng)為我們收集好了特征的重要性值,在完成RandomForestClassifier
擬合后,我們可以通過(guò)訪問(wèn)feature_importances_
屬性取得它們。下面的代碼將在葡萄酒數(shù)據(jù)集上訓(xùn)練擁有500棵樹(shù)的森林,并根據(jù)13個(gè)特征各自的重要性為其排序,還記得在第3章中討論過(guò)的基于樹(shù)的模型并不需要使用標(biāo)準(zhǔn)或歸一化的特征:


執(zhí)行代碼后我們可以畫出一張圖,把葡萄酒數(shù)據(jù)集中不同的特征按其相對(duì)重要性進(jìn)行排序。請(qǐng)注意,特征重要性值的總和為1,而且呈正態(tài)分布,如圖4-9所示。

圖 4-9
我們可以得出這樣的結(jié)論:脯氨酸和黃酮的含量、顏色強(qiáng)度、OD280/OD315衍射和酒精濃度是數(shù)據(jù)集中基于500棵決策樹(shù)根據(jù)平均雜質(zhì)度衰減而確定的最具差異性的特征。有趣的是,結(jié)果中排在前兩位的特征(乙醇濃度和稀釋葡萄酒的OD280/OD315)也包括在用上節(jié)實(shí)現(xiàn)的SBS算法得出的三特征子集中。
然而,就可解釋性而言,隨機(jī)森林是值得一提的重要技術(shù)。如果兩個(gè)或多個(gè)特征高度相關(guān),那么一個(gè)特征就可能排得很靠前,而其他特征的信息可能根本無(wú)法完全捕獲。另一方面,如果我們所關(guān)心的只是模型的預(yù)測(cè)性能,而不是對(duì)特征重要值的解釋,那就不需要關(guān)心這個(gè)問(wèn)題了。
總結(jié)特征的重要值和隨機(jī)森林,值得一提的是,scikit-learn也實(shí)現(xiàn)了SelectFromModel
對(duì)象,我們可以在模型擬合后,根據(jù)用戶指定的閾值選擇特征,這對(duì)想用RandomForestClassifier
作為特征選擇器以及scikit-learn的Pipeline
對(duì)象的中間步驟很有用,它允許通過(guò)一個(gè)估計(jì)器連接不同的預(yù)處理步驟,在第6章中,我們將對(duì)此進(jìn)行詳細(xì)介紹。例如,我們可以在以下的代碼中,通過(guò)將threshhod
設(shè)置為0.1
把數(shù)據(jù)集減少到只包含五個(gè)最重要的特征:

- PHP動(dòng)態(tài)網(wǎng)站程序設(shè)計(jì)
- TypeScript Essentials
- 編程的修煉
- PHP+MySQL網(wǎng)站開(kāi)發(fā)技術(shù)項(xiàng)目式教程(第2版)
- 趣學(xué)Python算法100例
- 人臉識(shí)別原理及算法:動(dòng)態(tài)人臉識(shí)別系統(tǒng)研究
- HTML5入門經(jīng)典
- Learning Unity 2D Game Development by Example
- Node.js:來(lái)一打 C++ 擴(kuò)展
- Vue.js應(yīng)用測(cè)試
- Django實(shí)戰(zhàn):Python Web典型模塊與項(xiàng)目開(kāi)發(fā)
- 黑莓(BlackBerry)開(kāi)發(fā)從入門到精通
- Android初級(jí)應(yīng)用開(kāi)發(fā)
- Mastering Machine Learning with R
- Appcelerator Titanium Smartphone App Development Cookbook