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