日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

使用R完成决策树分类

發布時間:2025/3/15 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用R完成决策树分类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于決策樹理論方面的介紹,李航的《統計機器學習》第五章有很好的講解。

傳統的ID3和C4.5一般用于分類問題,其中ID3使用信息增益進行特征選擇,即遞歸的選擇分類能力最強的特征對數據進行分割,C4.5唯一不同的是使用信息增益比進行特征選擇。

特征A對訓練數據D的信息增益g(D, A) = 集合D的經驗熵H(D) – 特征A給定情況下D的經驗條件熵H(D|A)

特征A對訓練數據D的信息增益比r(D, A) = g(D, A) / H(D)

而CART(分類與回歸)模型既可以用于分類、也可以用于回歸,對于回歸樹(最小二乘回歸樹生成算法),需要尋找最優切分變量和最優切分點,對于分類樹(CART生成算法),使用基尼指數選擇最優特征。

參考自博客,一個使用rpart完成決策樹分類的例子如下:

[plain]?view plaincopy

  • library(rpart);??
  • ??
  • ##?rpart.control對樹進行一些設置??
  • ##?xval是10折交叉驗證??
  • ##?minsplit是最小分支節點數,這里指大于等于20,那么該節點會繼續分劃下去,否則停止??
  • ##?minbucket:葉子節點最小樣本數??
  • ##?maxdepth:樹的深度??
  • ##?cp全稱為complexity?parameter,指某個點的復雜度,對每一步拆分,模型的擬合優度必須提高的程度??
  • ct?<-?rpart.control(xval=10,?minsplit=20,?cp=0.1)??
  • ??
  • ##?kyphosis是rpart這個包自帶的數據集??
  • ##?na.action:缺失數據的處理辦法,默認為刪除因變量缺失的觀測而保留自變量缺失的觀測。???????????
  • ##?method:樹的末端數據類型選擇相應的變量分割方法:??
  • ##?連續性method=“anova”,離散型method=“class”,計數型method=“poisson”,生存分析型method=“exp”??
  • ##?parms用來設置三個參數:先驗概率、損失矩陣、分類純度的度量方法(gini和information)??
  • ##?cost我覺得是損失矩陣,在剪枝的時候,葉子節點的加權誤差與父節點的誤差進行比較,考慮損失矩陣的時候,從將“減少-誤差”調整為“減少-損失”??
  • fit?<-?rpart(Kyphosis~Age?+?Number?+?Start,??
  • ????data=kyphosis,?method=”class”,control=ct,??
  • ????parms?=?list(prior?=?c(0.65,0.35),?split?=?“information”));??
  • ??
  • ##?第一種??
  • par(mfrow=c(1,3));??
  • plot(fit);??
  • text(fit,use.n=T,all=T,cex=0.9);??
  • ??
  • ##?第二種,這種會更漂亮一些??
  • library(rpart.plot);??
  • rpart.plot(fit,?branch=1,?branch.type=2,?type=1,?extra=102,??
  • ???????????shadow.col=”gray”,?box.col=”green”,??
  • ???????????border.col=”blue”,?split.col=”red”,??
  • ???????????split.cex=1.2,?main=”Kyphosis決策樹”);??
  • ??
  • ##?rpart包提供了復雜度損失修剪的修剪方法,printcp會告訴分裂到每一層,cp是多少,平均相對誤差是多少??
  • ##?交叉驗證的估計誤差(“xerror”列),以及標準誤差(“xstd”列),平均相對誤差=xerror±xstd??
  • printcp(fit);??
  • ??
  • ##?通過上面的分析來確定cp的值??
  • ##?我們可以用下面的辦法選擇具有最小xerror的cp的辦法:??
  • ##?prune(fit,?cp=?fit$cptable[which.min(fit$cptable[,"xerror"]),”CP”])??
  • ??
  • fit2?<-?prune(fit,?cp=0.01);??
  • rpart.plot(fit2,?branch=1,?branch.type=2,?type=1,?extra=102,??
  • ???????????shadow.col=”gray”,?box.col=”green”,??
  • ???????????border.col=”blue”,?split.col=”red”,??
  • ???????????split.cex=1.2,?main=”Kyphosis決策樹”);??

  • 效果圖如下:


    這是一篇相關的論文。

    總結

    以上是生活随笔為你收集整理的使用R完成决策树分类的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。