RForML之焦点包:gbm
当前位置:以往代写 > 其他教程 >RForML之焦点包:gbm
2019-06-14

RForML之焦点包:gbm

RForML之焦点包:gbm

![](http://img.shujuren.org/pictures/X0/5862740862579.png)

### 一 gbm简介
gbm是通用梯度回归模子(Generalized Boosted Regression Models)简称。
gbm扩展了Freund and Schapire的**Adaboost算法**和Friedman的梯度晋升机(**gradient boosting machine**)。

### 二、安装和加载gbm包
代码如下
“`{r}
if(!suppressWarnings(require(‘gbm’)))
{
install.packages(‘gbm’)
require(‘gbm’)
}
“`

### 三、gbm的应用
操作gbm办理分类问题,而且和决定树要领举办比拟阐明,案例先容如下。
#### 1 第一步,生成数据集
“`{r}
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中进修法则集
“`{r}
library(rpart)
rpart.fit <- rpart(as.factor(y) ~ . , data = train.data)
“`
#### 3 第三步,操作gbm包的adaboost算法从train.data中进修模子
“`{r}
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 第四步,模子机能评价
“`{r}
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://img.shujuren.org/pictures/TO/586273210233e.png)

    关键字:

在线提交作业