1.Bagging
Bagging 即套袋法, 其算法过程如下:
从原始样本集中抽取训练集. 每轮从原始样本集中使用 Bootstraping 的方法抽取 n 个训练样本(在训练集中, 有些样本可能被多次抽取到, 而有些样本可能一次都没有被抽中). 共进行 k 轮抽取, 得到 k 个训练集.(k 个训练集之间是相互独立的)
每次使用一个训练集得到一个模型, k 个训练集共得到 k 个模型.(注: 这里并没有具体的分类算法或回归方法, 我们可以根据具体问题采用不同的分类或回归方法, 如决策树, 感知器等)
对分类问题: 将上步得到的 k 个模型采用投票的方式得到分类结果; 对回归问题, 计算上述模型的均值作为最后的结果.(所有模型的重要性相同)
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. 伪代码
输入: ,弱分类器迭代次数 T=100 ,弱分类器 B 输出:
% 集成学习器 |
过程: for i to T
%Bagging 采样,总共 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
来源: https://www.cnblogs.com/algori/p/10248609.html