为了账号安全,请及时绑定邮箱和手机立即绑定

Bagging(R语言实现)—包外错误率,多样性测度

2019.01.10 22:39 694浏览

1.      Bagging

Bagging即套袋法,其算法过程如下:

  1. 从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)

  2. 每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)

  3. 对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

2.      算法设计过程

1.    

2.    

2.1.    随机采样方法

样本总数150条(Iris数据集)

抽样方法是有放回随机抽样。对150个样本的数据集,进行150次又放回随机采样,这样得到具有和原样本空间同等大小的样本集。

这样操作clip_image002次,得到训练样本。33个用决策树C50,34个朴素贝叶斯,33个用KNN。

2.2.    模型评价方法

2.2.1.  包外错误率

由抽样方法可知,每次抽样大约有36.8%的数据未被抽到,这36.8%将作为包外数据clip_image004,包外错误率:

clip_image006

 

 

 

clip_image008

图 1 包外错误率

 

 

 

2.2.2.  成对多样性度量

a->两个个体学习器对同一条数据(h1=h2=Class),分类都与原数据集分类相同的总和

b->两个个体学习器对同一条数据(h1=class,h2!=Class)

c->两个个体学习器对同一条数据(h1!=class,h2=Class)

d->两个个体学习器对同一条数据(h1!=class,h2!=Class),分类都与原数据集分类都不相同的总和

 

       K统计量

clip_image010

 

           Q统计量

clip_image012

 

 相关系数

clip_image014

 

 

 

不一致度量

clip_image016

 

                             表1两个分类器的分类结果组合情况


clip_image018

clip_image020

clip_image022

clip_image024

clip_image026

clip_image028

clip_image030

clip_image032

 

图2 多样性度量矩阵

clip_image034

 

 

 

2.3.    伪代码

输入:clip_image036,弱分类器迭代次数T=100,弱分类器B

输出:clip_image038  %集成学习器

 

过程:

for i to T

    clip_image040           %Bagging采样,总共T次

    clip_image042     %获得包外测试集

    clip_image044        %学习器训练得到个体学习器

    clip_image046  %包外错误率

 

end

for i to T

    for j=i+1 to T

         统计a,b,c,d

         计算clip_image048

         clip_image050  %多样性测度矩阵

end

end

 

3.      附录

数据集简介:

表2 iris

sepal length

萼片长度
sepal width
萼片宽度
petal length
花瓣长度
petal width
花瓣宽度

Class

Iris-setosa -> 1
Iris-versicolor -> 2
Iris-virginica-> 3

 

 R语言中的坑

第一次用R语言 

例如

testData<-read.csv("G:\\testData.csv", header = FALSE)

将数据集导入之后 调用相关KNN NavieBayes等函数无法成功 原因是在导入的时候 数据集的class列 被自动转换成了整型(int)

tempTrain[,nc]<-as.factor(tempTrain[,nc]) 

调用as.factor()将class转换为因子 就可解决

还有 代码重复利用率低的问题 在下一次更新代码之中 可以解决

感谢大家批评指正

源代码(R):https://github.com/arlenlee/dataMining

原文出处:https://www.cnblogs.com/algori/p/10248609.html

作者:ArlenLee   

点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

相关文章推荐

正在加载中
意见反馈 邀请有奖 帮助中心 APP下载
官方微信

举报

0/150
提交
取消