R 集成算法① adaboost

集成算法

集成算法(Ensemble method)

是目前数据科学家工具箱的一种重要补充。这个工具非常流行,目前是许多机器学习比赛参赛者的选择策略。通常是通过一系列分类器,一般是决策树,然后对预测值进行投票。总而言之,集成算法不是挑选一个模型,而是通过一定的方式将多个模型组合起来。其中两个重要方法是套袋法(bagging)和提升法(boosting)。

套袋法和提升法

  • 套袋(Bagging)法:集成中的每个模型投票权重都相同。套袋法利用训练集中随机取出的子集来训练每个模型。这种方法有助于降低方差并有助于避免过拟合。最常见的例子就是随机森林。
  • 提升(Boosting)是一种常用的统计学习方法,在分类问题中,它通过改变训练样本的权重,学习多个分类器(一般是弱分类器),并将这些分类器线性组合,最终提高分类器的性能。Adaboost或者自适应boosting属于Boosting一种,该算法产生于弱分类器来迭代地学习训练集中很大比例的难以分类的样本,对经常分错的样本进行更多的关注(给与更大的权重。)

image

  • 训练过程:

从未加权的数据开始,第一个分类器尝试对结果建模。预测正确的样本出现在下一个分类器的训练集中的可能性较小,相反,难以分类的样本将会出现的更频繁。当下一轮的弱分类器被添加后,他们用来训练后面更难的样本。该过程会持续进行,知道达到要求的总误差或者性能不能提高。这时每个分类器的票数会按照他们在建模数据集上的准确度进行加权。

  • 代码:
setwd("E:\\Rwork")
library(rpart)
library(caret)
library(adabag)
library(ggplot2)
library(ggthemes)
set.seed(123)
data(iris)
index <- sample(nrow(iris),0.75*nrow(iris))
train <- iris[index,]
test <- iris[index,]
error <- as.numeric()
  • 加载包以及划分训练集和测试集
library(tcltk)  
u <- 1:20  
pb <- tkProgressBar("进度","已完成 %", 0, 100)  

for(i in u){
  info<- sprintf("已完成 %d%%", round(i*100/length(u)))  
  setTkProgressBar(pb, i*100/length(u), sprintf("进度 (%s)", info),info)  
  data.adaboost <- boosting(Species ~ ., data=train, mfinal=i)
  data.pred <- predict.boosting(data.adaboost,newdata = test)
  error[i] <- data.pred$error
  }
close(pb)  


##################################################

##################################################

error <- as.data.frame(error)
p <- ggplot(error,aes(x=1:20,y=error))+
     geom_line(colour="red", linetype="dashed",size = 1)+
     geom_point(size=3, shape=18)+
     ylim(0,0.05) +
     xlab("Classifiers Numbers")

p1 <- p + theme_base()+
      theme(panel.grid = element_blank())+
      theme(axis.title = element_text(face = "bold"))

p1
  • 结果如下:

error分布图

  • 结论: 用boosting()函数对训练集进行训练。首先定义基分类器个数为1,通过循环依次增加基分类器个数,直至达到20通过增加classifiers可以降低error,但是当number增加到一定范围时,error值将会稳定。
iris.adaboost <- boosting(Species ~ ., data=train, mfinal=10)
importanceplot(iris.adaboost)
  • 选取10为mifinal值时,分别显示各变量对模型影响重要性,结果如下:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏个人分享

最大期望算法 Expectation Maximization概念

在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中...

16320

为什么不提倡在训练集上检验模型?

在你开始接触机器学习时,通常你会从读取一个数据集并尝试使用不同的模型开始。你可能会疑惑,为什么不用数据集中的所有数据来训练及评估模型呢?

44270
来自专栏机器学习算法与Python学习

精华 | 机器学习岗面试,这些是基础!(ML,DL,SL相关知识整理)

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 明天推出第3期送书活动 数量10本 ...

48170
来自专栏UAI人工智能

轻松读论文——层规范化技术 Layer Normalisation

21930
来自专栏数据科学与人工智能

机器学习算法总结(面试用到)

找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且...

1K80
来自专栏计算机视觉战队

从零基础成为深度学习高手——Ⅱ

今天继续昨天的知识,继续学习新的一个阶段知识: 深度学习基础知识 接下来我们了解一下基础知识,我们上面也提到了,我们这次主要以卷积神经网络在图像识别领域的应...

30960
来自专栏数据科学与人工智能

【机器学习】机器学习算法总结

找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且...

31650
来自专栏大数据挖掘DT机器学习

常见面试之机器学习算法思想简单梳理

 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,...

48680
来自专栏PPV课数据科学社区

机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)

前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是 机器学习/数据挖...

289110
来自专栏深度学习计算机视觉

神经网络学习之M-P模型

概念 所谓M-P模型,其实是按照生物神经元的结构和工作原理构造出来的一个抽象和简化了的模型,它实际上就是对单个神经元的一种建模。 ? 生物神经元模型 1. ...

57550

扫码关注云+社区

领取腾讯云代金券