当前位置: 首页 > 数据分析师 > 数据分析师实战技能 > 数据分析师数据分析 > 基于R语言的分类算法之决策树

基于R语言的分类算法之决策树

发布时间:2020年09月28日 10:08:10 来源: 点击量:169

【摘要】基于R语言的分类算法之决策树ID3 《= 最大信息熵增益,只能处理离散型数据C4 5 《= 信息增益率,可处理连续性和离散型数据,相比ID3,

基于R语言的分类算法之决策树

ID3 《= 最大信息熵增益,只能处理离散型数据

C4.5 《= 信息增益率,可处理连续性和离散型数据,相比ID3,减少了因变量过多导致的过拟合

C5.0 《= 信息增益率,运算性能比C4.5更强大

CART 《= 基尼指数最小原则,连续性和离散型数据均可

信息熵体现的是数据的杂乱程度,信息越杂乱,信息熵越大,反之越小。 例如:拥有四种连续型变量的特征变量的信息熵一定比拥有三种的要大。

特征变量的N种可能性,每种可能性的概率相同,N越大,信息熵越大。

每种可能性的概率不同,越偏态,信息熵越小。

所有特征变量中,信息增益率的,就是根节点(root leaf),根节点一般是选择N越大的特征变量,因为N越大,信息熵越大。

信息增益率是在信息熵的基础上作惩罚计算,避免特征变量可能性多导致的高信息增益。

代码相关

library(C50)

C5.0(x,y, trials = 1, rules=FALSE,weights=NULL,control=C5.0Control(),costs=NULL)

x为特征变量,y为应变量

trials 为迭代次数(这个值根据不同数据而不同,并非越大越好,一般介于5-15之间,可以用遍历来寻找最高准确率的模型,对模型准确率的提升效果中等)

cost 为损失矩阵,R中应该传入一个矩阵(据说是对准确率矩阵约束猜测错误的项,但是并没特别明显的规律,可以使用遍历来寻找最好的cost,准确率提升效果小)

costs <- matrix(c(1,2,1,2),
                ncol = 2, byrow = TRUE, 
                dimnames = list(c("yes","no"), c("yes","no")))

control 设置C5.0模型的其他参数,比如置信水平和节点最小样本等(水很深,参数很多,可以自行查阅R的帮助文档,我只设置了一个CF,准确率提升效果小)

control = C5.0Control(CF = 0.25)

library(C50)

#对iris随机划分训练集和测试集
set.seed(1234)

index <- sample(1:nrow(iris), size = 0.75*nrow(iris))
train <- iris[index,]
test <- iris[-index,]

#查看训练集和测试集分布是否合理

prop.table(table(train$Species))
prop.table(table(test$Species))

#不设置任何参数

fit1 <- C5.0(x = train[,1:4], y = train[,5])

pred1 <- predict(fit1, newdata = test[,-5])
freq1 <- table(pred1, test[,5])
accuracy <- sum(diag(freq1))/sum(freq1)

pred1        setosa versicolor virginica
  setosa         16          0         0
  versicolor      0         13         1
  virginica       0          0         8

准确率为0.9736842,只有一个错误。。。显然150个iris太少了,优化都省了。

分享到: 编辑:wangmin

就业培训申请领取
您的姓名
您的电话
意向课程
点击领取

环球青藤

官方QQ

扫描上方二维码或点击一键加群,免费领取大礼包,加群暗号:青藤。 一键加群

绑定手机号

应《中华人民共和国网络安全法》加强实名认证机制要求,同时为更加全面的体验产品服务,烦请您绑定手机号.

预约成功

本直播为付费学员的直播课节

请您购买课程后再预约

环球青藤移动课堂APP 直播、听课。职达未来!

安卓版

下载

iPhone版

下载
环球青藤官方微信服务平台

刷题看课 APP下载

免费直播 一键购课

代报名等人工服务

课程咨询 学员服务 公众号

扫描关注微信公众号

APP

扫描下载APP

返回顶部