决策树是以树的结构将决策或者分类过程展现出来,其目的是根据若干输入变量的值构造出一个相适应的模型,来预测输出变量的值。预测变量为离散型时,为分类树;连续型时,为回归树。
常用的决策树算法:
| 算法 | 简介 | R包及函数 |
|---|---|---|
| ID3 | 使用信息增益作为分类标准 ,处理离散数据,仅适用于分类树 。 | rpart包 rpart() |
| CART | 使用基尼系数作为分类标准,离散、连续数据均可,适用于分类树,回归树。 | rpart包 rpart() |
| C4.5 | 使用信息增益和增益率相结合作为分类标准,离散、连续数据均可,但效率较低,适用于分类树 | RWeka包 J48() |
| C5.0 | 是C4.5用于大数据集的拓展,效率较高 | C50包 C5.0() |
建模过程:
1)选定一个最佳变量将全部样本分为两类,并且实现两类中的纯度最大化,其分类标准有“信息增益”,“增益率”,“基尼系数”等。具体理论可参考周志华老师的《机器学习》一书。
2)对每一个分类子集重复步骤1)。
3)重复步骤1)、2),直到没有分类方法能将不纯度下降到给定的阈值以下。
4)根据步骤3)得出的模型预测所属类别。
用到的程序包rpart, raprt.plot. RWake, sampling, partykit。 建模所用数据为UCI机器学习数据库里的威斯康星州乳腺癌数据集和汽车数据集mtcars。仅以CART和C4.5算法函数的调用为例,C5.0算法的调用可用C50包中的C5.0()函数。
一、CART算法
步骤:
1、数据预处理,建立好训练集和预测集。代码如下:可参见《R语言实战》。
> loc<-"http://archive.ics.uci.edu/ml/machine-learning-databases/"
> ds<-"breast-cancer-wisconsin/breast-cancer-wisconsin.data"
> url<-paste(loc,ds,sep="")
> data<-read.table(url,sep=",",header=F,na.strings="?")
> names(data)<-c("ID","clumpThickness","sizeUniformity",
+ "shapeUniformity","maginalAdhesion",
+ "singleEpithelialCellSize","bareNuclei",
+ "blandChromatin","normalNucleoli",
+ "mitosis","class")
> data$class[data$class==2]<-"良性"
> data$class[data$class==4]<-"恶性"
> data<-data[-1]
> set.seed(1234)
> train<-sample(nrow(data),0.7*nrow(data))
> tdata<-data[train,

最低0.47元/天 解锁文章
1047

被折叠的 条评论
为什么被折叠?



