- A+
本文介绍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
作者:JackWang
个人介绍:专注于从数据中学习,努力发掘数据之洞见,积极利用数据之价值。
支付宝打赏
微信打赏
赏