楼主: 万木青
7324 11

[问答] R语言的分类回归树 printcp结果的理解?还没预测怎有错判率? [推广有奖]

  • 4关注
  • 1粉丝

已卖:165份资源

博士生

8%

还不是VIP/贵宾

-

威望
0
论坛币
2895 个
通用积分
5.7446
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
2168 点
帖子
136
精华
0
在线时间
195 小时
注册时间
2014-10-20
最后登录
2021-4-12

楼主
万木青 发表于 2018-12-2 11:46:07 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
R中的代码如下:问题在于生成的树TreeFit还没有用于预测,在printcp(TreeFit)的输出中却显示根结点的错误率为0.45,这个0.45是怎么来的? 假设是它自已内部于对生成树的观测预测的结果,那实现上我用它对观测进行预测,通过混淆矩阵的计算
误判率却是0.283,这又做何解释?请专业人员进行指点指点,万谢!
MailShot<-read.table(file="邮件营销数据.txt",header=TRUE) # 300 obs. of  10 variables
MailShot<-MailShot[,-1] # 去掉首列
Ctl<-rpart.control(minsplit=20,maxcompete=4,maxdepth=30,cp=0.01,xval=10)#预、后剪枝参数采用默认设置
set.seed(12345)
TreeFit<-rpart(MAILSHOT~.,data=MailShot,method="class",parms=list(split="gini"),control = Ctl)#生成树
printcp(TreeFit) #输出结果如黄色部分:
Classification tree:
rpart(formula = MAILSHOT ~ ., data = MailShot, method = "class",
    parms = list(split = "gini"), control = Ctl)
Variables actually used in tree construction:
[1] AGE    CAR    GENDER INCOME REGION
Root node error: 135/300 = 0.45     
n= 300
        CP nsplit rel error  xerror     xstd
1 0.214815      0   1.00000 1.00000 0.063828
2 0.025926      1   0.78519 0.88148 0.062765
3 0.018519      3   0.73333 0.97037 0.063633
4 0.014815      5   0.69630 0.98519 0.063737
5 0.012346      7   0.66667 1.02222 0.063944
6 0.010000     10   0.62963 1.01481 0.063909

CFit1<-predict(TreeFit,MailShot,type="class")  #用生成的树对参与建树的观测进行预测
ConfM1<-table(MailShot$MAILSHOT,CFit1) # 计算单个分类树的混淆矩阵
(E1<-(sum(ConfM1)-sum(diag(ConfM1)))/sum(ConfM1)) # 计算单个树的错判率
#误判率为0.2833333 用全部观测构造的树对全体观测的分类错判率


二维码

扫码加我 拉你入群

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

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

关键词:混淆矩阵 专业人员 误判率 生成树 错误率 R语言 决策树 分类回归 printcp解读

沙发
jgchen1966 发表于 2018-12-2 16:15:38
如此基本的概念,不想自已搞清,就别做了。。太累,瞧着都累!!!

藤椅
万木青 发表于 2018-12-2 16:43:19
jgchen1966 发表于 2018-12-2 16:15
如此基本的概念,不想自已搞清,就别做了。。太累,瞧着都累!!!
前辈,来这里就是想搞清楚,这个是我自已在学习过程中的疑惑,文献并末有对此作说明,所以才来求教!
这不就是来学习的?

板凳
jgchen1966 发表于 2018-12-2 17:10:27
万木青 发表于 2018-12-2 16:43
前辈,来这里就是想搞清楚,这个是我自已在学习过程中的疑惑,文献并末有对此作说明,所以才来求教!
这 ...
当然,学习没错,但论坛也不是入门学习的好地方。。
你提到的两个基本概念,如此地基本,任何一本讲“模式识别与分类(Pattern_classification)”的教材,都会讲解。否则,此类教材也没法正确讲解“模式识别与分类”。。

报纸
万木青 发表于 2018-12-2 19:43:47
jgchen1966 发表于 2018-12-2 17:10
当然,学习没错,但论坛也不是入门学习的好地方。。
你提到的两个基本概念,如此地基本,任何一本讲“模 ...
我并没将论坛作为入门学习的地方,相关算法学习都是从专业书籍中进行学习。
关于决策树已学过ID3、CART等理论知识,知道变量的选择及划分原理,同类算法的区别及应用也大致清楚,只是在R这门语言中的一些输出结果书中并末提及,为更好的理解这类算法不才来求解,
目前没看到有一本关于R语言的书对此问题做明确说明。这里是否可以理解为首个分组变量的
最佳分割值进行分组之后,1类和0类错判的总错判观测是135条?
请前辈明示!

地板
万木青 发表于 2018-12-2 19:43:47
jgchen1966 发表于 2018-12-2 17:10
当然,学习没错,但论坛也不是入门学习的好地方。。
你提到的两个基本概念,如此地基本,任何一本讲“模 ...
我并没将论坛作为入门学习的地方,相关算法学习都是从专业书籍中进行学习。
关于决策树已学过ID3、CART等理论知识,知道变量的选择及划分原理,同类算法的区别及应用也大致清楚,只是在R这门语言中的一些输出结果书中并末提及,为更好的理解这类算法不才来求解,
目前没看到有一本关于R语言的书对此问题做明确说明。这里是否可以理解为首个分组变量的
最佳分割值进行分组之后,1类和0类错判的总错判观测是135条?
请前辈明示!

7
jgchen1966 发表于 2018-12-2 20:39:59
一是,MailShot数据集,共有300个观察,其目标变量是MAILSHOT,二项因子变量,一类有135观察,另一类有165个观察,对不?? 我没有见过你的这个MailShot数据集 。
  二是,CART树,分类起始,先将所有300个观察全放入Root node(树根结)中。
三 是,CART对分类,是按多数胜制投票来决定每个结(node)的类。现在Root node 中共有300个,但另一类有165个,因此就会将300个观察全分为另一类,如此,就出现了135个分类错误。 这就是 Root node error: 135/300 = 0.45
四是,你建完CART模型后,还是用MailShot数据集作预测,因此,你的预测是样本内的预测,预测误也是样本内,这过于乐观地评价了你的CART模型的绩效,一般不用,该用测试数据。
五是,你将预测的类结果,建了混淆矩阵  ,这是分类结果评价的重要方法之一,做分类该对它相当熟悉。但它只是依一个切点(0.5)的结果,是否最优 ,有待分析(这本是一个分类中的大题目)。
六是,混淆矩阵的对角格中数,是模型正确分类的观察数,另二格是错分类的观察数。你计算的E1 即是错分类观察数的占比,结果为0.283。但这是样本内分类误。。。
   以上,只涉及两个“模式识别与分类”基本概念:一是模型学习机理,二是模型结果后处理。

8
jgchen1966 发表于 2018-12-2 20:51:56
jgchen1966 发表于 2018-12-2 20:39
一是,MailShot数据集,共有300个观察,其目标变量是MAILSHOT,二项因子变量,一类有135观察,另一类有165 ...
以上东西,是不很基本?太基本,我也可能不一定全说对了 ? 因基本,也易说错,也就不想说。。
Leo Breiman (1984)Classification_and_Regression_Trees 一书中说得很清楚,也大量被后来30多年的研究论文、学术书籍及教材引用。。。

9
万木青 发表于 2018-12-2 22:30:36
jgchen1966 发表于 2018-12-2 20:39
一是,MailShot数据集,共有300个观察,其目标变量是MAILSHOT,二项因子变量,一类有135观察,另一类有165 ...
非常感谢前辈的细致解答!
前辈所言极是,输出变量确定是一类165,一类135;
之前学习算法时,只在bagging\boosting\RF中了解到这种多数投票制,没想到单棵分类树中也是这样来决定每个结点的类,前辈的解释应该是对的,想不到有其它更好的解释。这个根节点的错误率知识点虽然在目前所学的书中未提及,却能让我加深对R输出结果的认知,同时这也是其它算法可能需要考虑的数据不平衡问题。
你说的用测试数据评估,实际应用中是该测试数据
关于预测的类结果,学习Logit回归、神经网络时有用到ROC曲线方法去确定最佳阀值,但决策树似乎只用此混淆矩阵,在组合预测集成学习中似乎可以得到显著提升,不知前辈怎么看?
非常感谢前辈的推荐的书,相信这书能较全面地讲解关于分类回归树的问题,像这种好书可能就不前辈所说的随便一本就有介绍,也不是一般人就能看得下,网上也看不到有中文版的。不知国内有没类似的中文版书籍能比较系统地学习这种算法?



10
万木青 发表于 2018-12-2 22:47:42
jgchen1966 发表于 2018-12-2 20:51
以上东西,是不很基本?太基本,我也可能不一定全说对了 ? 因基本,也易说错,也就不想说。。
Leo Brei ...
另外,分类回归树还有一个规则问题前教一下前辈.
之前在其它数据挖掘软件有见过一些案例,的确有一些规则输出.但那案例是基于响应率及累计响应率的规则输出,
R语言对树象输出的这些规则是基于什么样的指标?可以看出这里分别输出MAILSHOT=YES和=NO的一些规则,两者数量也不同一个是5条,一个是6条?这些就代表各自预测准确率排名靠前的规则? 输出的规则号也是离散的?

library(rattle)
> asRules(TreeFit)#输出规则

Rule number: 7 [MAILSHOT=YES cover=26 (9%) prob=0.85]
   INCOME>=3.009e+04
   INCOME>=4.932e+04

Rule number: 39 [MAILSHOT=YES cover=11 (4%) prob=0.73]
   INCOME< 3.009e+04
   GENDER=FEMALE
   CAR=NO
   AGE>=29.5
   INCOME< 2.041e+04

Rule number: 13 [MAILSHOT=YES cover=52 (17%) prob=0.67]
   INCOME>=3.009e+04
   INCOME< 4.932e+04
   INCOME< 3.961e+04

Rule number: 43 [MAILSHOT=YES cover=22 (7%) prob=0.59]
   INCOME< 3.009e+04
   GENDER=MALE
   INCOME< 2.34e+04
   REGION=INNER_CITY
   INCOME>=1.434e+04

Rule number: 11 [MAILSHOT=YES cover=31 (10%) prob=0.58]
   INCOME< 3.009e+04
   GENDER=MALE
   INCOME>=2.34e+04

Rule number: 38 [MAILSHOT=NO cover=22 (7%) prob=0.36]
   INCOME< 3.009e+04
   GENDER=FEMALE
   CAR=NO
   AGE>=29.5
   INCOME>=2.041e+04

Rule number: 12 [MAILSHOT=NO cover=25 (8%) prob=0.36]
   INCOME>=3.009e+04
   INCOME< 4.932e+04
   INCOME>=3.961e+04

Rule number: 42 [MAILSHOT=NO cover=18 (6%) prob=0.33]
   INCOME< 3.009e+04
   GENDER=MALE
   INCOME< 2.34e+04
   REGION=INNER_CITY
   INCOME< 1.434e+04

Rule number: 20 [MAILSHOT=NO cover=32 (11%) prob=0.22]
   INCOME< 3.009e+04
   GENDER=MALE
   INCOME< 2.34e+04
   REGION=RURAL,SUBURBAN,TOWN

Rule number: 18 [MAILSHOT=NO cover=22 (7%) prob=0.18]
   INCOME< 3.009e+04
   GENDER=FEMALE
   CAR=NO
   AGE< 29.5

Rule number: 8 [MAILSHOT=NO cover=39 (13%) prob=0.13]
   INCOME< 3.009e+04
   GENDER=FEMALE
   CAR=YES




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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-20 10:37