Bagging算法的R语言实现

bagging 是bootstrap aggregating的缩写,是第一批用于多分类集成算法。

bagging算法如下:

循环K次,每次都从样本集D中有放回地抽取样本集Di,这样总共得到k个样本集,用这K个样本集进行决策树生成,获得K个决策树模型,再将要检测的数据用这K个决策树模型进行多数表决,获得票数多的结论。

这种思想跟现代民主投票制度如出一辙,一个人再厉害,判断力也是有限的,但是把一群人聚合在一起投票,那单个人所犯错误的概率就会被抵消,最后得出结论的正确性会明显优于单个人做出决策。

个人认为其算法倒是并不复杂,主要还是内部决策树的实现。R语言提供了很强大的包实现该算法。R语言中用于bagging算法实现的是ipred包。

1、首先安装ipred包。这个不复杂,就不介绍了(如果这个不会,还是先从头开始学习R吧)

2、谷歌的结果好像不是很理想,所以安装完之后还是查看下帮助文档吧。  命令:help(package="ipred"),找到bagging函数的使用

3、可以看到bagging函数有多种调用方式

## S3 method for class ‘factor‘
ipredbagg(y, X=NULL, nbagg=25, control=
                 rpart.control(minsplit=2, cp=0, xval=0),
                 comb=NULL, coob=FALSE, ns=length(y), keepX = TRUE, ...)
## S3 method for class ‘numeric‘
ipredbagg(y, X=NULL, nbagg=25, control=rpart.control(xval=0),
                  comb=NULL, coob=FALSE, ns=length(y), keepX = TRUE, ...)
## S3 method for class ‘Surv‘
ipredbagg(y, X=NULL, nbagg=25, control=rpart.control(xval=0),
               comb=NULL, coob=FALSE, ns=dim(y)[1], keepX = TRUE, ...)
## S3 method for class ‘data.frame‘
bagging(formula, data, subset, na.action=na.rpart, ...)

由于本示例使用的是iris数据集,显然对应最后一种调用方式。

formula是数据模型,我们这边应变量是Species,所以数据模型就是Species~.了。

data就是所需数据集,这里是鸢尾花数据集iris

subset写着是可选参数(我也没看明白是啥参数,囧)

na.action=na.rpart  这个应该是指遇到空值或者异常值的处理办法,默认是rpart。想来也不用管那么多了

好了,调用下看看

model.bagging <- bagging(Species~.,data=iris) 这句就是根据语法说明写的,后面两句一般照抄就可以了,具体含义不在这里解释。

最终输出的是表格形式的,纵向表示三种花种的真实属类,横向表示采用决策树之后的预测属类。可以看到100%分类正确。

下图是用CART树做的预测结果,可以看到versicolor有5个归类错误,virginica一个归类错误,bagging完胜单独决策树

Bagging算法的R语言实现,布布扣,bubuko.com

时间: 2024-08-07 12:31:37

Bagging算法的R语言实现的相关文章

机器学习算法的R语言实现(二):决策树

1.介绍 ?决策树(decision tree)是一种有监督的机器学习算法,是一个分类算法.在给定训练集的条件下,生成一个自顶而下的决策树,树的根为起点,树的叶子为样本的分类,从根到叶子的路径就是一个样本进行分类的过程. ?下图为一个决策树的例子,见http://zh.wikipedia.org/wiki/%E5%86%B3%E7%AD%96%E6%A0%91 ? 可见,决策树上的判断节点是对某一个属性进行判断,生成的路径数量为该属性可能的取值,最终到叶子节点时,就完成一个分类(或预测).决策树

机器学习算法的R语言实现(二):决策树算法

1.介绍 ?决策树(decision tree)是一种有监督的机器学习算法,是一个分类算法.在给定训练集的条件下,生成一个自顶而下的决策树,树的根为起点,树的叶子为样本的分类,从根到叶子的路径就是一个样本进行分类的过程. ?下图为一个决策树的例子,见http://zh.wikipedia.org/wiki/%E5%86%B3%E7%AD%96%E6%A0%91 ? 可见,决策树上的判断节点是对某一个属性进行判断,生成的路径数量为该属性可能的取值,最终到叶子节点时,就完成一个分类(或预测).决策树

几种经典排序算法的R语言描述

1.数据准备 # 测试数组 vector = c(5,34,65,36,67,3,6,43,69,59,25,785,10,11,14) vector ## [1] 5 34 65 36 67 3 6 43 69 59 25 785 10 11 14 2.R语言内置排序函数 在R中和排序相关的函数主要有三个:sort(),rank(),order(). sort(x)是对向量x进行排序,返回值排序后的数值向量; rank()是求秩的函数,它的返回值是这个向量中对应元素的“排名”; order()

机器学习 视频教程 数据挖掘 实战 开发 应用 算法 案例 R语言

视频资料都逐个核对,清晰高质量,而且包含各种文档.软件安装包和源码!永久免费更新! 技术团队永久免费解答各种技术问题:Hadoop.Redis.Memcached.MongoDB.Spark.Storm.云计算.R语言.机器学习.Nginx.Linux.MySQL.Java EE..NET.PHP,节省您的时间! 获取视频资料和技术支持地址 ------------------------------------------------------------------------------

knn算法及R语言实现(1)

算法要点: knn(k-nearst neighbor) 1:k:=最近邻点数,D:=training set of data 2:for (待测点z) 3:计算z和每个样例(x,y)的距离 4:选择离z最近的k个训练样例的集合 5:统计第4步得到的点哪一类多,则z就属于哪一类 6:end for 数据: libraryI(ISLR) names(Smarket )#R自带数据 knn代码: attach(Smarket) train=(Year<2005)                   

R语言 神经网络算法

人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型.神经网络由大量的人工神经元联结进行计算.大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统.现代神经网络是一种非线性统计性数据建模工具,常用来对输入和输出间复杂的关系进行建模,或用来探索数据的模式. 人工神经网络从以下四个方面去模拟人的智能行为: 物理结构:人工神经元将模拟生物神经元的功能 计算模拟:人脑的神经元有局部计算和存储的功能,通过连接构成一个系统.人工神经网络中也有大量

机器学习-K-means聚类及算法实现(基于R语言)

K-means聚类 将n个观测点,按一定标准(数据点的相似度),划归到k个聚类(用户划分.产品类别划分等)中. 重要概念:质心 K-means聚类要求的变量是数值变量,方便计算距离. 算法实现 R语言实现 k-means算法是将数值转换为距离,然后测量距离远近进行聚类的.不归一化的会使得距离非常远. 补充:scale归一化处理的意义 两个变量之间数值差别太大,比如年龄与收入的数值差别就很大. 步骤 第一步,确定聚类数量,即k的值 方法:肘部法则+实际业务需求 第二步,运行K-means模型 第三

R语言数据挖掘实战系列(5)

R语言数据挖掘实战系列(5)--挖掘建模 一.分类与预测 分类和预测是预测问题的两种主要类型,分类主要是预测分类标号(离散属性),而预测主要是建立连续值函数模型,预测给定自变量对应的因变量的值. 1.实现过程 (1)分类 分类是构造一个分类模型,输入样本的属性值,输出对应的类别,将每个样本映射到预先定义好的类别.分类模型建立在已有类标记的数据集上,模型在已有样本上的准确率可以方便地计算,所以分类属于有监督的学习. (2)预测 预测是建立两种或两种以上变量间相互依赖的函数模型,然后进行预测或控制.

R语言中的并行计算——搭建R的集群

转载:http://blog.sina.com.cn/s/blog_83bb57b70101qeys.html 一直纠结于R的大数据计算问题,希望可以找到一个彻底的方案解决它.而云服务器当然是解决这个问题的最佳方案,所以,至少从这方面入手. R的云服务器部署有两种解决方案,一种是使用R语言的并行计算,另外一种是使用RHadoop框架. RHadoop框架其实就是M / R 算法的R语言实现,需要使用者有M / R的计算基础,和R语言平常使用的计算方式有很大的不同,因此,我采用的解决方案是搭建R