栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > R语言

r语言c5.0决策树算法参数,R语言:决策树ID3/C4.5/CART/C5.0算法的实现

R语言 更新时间:发布时间: 百科书网 趣学号

在前文中,我们已经详细介绍了决策树算法中的ID3/C4.5/CART算法的原理,以及决策树的剪枝问题。

ID3算法戳我

C4.5算法戳我

CART算法戳我

决策树剪枝问题戳我

本文将详细介绍如何用R语言实现决策树算法。

算法

区分要点

R包

ID3

使用信息增益

rpart包中rpart函数

C4.5

使用信息增益

RWeka包中J48()

CART

使用gini

rpart包中rpart函数

C5.0

C4.5的改进,比较适合于大规模数据

c50包

文章目录

数据简介

R语言实现

ID3算法

CART算法

C4.5算法

C5.0算法

数据简介

本文数据选择了红酒质量分类数据集,这是一个很经典的数据集,原数据集中“质量”这一变量取值有{3,4,5,6,7,8}。为了实现二分类问题,我们添加一个变量“等级”,并将“质量”为{3,4,5}的观测划分在等级0中,“质量”为{6,7,8}的观测划分在等级1中。

数据下载

因变量:等级

自变量:非挥发性酸性、挥发性酸性、柠檬酸、剩余糖分、氯化物、游离二氧化硫、二氧化硫总量、浓度、pH、硫酸盐、酒精

library(openxlsx)

wine = read.xlsx(".../winequality-red.xlsx") #读入数据

#将数据集分为训练集和测试集,比例为7:3

train_sub = sample(nrow(wine),7/10*nrow(wine))

train_data = wine[train_sub,]

test_data = wine[-train_sub,]

R语言实现

ID3算法

ID3算法和CART算法都是用rpart包实现的,rpart包常用参数如下:

参数

意义

formula

y yy ~ x 1 x_1x1​+x 2 x_2x2​+…+x n x_nxn​或者y yy ~ . 指明了因变量和自变量

data

使用的数据集

na.action

缺失值处理,默认na.rpart,表示删掉因变量y yy缺失的观测,但是保留自变量缺失的观测

method

决策树的类型,“exp”用于生存分析,“poisson”用于二分类变量,“class”用于分类变量(使用居多),”anova”对应回归树

parms

只用于分类树,parms=list(split,prior,loss),其中split的选项默认"gini"(对应CART),和"information"(对应ID3算法)

control

控制决策树形状的参数

rpart包的参数详解

rpart.control的参数详解

library(rpart)

#决策树的生成

wine_decisiontree_ID3

至此,我们已经将决策树生成好,之后我们将使用rpart.plot绘制决策树

rpart.plot主要的参数有:

参数

意义

tree

所绘制的模型

type

可选1,2,3,4,控制节点的形状

fallen.leaves

默认为T

branch

控制树的外观,若branch=1则获得垂直的决策树

cex

图中符号的大小

library(rpart.plot)

rpart.plot(wine_decisiontree_ID3_prune,branch=1, fallen.leaves=T,cex=0.6)

ID3算法所绘树图:

用所得的ID3模型在测试集上预测

#在测试集上预测

pre_decisiontree_ID3

ID3算法所得AUC值为0.746

CART算法

CART算法的实现也是使用rpart包

library(rpart)

library(rpart.plot)

#决策树的生成

wine_decisiontree_cart

CART算法所绘树图:

用所得的CART模型在测试集上预测

#在测试集上预测

pre_decisiontree_cart

CART算法所得AUC值为0.718

C4.5算法

C4.5算法使用RWeka包,RWeka包的安装需要依赖于rJava包。

rJava包的安装

在安装好rJava包后,使用如下代码即可安装RWeka包

install.packages("RWeka")

library(RWeka)

我们使用RWeka包中的J48()来调用C4.5算法。

J48(formula,data,subset,na.action,control=Weka_control(u=T,c=0.25,M=2,R=T,N=3,B=T),options=NULL)

参数

意义

U

默认位TRUE,表示不剪枝

C

对剪枝过程设置置信区间

M

表示叶节点的最小样本量,默认为2

R

按错误率降低剪枝法剪枝

N

当R=TRUE时,交叉验证的折叠次数,默认为3

B

表示是否建立二叉树,默认为TRUE

#Sys.setenv(JAVA_HOME='C:\Program Files\Java\jdk1.8.0_191\jre') #看是否有必要更改环境变量

library(rJava)

library(RWeka)

library(pROC) #绘制ROC曲线

wine_decisiontree_C4_5

C4.5算法所得AUC值为0.731

C5.0算法

C5.0算法是C4.5算法的改进,使用的是c50包

library(C50)

#c50算法

#c5.0(x,y,trials=1) x表示自变量,y表示因变量,

#c5.0是一个boosting算法,trails控制循环次数

wine_decisiontree_C50

用所得的C5.0模型在测试集上预测

#在测试集上预测

pre_decisiontree_C50

C5.0算法所得AUC值为0.735

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/855871.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号