R语言机器学习之核心包gbm

  • A+
所属分类:R语言 机器学习

本文介绍R语言做机器学习的核心包:gbm

一、gbm简介

gbm是通用梯度回归模型(Generalized Boosted Regression Models)简称。

gbm扩展了Freund and Schapire的Adaboost算法和Friedman的梯度提升机(gradient boosting machine)。

R语言机器学习之核心包gbm

二、安装和加载gbm包

代码如下:

  1. if(!suppressWarnings(require('gbm')))
  2. {
  3. install.packages('gbm')
  4. require('gbm')
  5. }

三、gbm的应用

利用gbm解决分类问题,并且和决策树方法进行对比分析,案例介绍如下。

1、第一步,生成数据集

  1. set.seed(1234)
  2. n <- 2000
  3. X <- matrix(rnorm(10*n), n, 10)
  4. y <- rep(-1, n)
  5. y[apply(X*X, 1, sum) > qchisq(.5, 10)] <- 1
  6. dimnames(X)[[2]] <- c("x1""x2""x3""x4""x5""x6""x7""x8""x9""x10")
  7. train.data <- as.data.frame(X)
  8. train.data$y <- y

2、第二步,利用决策树算法从train.data中学习规则集

  1. library(rpart)
  2. rpart.fit <- rpart(as.factor(y) ~ . , data = train.data)

3、第三步,利用gbm包的adaboost算法从train.data中学习模型

  1. library('gbm')
  2. train.data$y1 <- ifelse(train.data$y == -1, 0, train.data$y)
  3. adaboost.gbm <- gbm(y1 ~ ., data=train.data, dist="adaboost", n.tree = 50, interaction.depth = 10)

说明:因为AdaBoost算法要求响应值为0和1,故把变量y的值进行变换处理

4、第四步,模型性能评价

  1. confusion <- function(a, b){
  2. tbl <- table(a, b)
  3. mis <- 1 - sum(diag(tbl))/sum(tbl)
  4. list(table = tbl, misclass.prob = mis)
  5. }
  6. dim(train.data)
  7. ##rapart算法模型性能
  8. confusion(as.factor(train.data$y), predict(rpart.fit, train.data, type='class'))
  9. ##AdaBoos算法模型性能
  10. 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

 

作者:JackWang

个人介绍:专注于从数据中学习,努力发掘数据之洞见,积极利用数据之价值。

精选各名校数学专业考研初试试卷
MySQL必知必会
基于大数据的用户特征分析
小额消费信贷用户数据

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: