R中决策树的实现

R中决策树的实现

ID:38668891

大小:319.50 KB

页数:7页

时间:2019-06-17

R中决策树的实现_第1页
R中决策树的实现_第2页
R中决策树的实现_第3页
R中决策树的实现_第4页
R中决策树的实现_第5页
资源描述:

《R中决策树的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一、R包中决策树的函数(1)ID3算法在R中我们使用rpart包中的rpart()函数实现树回归,应该使用的是ID3算法吧。先把该包中两个十分重要的函数介绍如下:rpart(formula,data,weights,subset,na.action=na.rpart,method,model=FALSE,x=FALSE,y=TRUE,parms,control,cost,...)主要参数说明:formula回归方程形式,例如y~x1+x2+x3.data是数据,即包含前面formula中变量的数据框。na.actio

2、n是缺失数据的处理办法,默认办法为删除因变量缺失的观测,而保留自变量缺失的观测。method根据树末端的数据类型选择相应变量分割方法,本参数有四种取值:连续型“anova”;离散型“class”;计数型(泊松过程)“poisson”;生存分析型“exp”。程序会根据因变量的类型自动选择方法,但一般情况下最好还是指明本参数,以便让程序清楚做哪一种树模型parms用来设置三个参数:先验概率、损失矩阵、分类纯度的度量方法。control控制每个节点上的最小样本量、交叉验证的次数、复杂性参量:即cp:complexitypa

3、memeter,这个参数意味着对每一步拆分,模型的拟合优度必须提高的程度,等等。另外一个函数是进行剪枝,即prune,如下prune(tree,cp,...)主要参数说明:tree一个回归树对象,常是rpart()的结果对象。cp复杂性参量,指定剪枝采用的阈值。cp全称为complexityparameter,指某个点的复杂度,对每一步拆分,模型的拟合优度必须提高的程度,用来节省剪枝浪费的不必要的时间,R内部是怎么计算的我不知道,希望读者能够补充另外一个包是rpart.plot,里面的rpart.plot是用来将决策

4、树可视化的。如下rpart.plot(reg,type=2,faclen=3)参数解释reg是rpart产生的对象。type是画决策树的方法,值为2就是一般我们所见的那种树。faclen是表示每个因子水平名称的长度。(2)C4.5算法R中的RWeka包中的J48函数可以实现C4.5算法的决策树构建。如下J48(formula,data,subset,na.action)具体参数含义不再解释。但是若要加载RWeka包需要java运行环境,否则是无法加载成功的。(3)cart算法R中的tree包中的tree函数提供CAR

5、T算法的决策树构建。介绍如下tree(formula,data,subset,na.action)关于tree的参数含义与rpart含义差不多。其他参数见帮助文档。二、一个具体的例子,帮助理解如何使用(1)ID3算法我们利用lars包中的糖尿病数据来做决策树,数据分为x,y,x2三个部分,因变量为y,数据是关于糖尿病的血液化验等指标。这个数据集最早被用在偏最小二乘回归的文章里。代码如下>library(rpart.plot)>library(rpart)>data(diabetes,package='lars')#加

6、载lars包中的数据diabetes>w<-diabetes>reg<-rpart(y~.,w)>rpart.plot(reg,type=2,faclen=3)我们过构建的决策树有可能出现过拟合情况(可用交叉验证法来检验,这里从略),如果出现我们要对其进行剪枝。就要选择最优的cp值进行剪枝。我们首先查看树里面的cptable。如下>reg$cptable根据以上结果,我们选择合适的cp值为0.025.让我们看看为什么会选择0.025.首先介绍结果中各个变量的含义。交叉验证的估计误差为“xerror”列,以及标准误差为

7、“xstd”列。在剪枝理论中,我们保证xerror尽量小,但不一定最小。而是允许它在‘最小误差±相应的标准差’。因此在本例中最小为0.6782094,再加上相应的标准差0.04211012为0.7203195。而这个值介于第3行和第4行之间(参见他们的xerror).因此我们选择的cp介于第3行和第4行的cp值之间。在这里我选择0.025作为剪枝的cp值。故剪枝如下>reg2<-prune(reg,cp=0.025)>rpart.plot(reg2)#再进行可视化我们构建好了决策树reg2,下面就可以用predict

8、函数来对测试样本进行分类了。如下result.reg<-predict(reg2,test)(2)CART算法这里使用iris数据集。代码如下>library(tree)>data(iris)>ir<-iris>reg<-tree(Species~.,ir)#下面我们使用plot和text结合来画决策树>plot(reg)>text(reg)#

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。