Bagging(R语言实现)—包外错误率,多样性测度
1. Bagging
Bagging即套袋法,其算法过程如下:
从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)
2. 算法设计过程
1.
2.
2.1. 随机采样方法
样本总数150条(Iris数据集)
抽样方法是有放回随机抽样。对150个样本的数据集,进行150次又放回随机采样,这样得到具有和原样本空间同等大小的样本集。
这样操作
次,得到训练样本。33个用决策树C50,34个朴素贝叶斯,33个用KNN。
2.2. 模型评价方法
2.2.1. 包外错误率
由抽样方法可知,每次抽样大约有36.8%的数据未被抽到,这36.8%将作为包外数据
,包外错误率:


图 1 包外错误率
2.2.2. 成对多样性度量
a->两个个体学习器对同一条数据(h1=h2=Class),分类都与原数据集分类相同的总和
b->两个个体学习器对同一条数据(h1=class,h2!=Class)
c->两个个体学习器对同一条数据(h1!=class,h2=Class)
d->两个个体学习器对同一条数据(h1!=class,h2!=Class),分类都与原数据集分类都不相同的总和
K统计量

Q统计量

相关系数

不一致度量

表1两个分类器的分类结果组合情况
|
|
|
|
|
|
|
|
|
|
|
|
图2 多样性度量矩阵

2.3. 伪代码
|
输入: 输出: |
|
过程: for i to T
end for i to T for j=i+1 to T 统计a,b,c,d 计算
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
Bagging(R语言实现)—包外错误率,多样性测度的更多相关文章
- R语言 ggplot2包
R语言 ggplot2包的学习 分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将 ...
- R语言-神经网络包RSNNS
code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...
- R语言-Knitr包的详细使用说明
R语言-Knitr包的详细使用说明 by 扬眉剑 来自数盟[总舵] 群:321311420 1.相关资料 1:自动化报告-谢益辉 https://github.com/yihui/r-ninja/bl ...
- R语言dplyr包初探
昨天学了一下R语言dplyr包,处理数据框还是很好用的.记录一下免得我忘记了... 先写一篇入门的,以后有空再写一篇详细的用法. #dplyr learning library(dplyr) #fil ...
- R语言扩展包dplyr——数据清洗和整理
R语言扩展包dplyr——数据清洗和整理 标签: 数据R语言数据清洗数据整理 2015-01-22 18:04 7357人阅读 评论(0) 收藏 举报 分类: R Programming(11) ...
- 安装R语言的包的方法
安装R语言的包的方法: 1. 在线安装 在R的控制台,输入类似install.packages("TSA") # 安装 TSA install.packages("TS ...
- R语言常用包汇总
转载于:https://blog.csdn.net/sinat_26917383/article/details/50651464?locationNum=2&fps=1 一.一些函数包大汇总 ...
- R语言扩展包dplyr笔记
引言 2014年刚到, 就在 Feedly 订阅里看到 RStudio Blog 介绍 dplyr 包已发布 (Introducing dplyr), 此包将原本 plyr 包中的 ddply() 等 ...
- R语言 arules包 apriori()函数中文帮助文档(中英文对照)
apriori(arules) apriori()所属R语言包:arules Mining Associations w ...
随机推荐
- 使用JNDI+连接池
配置context.xml,在META-INF下新建context.xml,内容如下 <?xml version="1.0" encoding="UTF-8&quo ...
- IDEA项目搭建一——使用Maven创建多模块项目
废话不多说,直接开始吧,如果有哪里写的不多的,还望指出,谢谢 一.创建空项目EmpayProject File -> New -> Project 二.添加父模块Parent Module ...
- 解决stackoverflow打开缓慢的问题
一.原因: 因为stackoverflow用的是谷歌的api,在国内谷歌是被禁用的,所以才会打开缓慢,并不是stackverflow被墙 二.解决方法: 1.如果你正在使用的是火狐浏览器,那么请按照下 ...
- List常用几种方式
第一种,匹配俩个集合中相同的值 , , , , , , }; , , , , , , , , }; var C= listA.Intersect(listB); foreach (var item i ...
- JDK7下VisualVm插件无法链接到插件中心
VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃 ...
- Appium环境搭建(MAC版)
一.环境搭建 (1)安装node.js brew install node (2)安装Xcode 测试iOS App需要.打开Finder,在Applications文件夹下,看是否有Xcode.ap ...
- LeetCode题解之Rotate String
1.题目描述 2.问题分析 直接旋转字符串A,然后做比较即可. 3.代码 bool rotateString(string A, string B) { if( A.size() != B.size( ...
- Prometheus Node_exporter 之 Network Netstat TCP Linux MIPs
Network Netstat TCP Linux MIPs1. TCP Aborts / Tiemouts type: GraphUnit: shortLabel: ConnectionsTCPAb ...
- 给Jqgrid添加横向滚动条,实现点击行数据,触发事件。
function reloadNoKitScheduleGridData() { $("#noKittingScheduleList").jqGrid({ url: ". ...
- UIButton vs UIEventListener 事件处理
NGUI的事件 在使用NGUI的事件处理时,发现UIButton和UIEventListener之间的共同点越来越多. 当然处理事件,也有一些其它的函数,比如:UIEventTrigger,Butto ...








,弱分类器迭代次数T=100,弱分类器B
%集成学习器
%Bagging采样,总共T次
%获得包外测试集
%学习器训练得到个体学习器
%包外错误率
%多样性测度矩阵