欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python決策樹之CART分類回歸樹詳解

 更新時間:2017年12月20日 14:26:20   作者:zhihua_oba  
這篇文章主要為大家詳細介紹了python決策樹之CART分類回歸樹,具有一定的參考價值,感興趣的小伙伴們可以參考一下

決策樹之CART(分類回歸樹)詳解,具體內(nèi)容如下

1、CART分類回歸樹簡介

  CART分類回歸樹是一種典型的二叉決策樹,可以處理連續(xù)型變量和離散型變量。如果待預(yù)測分類是離散型數(shù)據(jù),則CART生成分類決策樹;如果待預(yù)測分類是連續(xù)型數(shù)據(jù),則CART生成回歸決策樹。數(shù)據(jù)對象的條件屬性為離散型或連續(xù)型,并不是區(qū)別分類樹與回歸樹的標(biāo)準(zhǔn),例如表1中,數(shù)據(jù)對象xi的屬性A、B為離散型或連續(xù)型,并是不區(qū)別分類樹與回歸樹的標(biāo)準(zhǔn)。

表1
表1

2、CART分類回歸樹分裂屬性的選擇

  2.1 CART分類樹——待預(yù)測分類為離散型數(shù)據(jù)

  選擇具有最小Gain_GINI的屬性及其屬性值,作為最優(yōu)分裂屬性以及最優(yōu)分裂屬性值。Gain_GINI值越小,說明二分之后的子樣本的“純凈度”越高,即說明選擇該屬性(值)作為分裂屬性(值)的效果越好。
  對于樣本集S,GINI計算如下:

這里寫圖片描述

其中,在樣本集S中,Pk表示分類結(jié)果中第k個類別出現(xiàn)的頻率。

  對于含有N個樣本的樣本集S,根據(jù)屬性A的第i個屬性值,將數(shù)據(jù)集S劃分成兩部分,則劃分成兩部分之后,Gain_GINI計算如下:

這里寫圖片描述

其中,n1、n2分別為樣本子集S1S2的樣本個數(shù)。

  對于屬性A,分別計算任意屬性值將數(shù)據(jù)集劃分成兩部分之后的Gain_GINI,選取其中的最小值,作為屬性A得到的最優(yōu)二分方案:

這里寫圖片描述

對于樣本集S,計算所有屬性的最優(yōu)二分方案,選取其中的最小值,作為樣本集S的最優(yōu)二分方案:

這里寫圖片描述

所得到的屬性A及其第i屬性值,即為樣本集S的最優(yōu)分裂屬性以及最優(yōu)分裂屬性值。

  2.2 CART回歸樹——待預(yù)測分類為連續(xù)型數(shù)據(jù)

  區(qū)別于分類樹,回歸樹的待預(yù)測分類為連續(xù)型數(shù)據(jù)。同時,區(qū)別于分類樹選取Gain_GINI為評價分裂屬性的指標(biāo),回歸樹選取Gain_σ為評價分裂屬性的指標(biāo)。選擇具有最小Gain_σ的屬性及其屬性值,作為最優(yōu)分裂屬性以及最優(yōu)分裂屬性值。Gain_σ值越小,說明二分之后的子樣本的“差異性”越小,說明選擇該屬性(值)作為分裂屬性(值)的效果越好。

  針對含有連續(xù)型分類結(jié)果的樣本集S,總方差計算如下:

這里寫圖片描述

其中,μ表示樣本集S中分類結(jié)果的均值,Ck表示第k個分類結(jié)果。

  對于含有N個樣本的樣本集S,根據(jù)屬性A的第i個屬性值,將數(shù)據(jù)集S劃分成兩部分,則劃分成兩部分之后,Gain_σ計算如下:

這里寫圖片描述

  對于屬性A,分別計算任意屬性值將數(shù)據(jù)集劃分成兩部分之后的Gain_σ,選取其中的最小值,作為屬性A得到的最優(yōu)二分方案:

這里寫圖片描述

  對于樣本集S,計算所有屬性的最優(yōu)二分方案,選取其中的最小值,作為樣本集S的最優(yōu)二分方案:

這里寫圖片描述

所得到的屬性A及其第i屬性值,即為樣本集S的最優(yōu)分裂屬性以及最優(yōu)分裂屬性值。

3、CART分類回歸樹的剪枝

  由于決策樹的建立完全是依賴于訓(xùn)練樣本,因此該決策樹對訓(xùn)練樣本能夠產(chǎn)生完美的擬合效果。但這樣的決策樹對于測試樣本來說過于龐大而復(fù)雜,可能產(chǎn)生較高的分類錯誤率。這種現(xiàn)象就稱為過擬合。因此需要將復(fù)雜的決策樹進行簡化,即去掉一些節(jié)點解決過擬合問題,這個過程稱為剪枝。

  剪枝方法分為預(yù)剪枝和后剪枝兩大類。預(yù)剪枝是在構(gòu)建決策樹的過程中,提前終止決策樹的生長,從而避免過多的節(jié)點產(chǎn)生。預(yù)剪枝方法雖然簡單但實用性不強,因為很難精確的判斷何時終止樹的生長。后剪枝是在決策樹構(gòu)建完成之后,對那些置信度不達標(biāo)的節(jié)點子樹用葉子結(jié)點代替,該葉子結(jié)點的類標(biāo)號用該節(jié)點子樹中頻率最高的類標(biāo)記。后剪枝方法又分為兩種,一類是把訓(xùn)練數(shù)據(jù)集分成樹的生長集和剪枝集;另一類算法則是使用同一數(shù)據(jù)集進行決策樹生長和剪枝。常見的后剪枝方法有CCP(Cost Complexity Pruning)、REP(Reduced Error Pruning)、PEP(Pessimistic Error Pruning)、MEP(Minimum Error Pruning)。其中,悲觀錯誤剪枝法PEP(Pessimistic Error Pruning)在“決策樹之C4.5算法詳解”中有詳細介紹,感興趣的小童鞋可以了解學(xué)習(xí)。這里我們詳細介紹CART分類回歸樹中應(yīng)用最廣泛的剪枝算法——代價復(fù)雜性剪枝法CCP(Cost Complexity Pruning)。

  代價復(fù)雜性剪枝法CCP(Cost Complexity Pruning)主要包含兩個步驟:(1)從原始決策樹T0開始生成一個子樹序列{T0,T1,...,Tn},其中,Ti+1Ti產(chǎn)生,Tn為根節(jié)點。(2)從第1步產(chǎn)生的子樹序列中,根據(jù)樹的真實誤差估計選擇最佳決策樹。

  CCP剪枝法步驟(1)

  生成子樹序列{T0,T1,...,Tn}的基本思想是從T0開始,裁剪Ti中關(guān)于訓(xùn)練數(shù)據(jù)集誤差增加最小的分枝來得到Ti+1。實際上,當(dāng)1棵樹T在節(jié)點t處剪枝時,它的誤差增加直觀上認(rèn)為是R(t)−R(Tt),其中,R(t)為在節(jié)點t的子樹被裁剪后節(jié)點t的誤差,R(Tt)為在節(jié)點t的子樹沒被裁剪時子樹Tt的誤差。然而,剪枝后,T的葉子數(shù)減少了L(Tt)−1,其中, L(Tt)為子樹Tt的葉子數(shù),也就是說,T的復(fù)雜性減少了。因此,考慮樹的復(fù)雜性因素,樹分枝被裁剪后誤差增加率由下式?jīng)Q定:

這里寫圖片描述

其中,R(t)表示節(jié)點t的子樹被裁剪后節(jié)點t的誤差,R(t)=r(t)∗p(t)r(t)是節(jié)點t的誤差率,p(t)是節(jié)點t上的樣本個數(shù)與訓(xùn)練集中樣本個數(shù)的比例。R(Tt)表示節(jié)點t的子樹沒被裁剪時子樹Tt的誤差,即子樹Tt上所有葉子節(jié)點的誤差之和。

  Ti+1就是選擇Ti中具有最小α值所對應(yīng)的剪枝樹。

  例如:圖1中ti表示決策樹中第i個節(jié)點,A、B表示訓(xùn)練集中的兩個類別,A、B之后的數(shù)據(jù)表示落入該節(jié)點分別屬于A類、B類的樣本個數(shù)。

這里寫圖片描述

  圖1,決策樹中訓(xùn)練樣本總個數(shù)為80。對于節(jié)點t4,其中,A類樣本46個,B類樣本4個,根據(jù)大多數(shù)原則,則節(jié)點t4中樣本為A類,故節(jié)點t4的子樹(t8、t9)被裁剪之后t4的誤差為:450∗5080=480。節(jié)點t4的子樹(t8、t9)被裁剪之前t4的誤差為:145∗4580+25∗580=380。故α(t4)=480−3802−1=0.0125。類似過程,依次得到所有節(jié)點的誤差增加率,如表2:

表2
這里寫圖片描述

  從表2可以看出,在原始樹T0行,4個非葉節(jié)點中t4α值最小,因此,裁剪T0t4節(jié)點的分枝得到T1;在T1行,雖然t2t3α值相同,但裁剪t2的分枝可以得到更小的決策樹,因此,T2是裁剪T1中的t2分枝得到的。

  CCP剪枝法步驟(2)

  如何根據(jù)第1步產(chǎn)生的子樹序列{T0,T1,...,Tn},選擇出1棵最佳決策樹是CCP剪枝法步驟(2)的關(guān)鍵。通常采用的方法有兩種,一種是V番交叉驗證(V-fold cross-validation),另一種是基于獨立剪枝數(shù)據(jù)集。此處不在過分贅述,感興趣的小童鞋,可以閱讀參考文獻[1][2][3]等。

參考文獻

[1] 魏紅寧. 決策樹剪枝方法的比較[J]. 西南交通大學(xué)學(xué)報, 2005, 40(1):44-48.
[2] 張宇. 決策樹分類及剪枝算法研究[D]. 哈爾濱理工大學(xué), 2009.
[3] Breiman L, Friedman J H, Olshen R, et al. Classification and Regression Trees[J]. Biometrics, 1984, 40(3):358.

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

  • 詳解如何使用Python的Plotly庫進行交互式圖形可視化

    詳解如何使用Python的Plotly庫進行交互式圖形可視化

    Python中有許多強大的工具和庫可用于創(chuàng)建交互式圖形,其中之一就是Plotly庫,Plotly庫提供了豐富的功能和靈活的接口,使得創(chuàng)建各種類型的交互式圖形變得簡單而直觀,本文將介紹如何使用Plotly庫來創(chuàng)建交互式圖形,需要的朋友可以參考下
    2024-05-05
  • python實現(xiàn)QQ定時發(fā)送新年祝福信息

    python實現(xiàn)QQ定時發(fā)送新年祝福信息

    大家好,本篇文章主要講的是python實現(xiàn)QQ定時發(fā)送新年祝福信息,感興趣的同學(xué)感快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • python多進程操作實例

    python多進程操作實例

    這篇文章主要介紹了python多進程操作實例,本文講解了multiprocessing類的相關(guān)方法,然后給出了一個綜合實例和運行效果,需要的朋友可以參考下
    2014-11-11
  • python3 pillow生成簡單驗證碼圖片的示例

    python3 pillow生成簡單驗證碼圖片的示例

    本篇文章主要介紹了python3 pillow生成簡單驗證碼圖片的示例,非常具有實用價值,需要的朋友可以參考下
    2017-09-09
  • python在windows下實現(xiàn)ping操作并接收返回信息的方法

    python在windows下實現(xiàn)ping操作并接收返回信息的方法

    這篇文章主要介紹了python在windows下實現(xiàn)ping操作并接收返回信息的方法,實例分析了Python實現(xiàn)ping操作的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • Ubuntu16.04 安裝多個python版本的問題及解決方法

    Ubuntu16.04 安裝多個python版本的問題及解決方法

    Ubuntu16.04自帶python2.7與python3.5,Ubuntu 官方 apt 庫中還未收錄 python 3.8,因此添加 deadsnakes PPA 源安裝python3.8,否則會出現(xiàn)報錯,接下來通過本文給大家介紹Ubuntu16.04 安裝python的問題,一起看看吧
    2021-09-09
  • python-opencv在有噪音的情況下提取圖像的輪廓實例

    python-opencv在有噪音的情況下提取圖像的輪廓實例

    下面小編就為大家?guī)硪黄猵ython-opencv在有噪音的情況下提取圖像的輪廓實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • python basemap 畫出經(jīng)緯度并標(biāo)定的實例

    python basemap 畫出經(jīng)緯度并標(biāo)定的實例

    今天小編就為大家分享一篇python basemap 畫出經(jīng)緯度并標(biāo)定的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python 實現(xiàn)堆排序算法代碼

    python 實現(xiàn)堆排序算法代碼

    python 實現(xiàn)堆排序算法代碼,需要的朋友可以參考下
    2012-06-06
  • 最新評論