RForML之核心包:gbm
本文介绍R语言做机器学习的核心包:gbm
一 gbm简介
gbm是通用梯度回归模型(Generalized Boosted Regression Models)简称。
gbm扩展了Freund and Schapire的Adaboost算法和Friedman的梯度提升机(gradient boosting machine)。
二、安装和加载gbm包
代码如下
if(!suppressWarnings(require('gbm')))
{
install.packages('gbm')
require('gbm')
}
三、gbm的应用
利用gbm解决分类问题,并且和决策树方法进行对比分析,案例介绍如下。
1 第一步,生成数据集
set.seed(1234)
n <- 2000
X <- matrix(rnorm(10*n), n, 10)
y <- rep(-1, n)
y[apply(X*X, 1, sum) > qchisq(.5, 10)] <- 1
dimnames(X)[[2]] <- c("x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10")
train.data <- as.data.frame(X)
train.data$y <- y
2 第二步,利用决策树算法从train.data中学习规则集
library(rpart)
rpart.fit <- rpart(as.factor(y) ~ . , data = train.data)
3 第三步,利用gbm包的adaboost算法从train.data中学习模型
library('gbm')
train.data$y1 <- ifelse(train.data$y == -1, 0, train.data$y)
adaboost.gbm <- gbm(y1 ~ ., data=train.data, dist="adaboost", n.tree = 50, interaction.depth = 10)
说明:因为AdaBoost算法要求响应值为0和1,故把变量y的值进行变换处理
4 第四步,模型性能评价
confusion <- function(a, b){
tbl <- table(a, b)
mis <- 1 - sum(diag(tbl))/sum(tbl)
list(table = tbl, misclass.prob = mis)
}
dim(train.data)
##rapart算法模型性能
confusion(as.factor(train.data$y), predict(rpart.fit, train.data, type='class'))
##AdaBoos算法模型性能
confusion(train.data$y1 > 0, predict(adaboost.gbm, train.data, n.trees = 25) > 0)
结果如下:
决策树算法的错误率是:0.211
Adaboos算法的错误率,在采用25棵树做决策判断的时候,错误率是0
参考资料:
1 gbm包文档:https://cran.r-project.org/web/packages/gbm/gbm.pdf
2 Adaboost算法:https://en.wikipedia.org/wiki/AdaBoost
3 GB算法:https://en.wikipedia.org/wiki/Gradient_boosting
您在阅读中,有什么建议或者想法,请留言。
如果您觉得本文有收获,请小额赞赏,让我有动力继续写出高质量的文章。
数据人网是数据人学习、交流和分享的平台http://shujuren.org 。专注于从数据中学习。
平台的理念:人人投稿,知识共享;人人分析,洞见驱动;智慧聚合,普惠人人。
您在数据人网平台,可以1)学习数据知识;2)创建数据博客;3)认识数据朋友;4)寻找数据工作;5)找到其它与数据相关的干货。
我们努力坚持做原创,分享和传播有价值的数据知识!
我们都是数据人,数据是有价值的,坚定不移地利用数据价值创造价值!
点击【阅读原文】,进入【数据人网】
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!