关于决策树理论方面的介绍,李航的《统计机器学习》第五章有很好的讲解。

传统的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 plain copy
  1. library(rpart);
  2. ## rpart.control对树进行一些设置
  3. ## xval是10折交叉验证
  4. ## minsplit是最小分支节点数,这里指大于等于20,那么该节点会继续分划下去,否则停止
  5. ## minbucket:叶子节点最小样本数
  6. ## maxdepth:树的深度
  7. ## cp全称为complexity parameter,指某个点的复杂度,对每一步拆分,模型的拟合优度必须提高的程度
  8. ct <- rpart.control(xval=10, minsplit=20, cp=0.1)
  9. ## kyphosis是rpart这个包自带的数据集
  10. ## na.action:缺失数据的处理办法,默认为删除因变量缺失的观测而保留自变量缺失的观测。
  11. ## method:树的末端数据类型选择相应的变量分割方法:
  12. ## 连续性method=“anova”,离散型method=“class”,计数型method=“poisson”,生存分析型method=“exp”
  13. ## parms用来设置三个参数:先验概率、损失矩阵、分类纯度的度量方法(gini和information)
  14. ## cost我觉得是损失矩阵,在剪枝的时候,叶子节点的加权误差与父节点的误差进行比较,考虑损失矩阵的时候,从将“减少-误差”调整为“减少-损失”
  15. fit <- rpart(Kyphosis~Age + Number + Start,
  16. data=kyphosis, method="class",control=ct,
  17. parms = list(prior = c(0.65,0.35), split = "information"));
  18. ## 第一种
  19. par(mfrow=c(1,3));
  20. plot(fit);
  21. text(fit,use.n=T,all=T,cex=0.9);
  22. ## 第二种,这种会更漂亮一些
  23. library(rpart.plot);
  24. rpart.plot(fit, branch=1, branch.type=2, type=1, extra=102,
  25. shadow.col="gray", box.col="green",
  26. border.col="blue", split.col="red",
  27. split.cex=1.2, main="Kyphosis决策树");
  28. ## rpart包提供了复杂度损失修剪的修剪方法,printcp会告诉分裂到每一层,cp是多少,平均相对误差是多少
  29. ## 交叉验证的估计误差(“xerror”列),以及标准误差(“xstd”列),平均相对误差=xerror±xstd
  30. printcp(fit);
  31. ## 通过上面的分析来确定cp的值
  32. ## 我们可以用下面的办法选择具有最小xerror的cp的办法:
  33. ## prune(fit, cp= fit$cptable[which.min(fit$cptable[,"xerror"]),"CP"])
  34. fit2 <- prune(fit, cp=0.01);
  35. rpart.plot(fit2, branch=1, branch.type=2, type=1, extra=102,
  36. shadow.col="gray", box.col="green",
  37. border.col="blue", split.col="red",
  38. split.cex=1.2, main="Kyphosis决策树");

效果图如下:

这是一篇相关的论文。

决策树与R语言(RPART)相关推荐

  1. R语言使用rpart包构建决策树模型、使用prune函数进行树的剪枝、交叉验证预防过拟合、plotcp可视化复杂度、rpart.plot包可视化决策树、使用table函数计算混淆矩阵评估分类模型性能

    R语言使用rpart包构建决策树模型.使用prune函数进行树的剪枝.使用10折交叉验证选择预测误差最低的树来预防过拟合.plotcp可视化决策树复杂度.rpart.plot包可视化最终决策树.使用t ...

  2. R语言-决策树-party包

    1.首先解释下熵和吉尼系数在决策树的功用 决策树学习的关键是如何选择最优的划分属性.通常,随着划分过程的不断进行,我们希望决策树的内部分支节点所包含的样本尽可能属于同一类别,即节点的"纯度& ...

  3. ++代码实现 感知机的原理_决策树ID3原理及R语言python代码实现(西瓜书)

    决策树ID3原理及R语言python代码实现(西瓜书) 摘要: 决策树是机器学习中一种非常常见的分类与回归方法,可以认为是if-else结构的规则.分类决策树是由节点和有向边组成的树形结构,节点表示特 ...

  4. R语言︱决策树族——随机森林算法

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:有一篇<有监督学习选择深度学习 ...

  5. R语言 CART算法和C4.5算法(决策树)

    关注微信公共号:小程在线 关注CSDN博客:程志伟的博客 R版本:3.4.4 最新的R官网取消了mvpart包,有需要的可以留言或者加微信,我用R3.6.1版本的显示这个包不能使用. 还需要安装jav ...

  6. R语言 RevoScaleR的大规模数据集决策树模型应用案例

    RevoScaleR中的rxDTree函数使用基于分类的递归分区算法来拟合基于树的模型得到的模型类似于推荐的ř包rpart包产生的模型支持分类型树和回归型树.; 与rpart包一样,差异由响应变量的性 ...

  7. r语言svr模型_使用R语言建立一个决策树回归模型

    决策树是一种简单但使用广泛的分类算法,根据目标变量的类型,决策树分为分类决策树(目标变量为因子型)与回归决策树(目标变量为连续数值型).在这里,我们使用R建议一个回归决策树模型. 决策树简单介绍 对于 ...

  8. R语言CART决策树、随机森林、chaid树预测母婴电商平台用户寿命、流失可视化

    全文链接:http://tecdat.cn/?p=31644 借着二胎政策的开放与家庭消费升级的东风,母婴市场迎来了生机盎然的春天,尤其是母婴电商行业,近年来发展迅猛(点击文末"阅读原文&q ...

  9. 数据分享|R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化...

    全文链接:http://tecdat.cn/?p=22262 在讨论分类时,我们经常分析二维数据(一个自变量,一个因变量)(点击文末"阅读原文"获取完整代码数据). 但在实际生活中 ...

最新文章

  1. c语言通讯录以及写入文件,学C三个月了,学了文件,用C语言写了个通讯录程序...
  2. StackExchange.Redis 使用 (一)
  3. ipad无法充电怎么办_IPAD充电线破损无法保修,资深“果粉”吐槽:店大欺客!...
  4. 匪夷所思:罕见的 Oracle 全局事务锁等待事件分析
  5. java细节_java细节知识
  6. mysql存储过程批量建表
  7. vb改变字形的代码是什么_求VB中调整字体颜色代码
  8. 有多少程序员干到35岁,那么其他人去干什么了?
  9. 构思编辑器教你如何不用代码排版出好看的微信公众号文章
  10. 【Maya】后台拍屏:以指定摄像机的视口拍屏
  11. "Selenium + Firefox"如何使用带用户名密码认证的HTTP代理
  12. CSDN网站中的版权投诉的标准
  13. 华为hcie认证工程师里一定要知道的Radius 基本介绍
  14. 设计一个不浪费水的热水器
  15. 桐乡的java培训,桐乡java编程培训,桐乡java培训费用,桐乡java培训完了好不好就业...
  16. 2022嵌入式工程师面经(2023年1月更新)
  17. android aar编程,Android Studio模块化编程实践之aar
  18. Exce丨服务器2O19系统己满,《电子表格Exce20.docx
  19. Solidworks三维模型导入Simscape联合仿真的步骤
  20. 今日份课堂笔记:GridView的使用和Repeater控件的使用

热门文章

  1. 如何离线安装npm包
  2. html 中按钮控件变为透明,css如何实现按钮透明
  3. 五星好评html编写,五星好评.html
  4. stm32使用AD转换读取光敏电阻的值(光敏电阻5516)
  5. 【C语言小游戏】计算器
  6. HTML5菜单栏特效
  7. Oracle 字典表
  8. Vi编辑器的常用命令1(文件内操作)
  9. 马明哲:平安最大对手是阿里和腾讯等现代科技企业
  10. 重启tomcat命令