多语言展示
当前在线:537今日阅读:168今日分享:49

如何利用R软件建立决策树模型?

R软件的决策树主要由程序包rpart中的函数rpart来实现。rpart(formula, data, weights, subset, na.action = na.rpart, method, model = FALSE, x = FALSE, y = TRUE, parms, control, cost, ...)formula:模型公式。data:数据框形式的数据集。weights:选取权重。subset:选择数据集中的指定行。na.action:缺失值处理方式,默认删除y丢失的所有观察值,而那些缺少一个或多个自变量的观测值则保留。method:默认自动选择最佳的方法。主要方法有: 连续性'anova', 泊松型'poisson', 类别'class'和 指数型'exp'。model:是否在结果中保留模型数据框。x、y:结果中是否显示自变量和因变量。parms:用来设置三个参数:先验概率 (component prior),损失矩阵 (component loss) 和分裂指数 (component split)。control:对树进行设置的一些参数,包括最小分支节点数(minsplit);叶节点的最少观测数(minbucket);复杂度参数,对每一步拆分,模型的整体R^2随着cp提高(cp);树的深度(maxdepth);交叉验证数(xval)。cost:成本矩阵。
工具/原料

R

方法/步骤
1

这里以R中自带的数据集kyphosis为例。根据Age、Number、Start三个变量对kyphosis进行分类。#程序包library(rpart)library(rpart.plot)library(rattle)#数据data(kyphosis)head(kyphosis)

2

定义参数并建立模型。#参数control <- rpart.control(minsplit=10,minbucket=5,xval=10,cp=0.1)#决策树模型model<- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis,method='class',control=control,  parms = list(prior = c(0.6,0.4), split = 'information'))

3

查看模型结果。summary可以查看模型的详细过程。summary(model)asRules(model)

4

绘制决策树图。可以从图中看到每一类的观测数及占总数的比例。fancyRpartPlot(model)

5

查看交叉验证结果,并绘图。model$cptableplotcp(model)grid() 可以看到结果中有交叉验证的估计误差(“xerror”),以及标准误差(“xstd”),平均相对误差=xerror±xstd 。

6

根据交叉验证结果,找出估计误差最小时的cp值,并重新建立模型。#选择交叉验证的估计误差最小时对应的cpxerr <-model$cptable[,'xerror']minxerr <- which.min(xerr)mincp <-model$cptable[minxerr, 'CP']#新模型model.prune <- prune(model,cp=mincp)fancyRpartPlot(model.prune)

推荐信息