<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何解讀決策樹和隨機(jī)森林的內(nèi)部工作機(jī)制?

          共 3822字,需瀏覽 8分鐘

           ·

          2020-10-19 20:55















          數(shù)學(xué)算法俱樂部



          日期2020年10月17日

          正文共:2918字14

          預(yù)計(jì)閱讀時(shí)間8分鐘

          來源pivotal

          隨機(jī)森林在過去幾年里得到了蓬勃的發(fā)展。它是一種非線性的基于樹的模型,往往可以得到準(zhǔn)確的結(jié)果。但是,隨機(jī)森林的工作過程大都處于黑箱狀態(tài),往往難以解讀和完全理解。近日,Pivotal Engineering Journal 網(wǎng)站發(fā)表了一篇文章,對(duì)隨機(jī)森林的基礎(chǔ)進(jìn)行了深度解讀。該文從隨機(jī)森林的構(gòu)造模塊決策樹談起,通過生動(dòng)的圖表對(duì)隨機(jī)森林的工作過程進(jìn)行了介紹,能夠幫助讀者對(duì)隨機(jī)森林的工作方式有更加透徹的認(rèn)識(shí)。本文內(nèi)容基于 Ando Saabas 的一個(gè) GitHub 項(xiàng)目。另外,你也能在 GitHub 上找到用于創(chuàng)建本文中各種圖表的代碼。
          >>>>

          • Ando Saabas 的項(xiàng)目:https://github.com/andosa/treeinterpreter

          • 創(chuàng)建圖表的代碼:https://github.com/gregtam/interpreting-decision-trees-and-random-forests


          決策樹的工作方式

          決策樹可以看成為一個(gè) if-then 規(guī)則的集合,即由決策樹的根節(jié)點(diǎn)到葉節(jié)點(diǎn)的每一條路徑構(gòu)建一條規(guī)則,路徑上內(nèi)部節(jié)點(diǎn)的特征對(duì)應(yīng)著規(guī)則的條件,而葉節(jié)點(diǎn)的類對(duì)應(yīng)于規(guī)則的結(jié)論。因此決策樹就可以看作由條件 if(內(nèi)部節(jié)點(diǎn))和滿足條件下對(duì)應(yīng)的規(guī)則 then(邊)組成。

          決策樹的工作方式是以一種貪婪(greedy)的方式迭代式地將數(shù)據(jù)分成不同的子集。其中回歸樹(regression tree)的目的是最小化所有子集中的 MSE(均方誤差)或 MAE(平均絕對(duì)誤差);而分類樹(classification tree)則是對(duì)數(shù)據(jù)進(jìn)行分割,以使得所得到的子集的熵或基尼不純度(Gini impurity)最小。

          結(jié)果得到的分類器可以將特征空間分成不同的子集。對(duì)某個(gè)觀察的預(yù)測(cè)將取決于該觀察所屬的子集。


          圖 1:一個(gè)決策樹的迭代過程

          決策樹的貢獻(xiàn)

          以鮑魚數(shù)據(jù)集(https://archive.ics.uci.edu/ml/datasets/abalone)為例。我們將根據(jù)殼的重量、長(zhǎng)度、直徑等變量來預(yù)測(cè)鮑魚殼上環(huán)的數(shù)量。為了演示,我們構(gòu)建了一個(gè)很淺的決策樹。我們可以通過將樹的最大層數(shù)限制為 3 而得到這個(gè)樹。


          圖 2:預(yù)測(cè)不同環(huán)數(shù)的決策樹路徑

          要預(yù)測(cè)鮑魚的環(huán)的數(shù)量,決策樹將沿著樹向下移動(dòng)直到到達(dá)一個(gè)葉節(jié)點(diǎn)。每一步都會(huì)將當(dāng)前的子集分成兩個(gè)。對(duì)于一次特定的分割,我們根據(jù)平均環(huán)數(shù)的改變來定義對(duì)該分割做出了貢獻(xiàn)的變量。

          比如說,如果我們拿到一個(gè)殼重 0.02、長(zhǎng)度為 0.220 的鮑魚,那么它就將落在最左邊的葉節(jié)點(diǎn)上,預(yù)測(cè)的環(huán)數(shù)是 4.4731。殼重對(duì)預(yù)測(cè)環(huán)數(shù)的貢獻(xiàn)為:

          (7.587 - 9.958) + (5.701 - 7.587) = -4.257

          長(zhǎng)度的貢獻(xiàn)為:

          (4.473 - 5.701) = -1.228

          這些貢獻(xiàn)都是負(fù)數(shù),說明對(duì)于這個(gè)特定的鮑魚,殼重和長(zhǎng)度值會(huì)使預(yù)測(cè)的環(huán)數(shù)下降。

          我們可以通過運(yùn)行以下代碼得到這些貢獻(xiàn)。

          from?treeinterpreter?import?treeinterpreter?as?ti dt_reg_pred, dt_reg_bias, dt_reg_contrib = ti.predict(dt_reg, X_test)

          其中變量 dt_reg 是 sklearn 分類器目標(biāo),X_test 是一個(gè) Pandas DataFrame 或 numpy 數(shù)組,包含了我們希望從中得到預(yù)測(cè)和貢獻(xiàn)的特征。其貢獻(xiàn)變量 dt_reg_contrib 是一個(gè)二維 numpy 數(shù)組 (n_obs, n_features),其中 n_obs 是觀察的數(shù)量,n_features 是特征的數(shù)量。

          我們可以繪制一個(gè)給定鮑魚的這些貢獻(xiàn)的圖表,看看哪些特征對(duì)預(yù)測(cè)得到的值的影響最大。我們可以從下面這幅圖表看到這個(gè)特定的鮑魚的重量和長(zhǎng)度值對(duì)預(yù)測(cè)得到的環(huán)數(shù)所產(chǎn)生的負(fù)影響。


          圖 3:一個(gè)貢獻(xiàn)圖表示例(決策樹)

          我們可以使用小提琴圖表(Violin plot)將這個(gè)特定鮑魚的貢獻(xiàn)與所有鮑魚的情況進(jìn)行比較。這樣可以在這張圖表上疊加一個(gè)核密度估計(jì)。在下圖中,我們可以看到,與其它鮑魚相比,這個(gè)特定鮑魚的殼重異乎尋常地低。實(shí)際上,很多鮑魚的殼重值的貢獻(xiàn)都是正數(shù)。


          圖 4:使用 violin 圖對(duì)一個(gè)觀察樣本繪制的貢獻(xiàn)圖(決策樹),文末將附上 violin 圖的基本概念與用法。

          上面的圖雖然有些信息,但仍然無法讓我們完全理解一個(gè)特定變量對(duì)鮑魚所擁有的環(huán)數(shù)的影響。于是,我們可以根據(jù)一個(gè)給定特征的值繪制其貢獻(xiàn)。如果我們繪制殼重的值與其貢獻(xiàn)的比較,我們可以知道殼重的增長(zhǎng)會(huì)導(dǎo)致貢獻(xiàn)的增長(zhǎng)。


          圖 5:貢獻(xiàn)與殼重(決策樹)

          另一方面,去殼后的重量與貢獻(xiàn)的關(guān)系是非線性非單調(diào)的。更低的去殼后的重量沒有任何貢獻(xiàn),更高的去殼后的重量有負(fù)貢獻(xiàn),而在兩者之間,貢獻(xiàn)是正的。


          圖 6:貢獻(xiàn)與去殼后的重量(決策樹)

          擴(kuò)展成隨機(jī)森林

          通過將許多決策樹組成森林并為一個(gè)變量取所有樹的平均貢獻(xiàn),這個(gè)確定特征的貢獻(xiàn)的過程可以自然地?cái)U(kuò)展成隨機(jī)森林。


          圖 7:使用 violin 圖對(duì)一個(gè)觀察繪制的貢獻(xiàn)圖(隨機(jī)森林)

          因?yàn)殡S機(jī)森林固有的隨機(jī)性,一個(gè)給定殼重值的貢獻(xiàn)會(huì)有所不同。但是如下圖平滑的黑色趨勢(shì)線所示,這種增長(zhǎng)的趨勢(shì)仍然存在。就像在決策樹上一樣,我們可以看到殼重增大時(shí),貢獻(xiàn)會(huì)更高。


          圖 8:貢獻(xiàn)與殼重(隨機(jī)森林)

          同樣,我們也可能會(huì)看到復(fù)雜的不單調(diào)的趨勢(shì)。直徑的貢獻(xiàn)似乎在大約 0.45 處有一處下降,而在大約 0.3 和 0.6 處各有一處峰值。除此之外,直徑和環(huán)數(shù)之間的關(guān)系基本上是增長(zhǎng)的。


          圖 9:貢獻(xiàn)與直徑(隨機(jī)森林)

          分類

          我們已經(jīng)看到回歸樹的特征分布源自環(huán)的平均值以及其在后續(xù)分割中的變化方式。我們可以通過檢查每個(gè)子集中某個(gè)特定類別的觀察的比例,從而將其擴(kuò)展成二項(xiàng)分類或多項(xiàng)分類。一個(gè)特征的貢獻(xiàn)就是該特征所導(dǎo)致的總的比例變化。

          通過案例解釋更容易理解。假設(shè)現(xiàn)在我們的目標(biāo)是預(yù)測(cè)性別,即鮑魚是雌性、雄性還是幼體。


          圖 10:多項(xiàng)分類的決策樹路徑

          每個(gè)節(jié)點(diǎn)都有 3 個(gè)值——該子集中雌性、雄性和幼體各自的比例。一個(gè)臟器重量為 0.1 且殼重 0.1 的鮑魚屬于最左邊的葉節(jié)點(diǎn)(概率為 0.082、0.171 和 0.747)。適用于回歸樹的貢獻(xiàn)邏輯在這里也同樣適用。

          如果這個(gè)特定鮑魚是幼體,那么臟器重量的貢獻(xiàn)為:

          (0.59 - 0.315) = 0.275

          殼重的貢獻(xiàn)為:

          (0.747 - 0.59) = 0.157

          我們可以為每個(gè)類別繪制一張貢獻(xiàn)圖。下面我們給出了針對(duì)幼體類別的貢獻(xiàn)圖。


          圖 11:使用 violin 圖對(duì)一個(gè)幼體觀察繪制的貢獻(xiàn)圖(多類決策樹)

          和之前一樣,我們也可以為每一類繪制貢獻(xiàn)與特征的圖表。殼重對(duì)鮑魚是雌性的貢獻(xiàn)會(huì)隨殼重的增長(zhǎng)而增長(zhǎng),而對(duì)鮑魚是幼體的貢獻(xiàn)則會(huì)隨殼重的增長(zhǎng)而降低。對(duì)于雄性來說,殼重的貢獻(xiàn)首先會(huì)增長(zhǎng),在殼重超過了 0.5 之后貢獻(xiàn)又會(huì)下降。


          圖 12:每個(gè)類別的貢獻(xiàn)與殼重(隨機(jī)森林)

          結(jié)語

          在這篇文章中,我們表明可以通過查看路徑來獲得對(duì)決策樹和隨機(jī)森林的更加深入的理解。這對(duì)隨機(jī)森林尤其有用,因?yàn)殡S機(jī)森林是一種非常并行的而且通常性能很高的機(jī)器學(xué)習(xí)模型。為了滿足 Pivotal 客戶的業(yè)務(wù)需求,我們不僅需要提供有很高預(yù)測(cè)能力的模型,也要提供可解釋的模型。也就是說,不管效果如何,我們都不想給他們一個(gè)黑箱。當(dāng)與政府和金融領(lǐng)域的客戶做生意時(shí),這就是一個(gè)很重要的要求,因?yàn)槲覀兊哪P托枰ㄟ^合規(guī)性檢查。

          附 violin 圖基礎(chǔ)

          violin 圖是繪制數(shù)字?jǐn)?shù)據(jù)的方法,它和箱線圖十分相似,但其另外展示了分布的概率密度。下面我們先了解箱線圖:

          上圖這一組數(shù)據(jù)表明:

          • 最小值等于 5

          • 最大值等于 10

          • 平均值為 8

          • 下四分位數(shù)為 7,即第一四分位數(shù)(Q1),等于該樣本中所有數(shù)值由小到大排列后第 25% 的值。

          • 中位數(shù)為 8.5,即第二四分位數(shù)(Q2),等于該樣本中所有數(shù)值由小到大排列后第 50% 的值。

          • 上四分位數(shù)為 9,即第三四分位數(shù)(Q3),等于該樣本中所有數(shù)值由小到大排列后第 75% 的值。

          • 四分位距為 2(即ΔQ=Q3-Q1)。


          上述是箱線圖的基本參數(shù),箱線圖只顯示諸如平均值/中值和四分位數(shù)范圍的匯總統(tǒng)計(jì)數(shù)據(jù),violin 圖顯示了數(shù)據(jù)的完整分布。


          violin 圖概括了箱線圖所表達(dá)的統(tǒng)計(jì)量:

          • 上圖白點(diǎn)代表中位數(shù)

          • 灰色的矩形代表 Q3 和 Q1 之間的四分位距

          • 灰線代表 95% 的置信區(qū)間


          兩邊的灰色曲線代表核密度估計(jì),其展示了數(shù)據(jù)的分布形狀。其中兩邊間距較寬的曲線段代表樣本總體取給定值有較高的概率,較窄的曲線段表明取給定值有較小的概率。



          —?THE END —




          ?全球諾貝爾獎(jiǎng)得主最多的30所大學(xué)
          ?【直觀詳解】讓你永遠(yuǎn)忘不了的傅里葉變換解析
          ?最高檢:教職工有性侵記錄的,不得錄用
          ?機(jī)器學(xué)習(xí)中需要了解的 5 種采樣方法
          ?北大讀博手記:怎樣完成自己的博士生涯?非常具有指導(dǎo)性!
          ?她是法國(guó)數(shù)學(xué)界的“花木蘭”,高斯的“救命恩人”
          瀏覽 51
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91POR中文字幕 | 乱伦色区 | 羽月希亚洲一区二区三区 | 亚洲高清Aⅴ | 黄色成人网站在线观看免费 |