十大算法 —— CART
1、基本介绍
(1)概述:CART算法是一种决策树算法,主要用于分类与回归。CART算法将概率论与统计学的知识引入到决策树的研究中,既可以用于分类,也可以用于回归。不同于C4.5算法,CART算法的本质是对特征空间进行二元划分(CART生成的决策树是一颗二叉树),并能够对标量属性与连续属性进行分裂。CART算法采用地即是递归地对每个特征进行二元切分,然后根据输入的特征值预测输入样本的结果。
(2)优点
[1] 计算简单,易于理解,可解释性强;
[2] 比较适合处理有缺失属性的样本;
[3] 不仅能够处理不相关的特征,还能在相对短的时间内对大型数据源得出可行且效果良好的结果。
(3)缺点
[1] 不支持在线学习,在有新的样本产生后,决策树模型要重建;
[2] 容易出现过拟合的现象,生成的决策树可能对训练数据有很好的分类能力,但对未知的测试数据却未必有很好的分类能力。
2、算法流程
(1)问题说明
(2)算法步骤(文字描述版)
(3)算法步骤(数学描述版)
3、详细例子
(1)例子一(靠嘴模拟)
(2)例子二(R语言实操)
[1] 代码
test[,5]<-class(test[,5])
colnames(iris)[5] # 获取iris第5列的列名称
cart1<-rpart(Species~.,data=train,method="class") # 构建CART二叉树,注意要加上method="class"否则后面会出错
printcp(cart1) # 查看模型的构建情况
cart2<-prune(cart1,cp=0.5) # 对模型进行剪枝
printcp(cart2) # 查看剪枝后模型的构建情况
library(rpart.plot) # 加载cart可视化包
opar<-par(no.readonly=T) # 设定参数的唯一性
par(mfrow=c(2,1)) # 构造幕布
rpart.plot(cart1,branch=1,type=2,fallen.leaves=T,sub="剪枝前") # 可视化剪枝前的决策树
rpart.plot(cart2,branch=1,type=4,fallen.leaves=T,sub="剪枝后") # 可视化剪枝后的决策树
p1<-predict(cart1,newdata=test,type="class") # 利用训练集作预测
table(test[,5],p1,dnn=c("真实值","预测值")) # 输出混淆矩阵,判断结果还不错
[2] 结果