99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀python決策樹之CART分類回歸樹詳解
python決策樹之CART分類回歸樹詳解
2018-02-10
收藏

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

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

1、CART分類回歸樹簡(jiǎn)介

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

表1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3、CART分類回歸樹的剪枝

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

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

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

CCP剪枝法步驟(1)

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

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

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

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

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

表2

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

CCP剪枝法步驟(2)

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

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }