楼主: 我的素质低
3986 3

[R] 〖素质笔记〗决策树学习笔记 [推广有奖]

已卖:2774份资源

学术权威

83%

还不是VIP/贵宾

-

TA的文库  其他...

〖素质文库〗

结构方程模型

考研资料库

威望
8
论坛币
23391 个
通用积分
28308.6707
学术水平
2705 点
热心指数
2881 点
信用等级
2398 点
经验
228456 点
帖子
2968
精华
52
在线时间
2175 小时
注册时间
2012-11-24
最后登录
2024-1-13

一级伯乐勋章 初级学术勋章 初级热心勋章 初级信用勋章 中级热心勋章 中级学术勋章 中级信用勋章 高级学术勋章 高级热心勋章 高级信用勋章 特级学术勋章

楼主
我的素质低 学生认证  发表于 2015-8-4 20:29:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

    今天学习了分类算法中的决策树。博大精深。


一、基本信息

    1、名称区别:决策树是统称,也称为分类树(分类变量)、回归树(连续变量)。


    2、定义:决策树模型是一种简单易用的非参数分类器。它不需要对数据有任何的先验假设,计算速度较快,结果容易解释,而且稳健性强,不怕噪声数据和缺失数据。

a、直观明了,神经网络 (这种方法的权重以及预测机制往往让人觉得很不透明) 等预测方法。

b、对缺失值的处理,是删除因变量缺失的观测 ,而保留有自变量缺失的观测 。


    3、决策树建模步骤:

1、如何选择自变量

2、如何选择分割点

3、确定停止划分的条件


    二、常见分类





1、3种最常见的决策树:

    CART分类回归树(classification and regression tree)。每个节点采用二分法(与C4.5最大的区别,c4.5可以有很多分支);用Gini Ratio作为衡量指标,如果分散指标程度很高的说明数据有很多类别。

    C4.5。最新有5.0版本;先建完整的决策树;使用自定义的错误率(Predicted Error Rate)对节点修剪。

    CHAID 卡方自动交互检验 (Chi-squared Automatic Interaction)。计算节点中类别的p值。根据p值的大小决定决策树是否生长不需要修剪(与前两者的区别)。


    2、聚类分析、判别分析、分类树的区别



三、R语言中rpart包与party包的区别




  1、CP参数定义

    cp: complexity parameter复杂性参数,用来修剪树的.


    当决策树复杂度超过一定程度后,随着复杂度的提高,测试集的分类精确度反而会降低。因此,建立的决策树不宜太复杂,需进行剪枝。该剪枝算法依赖于复杂性参数cp,cp随树复杂度的增加而减小,当增加一个节点引起的分类精确度变化量小于树复杂度变化的cp倍时,则须剪去该节点。故建立一棵既能精确分类,又不过度适合的决策树的关键是求解一个合适的cp值。一般选择错判率最小值对应的cp值来修树.


    2、CP选择问题

建立树模型要权衡两方面问题,一个是要拟合得使分组后的变异较小,另一个是要防止过度拟合,而使模型的误差过大,前者的参数是CP,后者的参数是Xerror。所以要在Xerror最小的情况下,也使CP尽量小。




四、决策树建模步骤详





1、生成随机数——runif(nrow(x),0,1)

2、将数据集进行划分,训练集与测试集

titanic.train <- titanic[x < .4,]

titanic.test <- titanic[x>= .4,]

选取了x变量 小于0.4 或 大于0.4 为训练集

  • 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决策树");


0001.jpg

0002.jpg

0003.jpg

0004.jpg

0005.jpg

0006.jpg

欢迎大牛们一起交流~






二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:学习笔记 决策树 习笔记 interaction regression 因变量 自变量 而且 模型 如何

已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
xddlovejiao1314 + 100 + 100 + 5 + 5 + 5 精彩帖子
niuniuyiwan + 60 + 60 + 5 + 5 + 5 精彩帖子

总评分: 经验 + 160  论坛币 + 160  学术水平 + 10  热心指数 + 10  信用等级 + 10   查看全部评分

本帖被以下文库推荐

心晴的时候,雨也是晴;心雨的时候,晴也是雨!
扣扣:407117636,欢迎一块儿吐槽!!

沙发
xddlovejiao1314 学生认证  发表于 2015-8-5 08:36:32
在牛A与牛C间的道路上越走越远了,哈哈~
已有 1 人评分经验 论坛币 收起 理由
niuniuyiwan + 60 + 5 精彩帖子

总评分: 经验 + 60  论坛币 + 5   查看全部评分

藤椅
niuniuyiwan 在职认证  发表于 2015-8-5 19:02:10
感谢分享,壮哉,伟哉!

板凳
CQJJ 发表于 2016-10-29 22:37:25
请问大神们,如果变量是个2分类的变量,比如性别(男性、女性)如何在CART方法中制作到决策树中?本人按上面代码跑过一遍,Sex被划分为0.5了,应该是按男性/女性来划分!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-21 15:58