最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

R語(yǔ)言中自編基尼系數(shù)的CART回歸決策樹(shù)的實(shí)現(xiàn)

2021-04-14 10:15 作者:拓端tecdat  | 我要投稿

原文鏈接?

http://tecdat.cn/?p=14056

?

?

?

?本文為了說(shuō)明回歸樹(shù)的構(gòu)造(使用CART方法),考慮以下模擬數(shù)據(jù)集,

?

  1. > set.seed(1)

  2. > n=200

  3. > X1=runif(n)

  4. > X2=runif(n)

  5. > P=.8*(X1<.3)*(X2<.5)+

  6. + ? .2*(X1<.3)*(X2>.5)+

  7. + ? .8*(X1>.3)*(X1<.85)*(X2<.3)+

  8. + ? .2*(X1>.3)*(X1<.85)*(X2>.3)+

  9. + ? .8*(X1>.85)*(X2<.7)+

  10. + ? .2*(X1>.85)*(X2>.7)

  11. > Y=rbinom(n,size=1,P)

  12. > B=data.frame(Y,X1,X2)

具有一個(gè)因變量(感興趣的變量)和兩個(gè)連續(xù)的自變量( 變量

?和

)。

  1. > tail(B)

  2. Y ? ? ? ?X1 ? ? ? ?X2

  3. 195 0 0.2832325 0.1548510

  4. 196 0 0.5905732 0.3483021

  5. 197 0 0.1103606 0.6598210

  6. 198 0 0.8405070 0.3117724

  7. 199 0 0.3179637 0.3515734

  8. 200 1 0.7828513 0.1478457

理論分區(qū)如下

?

在這里,可以將樣本繪制在下方(請(qǐng)注意,第一個(gè)變量在上方的y軸上,在下方的x軸上),藍(lán)色點(diǎn)???等于1,紅色點(diǎn)等于0,

  1. > plot(X1,X2,col="white")

  2. > points(X1[Y=="1"],X2[Y=="1"],col="blue",pch=19)

  3. > points(X1[Y=="0"],X2[Y=="0"],col="red",pch=19)

?

為了構(gòu)造樹(shù),我們需要一個(gè)分區(qū)critera。最標(biāo)準(zhǔn)的可能是Gini的索引,當(dāng)將s分為兩類時(shí),可以寫(xiě)出該索引,??在此表示?

?

或??將分為三類時(shí),表示為?

等等,這里

?只是屬于分區(qū)的觀測(cè)值的計(jì)數(shù),??

?其???取值為

。但是可以考慮其他標(biāo)準(zhǔn),例如卡方距離,

?

在傳統(tǒng)上,當(dāng)我們考慮兩個(gè)等級(jí)時(shí),或者在三個(gè)等級(jí)的情況下。

同樣,這里的想法是使距離最大化:想法是區(qū)分,所以我們希望樣本盡可能不獨(dú)立。要計(jì)算基尼系數(shù)

我們只需構(gòu)造列聯(lián)表,然后計(jì)算上面給出的數(shù)量。首先,假設(shè)只有一個(gè)解釋變量。我們將樣本一分為二,并使用所有可能的分割值

,即

然后,我們?yōu)樗羞@些值計(jì)算基尼系數(shù)。結(jié)是使基尼系數(shù)最大化的值。有了第一個(gè)節(jié)點(diǎn)后,我們將繼續(xù)保留(從現(xiàn)在開(kāi)始將其稱為

)。我們通過(guò)尋找最佳第二選擇來(lái)重申:給定一個(gè)根節(jié)點(diǎn),考慮將樣本一分為三的值,并給出最高的基尼系數(shù),因此,我們考慮以下分區(qū)

或這個(gè)

也就是說(shuō),我們?cè)谏弦粋€(gè)結(jié)的下方或上方分割。然后我們進(jìn)行迭代。代碼可以是這樣的,


  1. > for(s in 1:4){

  2. + for(i in 1:length(u)){



  3. + vgini[i]=GINI(Y,I)



  4. + }

  5. +

  6. +

  7. + cat("knot",k,u[k],"\n")

  8. +

  9. +

  10. + }

  11. knot 69 0.3025479

  12. knot 133 0.5846202

  13. knot 72 0.3148172

  14. knot 111 0.4811517

第一步,基尼系數(shù)的值如下:

?

最高約為0.3。然后,我們嘗試分三部分構(gòu)造一個(gè)分區(qū)(拆分為0.3以下或以上)。我們得到以下基尼系數(shù)圖(作為第二個(gè)節(jié)點(diǎn)的函數(shù))

?當(dāng)樣本在0.6左右分裂(這成為我們的第二個(gè)節(jié)點(diǎn))時(shí)最大。等,現(xiàn)在,讓我們將代碼與標(biāo)準(zhǔn)R函數(shù)進(jìn)行比較,

  1. node), split, n, deviance, yval

  2. * denotes terminal node


  3. 1) root 200 49.8800 0.4750

  4. 2) X2 < 0.302548 69 12.8100 0.7536 *

  5. 3) X2 > 0.302548 131 28.8900 0.3282

  6. 6) X2 < 0.58462 65 16.1500 0.4615

  7. 12) X2 < 0.324591 7 ?0.8571 0.1429 *

  8. 13) X2 > 0.324591 58 14.5000 0.5000 *

  9. 7) X2 > 0.58462 66 10.4400 0.1970 *

我們確實(shí)獲得了類似的結(jié):第一個(gè)為0.302,第二個(gè)為0.584。因此,構(gòu)造樹(shù)并不難...

現(xiàn)在,如果我們考慮兩個(gè)解釋變量,該怎么辦?保持不變,除了分區(qū)的編寫(xiě)現(xiàn)在變得更加復(fù)雜。為了找到第一個(gè)節(jié)點(diǎn),我們考慮了兩個(gè)分量的所有值,然后再次保持最大化基尼指數(shù)的值,


  1. > plot(u1,gini[,1],ylim=range(gini),col="green",type="b",xlab="X1",ylab="Gini index")

  2. > abline(h=mg,lty=2,col="red")

  3. > if(i==1){points(u1[which.max(gini[,1])],mg,pch=19,col="red")

  4. + ? ? ? ? ?segments(u1[which.max(gini[,1])],mg,u1[which.max(gini[,1])],-100000)}

  5. > u2[which.max(gini[,2])]

  6. [1] 0.3025479

這些圖如下所示并獲得了右側(cè)的分區(qū),

?

或者我們分割第二個(gè)分區(qū)(然后得到以下分區(qū)),

?

在這里,最好先分割第二個(gè)變量。實(shí)際上,我們回到了前面討論的一維情況:正如預(yù)期的那樣,最好在0.3左右進(jìn)行分割。以下代碼已確認(rèn)這一點(diǎn),


  1. var ? n ? ? ? dev ? ? ?yval splits.cutleft splits.cutright

  2. 1 ? ? X2 200 49.875000 0.4750000 ? ? ?<0.302548 ? ? ? >0.302548

  3. 2 ? ? X1 ?69 12.811594 0.7536232 ? ? ?<0.800113 ? ? ? >0.800113

  4. 4 <leaf> ?57 ?8.877193 0.8070175

  5. 5 <leaf> ?12 ?3.000000 0.5000000

對(duì)于第二個(gè)結(jié),應(yīng)考慮四種情況:在第二個(gè)變量上再次分裂(再次),在上一個(gè)結(jié)之上或之下(請(qǐng)參見(jiàn)左下方)或在第一個(gè)變量上分裂。然后在上一個(gè)結(jié)的下方或上方設(shè)置一個(gè)分區(qū)(請(qǐng)參見(jiàn)右下方),

?

為了使樹(shù)可視化,代碼如下

?

注意,我們也可以可視化該分區(qū)。

?

參考文獻(xiàn)

?

1.從決策樹(shù)模型看員工為什么離職

?

2.R語(yǔ)言基于樹(shù)的方法:決策樹(shù),隨機(jī)森林,套袋Bagging,增強(qiáng)樹(shù)數(shù)據(jù)分析

?

3.python中使用scikit-learn和pandas決策樹(shù)進(jìn)行鳶尾花數(shù)據(jù)分類

?

4.R語(yǔ)言對(duì)用電負(fù)荷時(shí)間序列數(shù)據(jù)進(jìn)行K-medoids聚類建模和GAM回歸

?

5.R語(yǔ)言k-Shape算法股票價(jià)格時(shí)間序列聚類

?

6.r語(yǔ)言鳶尾花iris數(shù)據(jù)集的層次聚類

?

7.Python Monte Carlo K-Means聚類實(shí)戰(zhàn)研究

?

8.用R進(jìn)行網(wǎng)站評(píng)論文本挖掘聚類

?

9.Python中的Apriori關(guān)聯(lián)算法市場(chǎng)購(gòu)物籃分析

?

10.通過(guò)Python中的Apriori算法進(jìn)行關(guān)聯(lián)規(guī)則挖掘

?

11.使用LSTM神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)愛(ài)爾蘭的電力消耗

?

12.用R語(yǔ)言實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)股票實(shí)例

?


R語(yǔ)言中自編基尼系數(shù)的CART回歸決策樹(shù)的實(shí)現(xiàn)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
临沧市| 应城市| 贵德县| 太仆寺旗| 凉山| 和平区| 大足县| 雷州市| 建昌县| 安康市| 铜鼓县| 新密市| 二连浩特市| 古田县| 兖州市| 吉安市| 织金县| 大邑县| 本溪市| 镇巴县| 格尔木市| 英超| 阳高县| 互助| 汶上县| 阿克苏市| 综艺| 谷城县| 桐庐县| 兴化市| 阿克| 霞浦县| 平南县| 昌乐县| 静宁县| 唐河县| 乌拉特中旗| 安国市| 阳春市| 阜新| 上蔡县|