python随机森林特征重要性_基于随机森林识别特征重要性(翻译)
博主Slav Ivanov 的文章《Identifying churn drivers with Random Forests 》部分內(nèi)容翻譯。博主有一款自己的產(chǎn)品RetainKit,用AI和機(jī)器學(xué)習(xí)方法,幫助SaaS相關(guān)企業(yè)解決客戶流失問題。如對(duì)他們對(duì)產(chǎn)品有興趣,可以訪問下面的鏈接進(jìn)行更多了解:https://www.producthunt.com/upcoming/retainkit。
隨機(jī)森林
隨機(jī)森林是一個(gè)集成算法,通過生成很多棵樹,最終以投票或算均值的方式得到結(jié)果。這篇文章可視為對(duì)隨機(jī)森林中特征重要性估計(jì)的主要方法的回顧。
特征重要性
決策樹類算法的特點(diǎn)之一就是有良好的模型解釋性。我們可以分析出得到相應(yīng)結(jié)果的數(shù)據(jù)原因,也可以得到哪些特征比較重要。下面來回顧一下得到這些的主要方法:
1,平均不純度減少(MDI):表示每個(gè)特征對(duì)誤差的平均減少程度。《統(tǒng)計(jì)學(xué)習(xí)要素》的作者非常簡(jiǎn)潔的解釋了這種方法:“在每一棵樹的每一個(gè)分裂中,分裂準(zhǔn)則的改進(jìn)是對(duì)分裂變量的重要度量,并分別在森林中的所有樹上為每個(gè)變量累積。”讓我們?cè)敿?xì)說明一下這段話的意思。如我們所知,決策樹根據(jù)一些規(guī)則,將結(jié)點(diǎn)分裂為兩個(gè)子結(jié)點(diǎn)。每次分裂都是針對(duì)一個(gè)可以使誤差最小化的特征。誤差的計(jì)算可以使均方誤差,基尼純度,信息增益,或者其他一些根據(jù)需要設(shè)置的指標(biāo)。我們總結(jié)了所有樹上,這個(gè)特定變量得到的所有分割使誤差減少的情況。在sk-learn包中,每次分裂帶來的提升效果,是由到達(dá)節(jié)點(diǎn)的樣本數(shù)加權(quán)得到的,然后對(duì)特征的重要性進(jìn)行歸一化處理。值得注意的是,這種方法往往高估了具有許多類別的特性的重要性。這里描述了一種糾正MDI偏置的替代方法。
2,平均精確率減少(MDA):打亂每個(gè)特征的特征值順序,并且度量順序變動(dòng)對(duì)模型的精確率的影響。這種巧妙的方法利用袋外數(shù)據(jù)來計(jì)算重要性。OOB數(shù)據(jù)是訓(xùn)練集的一部分,但不用于訓(xùn)練這種特殊的樹。用OOB數(shù)據(jù)計(jì)算出基本誤差,然后對(duì)每個(gè)特征,隨機(jī)打亂順序。實(shí)際上,這就像用相同的分布使用隨機(jī)數(shù)據(jù)替換變量一樣,并忽視樹對(duì)該特性的已有知識(shí)。對(duì)于不重要的特征來說,打亂順序?qū)δP偷木_率影響不會(huì)太大,但是對(duì)于重要的特征來說,打亂順序就會(huì)降低模型的精確率。
3,Boruta:重復(fù)刪除比最佳特征差的特征。主要思想就是檢查比隨機(jī)噪聲重要的特征。首先我們要建立影子變量將所有特征混合。這就像在“減少平均精度”中描述的變量打亂一樣,但這個(gè)方法是同時(shí)對(duì)所有變量進(jìn)行操作。我們將影子特征加入到原有特征中,然后用隨機(jī)森林進(jìn)行訓(xùn)練。使用上述介紹的MDA或者M(jìn)DI方法,我們可以看到哪個(gè)原始變量比影子變量重要。如果不相關(guān)的特征較少,則重要性度量更精確。因此,上述過程重復(fù)到預(yù)定義的次數(shù),或者直到達(dá)到最小特征計(jì)數(shù)為止。這個(gè)算法從最不相關(guān)的特征開始刪除,因此我們可以用刪除順序作為特征重要性排序。Boruta是一個(gè)“相關(guān)”的特征選擇算法。這與通過確定最佳預(yù)測(cè)精度得到的最小數(shù)據(jù)集方法有細(xì)微的區(qū)別。正如該方法的作者所說的那樣:“這個(gè)算法嘗試找到所有對(duì)預(yù)測(cè)結(jié)果有用的特征,而不是找到一個(gè)使誤差最小的特征集合。”
總結(jié)
以上是生活随笔為你收集整理的python随机森林特征重要性_基于随机森林识别特征重要性(翻译)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python随机森林变量重要性_利用随机
- 下一篇: python爬虫requests源码链家