200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 使用R完成决策树分类

使用R完成决策树分类

时间:2021-06-10 20:14:53

相关推荐

使用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全称为complexityparameter,指某个点的复杂度,对每一步拆分,模型的拟合优度必须提高的程度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±xstdprintcp(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决策树”);

效果图如下:

这是一篇相关的论文。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。