基于Bagging采样下的集成学习模型.doc
《基于Bagging采样下的集成学习模型.doc》由会员分享,可在线阅读,更多相关《基于Bagging采样下的集成学习模型.doc(27页珍藏版)》请在冰点文库上搜索。
![基于Bagging采样下的集成学习模型.doc](https://file1.bingdoc.com/fileroot1/2023-5/7/8c587ca0-cb7b-4bd6-81eb-1db872549d98/8c587ca0-cb7b-4bd6-81eb-1db872549d981.gif)
基于Bagging采样下的集成学习模型
信息与计算科学14-1班
摘要本文采用Bagging-并行化的个体学习器,即有放回地抽取训练样本集,每个基学习器只使用了初始训练集中约63.2%的样本,剩下的约36.8%的样本可用作验证集来对泛化性能进行包外估计(out-of-bagestimate)。
采用libsvm方法得到个体学习器的泛化误差及强学习器的包外泛化误差及运行时间。
得到个体学习器的准确率及强学习器的包外误差,结论个体学习器良好,强学习器较差。
关键词集成学习、Bagging、泛化误差、svm支持向量机
一集成学习理论
1.1集成学习
集成学习(ensemblelearning)是通过构建并结合多个学习器来完成学习任务的,因此有写文章中也称其为多分类器系统(multi-classifiersystem)或者是委员会学习(committee-basedlearning)。
下图是集成学习的一般结构,将一组“个体学习器”(individuallearner)用一些何理的策略结合起来,这些个体学习器可以是各种弱分类器,例如决策树算法,BP神经网络等。
若所有的个体学习器是同种类型的,则称这样的集成是“同质”的(homogeneous),此时的学习器也可以称作是“基学习器”(baselearner),相应的学习算法则为“基学习算法”(baselearningalgorithm).若集成中的个体学习器包含不同的学习器,则称这样的集成为“异质”的(heterogenous),此时的个体学习器则被称为是“组件学习器”(componentlearner)也可以被直接称为个体学习器。
弱学习器:
指泛化性能略优于随机猜测的学习器;例如在二分类问题中精确度略高于50%的分类器。
1.2Bagging与随机森林学习方法
本文说明采用并行化的个体学习器生成方式,和上文的Boosting串行化要求个体学习器存在强依赖关系不同的是,该生成方式是基于个体学习器应尽可能相互独立。
独立的个体学习器可以得到泛化性能强的集成;当然现实中不存在绝对的独立,不过可以设法使基学习器尽可能具有较大差异。
一种方法就是对训练样本进行采样,产生出若干个不同的子集,再从每个数据集子集中训练出一个基学习器。
不过如果采样出的每个子集完全不同,那么每个基学习器只用到了部分训练数据,可能都无法进行有效学习。
因此,考虑使用相互有交叠的采样子集。
假定基学习器的计算复杂度为O(m),则Bagging的复杂度大致为T(O(m)+O(s)),因采样与投票/平均过程的复杂度O(s)很小,且T是一个不太大的常数(训练轮数),因此,训练一个Bagging集成与直接使用基学习算法训练一个学习器的复杂度同阶,可见Bagging是一个高效的集成学习算法。
与标准的AdaBoost算法只适用于二分类任务不同,Bagging能不经修改地用于多分类、回归等任务。
自助采样过程还给Bagging带来一个优点:
由于每个基学习器只使用了初始训练集中约63.2%的样本,剩下的约36.8%的样本可用作验证集来对泛化性能进行包外估计(out-of-bagestimate),为此需记录每个基学习器所使用的训练样本。
令Dt表示ht实际使用的训练样本集,令Hoob(x)表示对样本x的包外预测,即仅考虑哪些未使用x训练的基学习器在x上的预测,有:
则Bagging泛化误差的包外估值为:
事实上,包外样本还有其他用途,如当基学习器是决策树时,可使用包外样本来辅助剪枝,或用于估计决策树中各结点的后验概率以辅助对零训练样本结点的处理;当基学习器是神经网络时,可使用包外样本来辅助早起停止以减小过拟合风险。
从偏差-方差分解的角度看,Bagging主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显。
二个体学习器
2.1libsvm个体学习器
LIBSVM是台湾大学林智仁(LinChih-Jen)教授等2001年开发设计的一个简单,易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进,修改以及在其它操作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;
2.2执行参数
2.2.1svmtrain的用法
svmtrain我们在前面已经接触过,他主要实现对训练数据集的训练,并可以获得SVM模型.
用法:
svmtrain[options]training_set_file[model_file]
training_set_file是要进行训练的数据集;model_file是训练结束后产生的模型文件,文件中包括支持向量样本数,支持向量样本以及lagrange系数等必须的参数;该参数如果不设置将采用默认的文件名,也可以设置成自己惯用的文件名.
默认情况下,只需要给函数提供一个样本文件名就可以了,但为了能保存结果,还是要提供一个结果文件名,比如:
test.model,则命令为:
svmtraintest.txttest.model
2.2.2svmpredict 的用法
svmpredict是根据训练获得的模型,对数据集合进行预测.
用法:
svmpredict[options]test_filemodel_fileoutput_file
其中,options为操作参数,可用的选项即表示的涵义如下所示:
-bprobability_estimates:
是否需要进行概率估计预测,可选值为0或者1,默认值为0.
model_file:
是由svmtrain产生的模型文件;
test_file:
是要进行预测的数据文件,格式也要符合libsvm格式, 即使不知道label的值, 也要任意填一个,svmpredict会在output_file中给出正确的label结果,如果知道label的值,就会输出正确率;
output_file:
是svmpredict的输出文件,表示预测的结果值.
2.2获取训练集
输出的bagging训练集及其他函数详见附录A
…
三测试
3.1个体学习器错误率
表3.1个体学习器错误率
学习器
1
2
3
4
5
6
7
8
9
10
错误率
0.34
0.355
0.313
0.319
0.343
0.33
0.288
0.365
0.27
0.299
时间
0.193
0.1617
0.1556
0.1189
0.1723
0.2281
0.1585
0.1579
0.2812
0.2245
3.2强学习器泛化误差
表3.2强学习器泛化误差
学习器
1
正确率
0.4414
0.3345
0.3621
0.3276
0.3448
0.3759
0.3759
0.3517
0.3172
0.3621
时间
0.0057
四分析
4.1结论分析
从表3.1中我们看到基学习器误差平均30%左右,学习结论良好。
从表3.2中我们看到个体学习器误差平均68%左右,泛化结论差。
附录A
A.1
matlab函数:
集成算法主函数:
function[PRE,out,accuracy,time]=MainUniStudy(T)
%out--强学习器的最终分类标签
%PRE--强学习器后的测试样本x的泛化误差
%T--基学习器的数量
[model,D,d,predict_label,accuracy]=InfoDealTest(T);
label=[];test=[];time=[]
tic;
fori=1:
T
Data=predict_label{1,i};
label=[label,Data(1:
290,1)];
%Y=[tabulate(x(i,:
))];%获得每一行数据出现频率的的统计
yuan=d{1,i};%取出随机后样本的数据的分类标签
test=[test,yuan(1:
290,1)];%预测标签最少的所有行
%Y=[tabulate(x(i,:
))];%获得每一行数据出现频率的的统计
end
[out]=ReturnMax(label);
out=out';%强学习器的最终label输出,,用的是投票方法
PRE=[];
forj=1:
T
check=test(:
j);
count=0;
fori=1:
size(out,1)
if(out(i,1)==check(i,1))
count=count+1;
end
end
rate=count/size(out,1);
PRE=[PRE,rate];
end
time=[time,toc];
数据处理函数:
function[model,D,d,predict_label,acc,time]=InfoDeal(T)
%data--所有的数据集[]
%rate--从数据集中取出的样本比率如0.8
%T--训练集的个数
load('data.mat');
[row,col]=size(data);
%total=round(row*rate);%选出的训练集个数
D=[];d=[];time=[];
fori=1:
T
%shunxu=randi((row-total),1);%顺序取连续样本的起点
%shunxu,(shunxu+total-1)
%number=row-total;%将样本重复取值增加为所有数据集个数
choose=randi(row,row,1);%随机重复取值
label=data(choose,19);
inst=data(choose,1:
18);
[m,n]=hist(choose,unique(choose));%对相同行的数据统计
n=n';
[rows]=Find(1:
row,n);
rows=rows';
label1=data(rows,19);
inst1=data(rows,1:
18);
tic;
model{i}=svmtrain(label,inst,'-s1-t0');
[predict_label{i},accuracy{i},e]=svmpredict(label1,inst1,model{i});
time=[time,toc];
D{i}=[label,inst];d{i}=[label1,inst1];
end
acc=[];
fori=1:
10
a=accuracy{1,i};
acc=[acc,0.01*(100-a(1,1))];
end
返回矩阵中每行出现最多的数据值:
function[out]=ReturnMax(Data)%返回矩阵中每行出现最多的数据值
forir=1:
size(Data,1)%行数
foric=1:
size(Data,2)%列数
temp(ic)=size(find(Data(ir,:
)==Data(ir,ic)),2);
end
[dataid]=max(temp,[],2);
out(ir)=Data(ir,id);
end
将两个一维矩中不同的数据输出(已排序的矩阵)
function[C]=Find(A,B)%将两个一维矩中不同的数据输出(已排序的矩阵)
la=length(A);
lb=length(B);
s=1;
fori=1:
la
isequal=0;
forj=1:
lb
ifA(i)==B(j)
isequal=1;
break;
end
end
ifisequal==0
C(s)=A(i);
s=s+1;
end
end
A.2随机数据集采样
基学习器1
4 97 46 94 209 67 10 195 34 22 147 224 573 194 70 0 14 188 197
3 98 51 84 207 72 7 184 35 21 161 199 520 198 72 9 11 196 199
4 80 38 64 130 59 8 134 51 18 126 152 259 135 76 1 23 179 188
4 105 52 107 207 60 11 218 31 24 167 221 701 197 66 0 20 191 203
4 89 36 77 172 62 8 157 42 19 125 174 367 126 63 5 22 198 205
3 83 41 70 155 65 7 144 46 19 141 168 309 147 71 4 12 188 195
3 86 42 64 122 54 6 148 46 19 143 170 319 171 87 1 3 179 182
4 92 46 82 170 58 8 165 40 20 149 181 409 164 61 8 11 200 208
4 104 55 105 216 68 11 205 32 23 169 221 623 216 71 9 18 189 196
2 105 54 106 215 68 10 208 32 24 166 217 640 218 69 14 23 189 199
4 93 34 66 140 56 7 130 51 18 120 151 251 114 62 5 29 201 207
4 98 54 104 186 59 10 213 32 24 172 223 665 217 73 1 26 186 195
2 107 51 103 182 56 11 213 31 24 162 226 673 217 72 2 4 188 198
2 105 54 100 220 69 10 221 30 25 170 232 718 202 73 0 13 187 199
3 86 45 66 126 57 8 148 46 19 145 170 321 186 86 0 7 179 182
2 106 54 101 222 67 12 222 30 25 173 228 721 200 70 3 4 187 201
4 101 53 103 203 63 9 195 34 22 162 210 571 210 68 5 5 191 198
2 88 37 57 132 62 6 135 50 18 125 151 265 144 83 16 16 180 184
3 94 39 75 184 72 8 155 42 19 133 175 365 145 70 4 5 192 200
4 86 38 89 176 59 9 169 39 20 132 190 428 148 67 7 33 193 202
4 99 50 88 204 64 10 185 35 22 159 209 517 193 66 12 11 194 201
4 109 51 100 197 59 10 192 34 22 161 210 553 195 64 14 3 196 202
3 99 38 74 184 66 6 164 39 20 131 193 414 137 71 2 22 200 202
1 90 44 69 152 64 7 135 49 18 145 165 272 162 75 3 2 187 191
3 98 52 86 207 69 5 192 33 22 161 212 570 221 75 4 6 194 195
1 89 40 77 159 65 9 144 46 19 141 168 314 143 70 0 5 190 200
4 79 39 72 127 53 9 142 48 19 135 165 295 144 77 7 21 181 189
4 87 38 85 177 61 8 164 40 20 129 186 402 130 63 1 25 198 205
3 86 45 73 152 63 6 149 44 19 145 170 335 176 71 6 1 189 196
4 95 42 96 197 65 9 178 37 21 141 199 474 149 67 1 29 193 200
4 99 52 104 177 55 10 210 32 24 166 219 657 215 73 3 2 187 194
4 107 52 103 186 57 11 214 31 24 162 217 676 189 66 6 5 189 198
4 101 51 105 212 68 10 209 32 24 162 222 653 224 73 5 23 186 195
4 98 48 101 195 61 11 207 31 23 152 227 650 193 71 5 7 189 196
3 105 51 80 207 71 6 195 33 22 159 214 579 188 75 6 20 194 194
3 87 42 60 116 51 6 150 46 19 141 169 324 171 85 2 14 178 182
4 89 36 69 142 57 7 135 50 18 126 154 266 128 66 3 36 193 203
3 102 53 101 238 72 4 238 28 26 163 267 844 242 85 7 22 184 184
4 106 49 107 194 57 11 214 31 24 161 224 670 172 67 0 39 192 206
4 97 47 81 183 64 8 168 39 20 150 193 426 182 70 11 2 192 198
1 87 40 81 162 68 10 146 46 19 139 167 317 157 70 0 13 189 199
4 104 55 105 216 68 11 205 32 23 169 221 623 216 71 9 18 189 196
4 97 37 76 169 60 8 161 41 20 131 189 391 136 72 0 0 188 192
1 88 42 64 151 62 8 130 51 18 142 150 253 161 63 3 2 203 210
3 95 47 73 195 70 7 167 38 20 152 184 430 185 69 9 19 200 206
4 98 58 101 208 65 12 226 30 25 182 225 748 216 71 6 1 185 196
1 86 40 66 139 59 7 122 54 17 139 145 225 143 63 7 11 202 208
3 93 45 86 201 69 7 184 35 22 145 203 523 183 72 0 4 194 197
1 90 44 69 152 64 7 135 49 18 145 165 272 162 75 3 2 187 191
3 107 57 106 179 51 8 257 26 28 172 275 954 232 83 2 20 181 184
2 88 37 57 132 62 6 135 50 18 125 151 265 144 83 16 16 180 184
1 86 44 78 164 68 9 142 46 18 147 168 305 171 70 1 11 190 201
2 107 55 103 213 68 11 219 30 25 172 221 709 216 70 10 7 187 197
2 110 53 104 223 66 10 211 32 24 164 223 659 210 67 5 16 190 203
2 90 43 72 172 59 8 154 42 19 144 174 360 158 61 15 9 203 209
1 89 42 66 125 53 7 131 51 18 144 162 254 162 73 10 17 188 191
4 103 54 107 218 64 12 222 30 25 174 221 728 199 67 0 18 189 200
2 83 37 54 131 61 4 135 50 18 127 152 271 141 85 3 6 180 183
3 98 38 70 186 68 6 164 39 20 136 189 413 129 71 3 17 200 203
4 102 54 101 190 58 10 222 30 25 171 224 728 203 71 13 6 189 198
1 94 35 66 147 62 9 131 50 18 127 159 258 115 66 8 7 196 201
4 108 55 105 230 68 11 218 30 24 171 228 709 210 69 14 4 190 197
1 92 40 62 144 59 8 127 52 17 139 149 241 150 62 13 1 204 210
1 84 37 70 150 61 7 137 49 18 140 156 278 121 64 0 23 196 205
3 98 51 84 207 72 7 184 35 21 161 199 520 198 72 9 11 196 199
1 97 45 88 173 67 10 157 43 20 157 173 365 157 67 8 12 192 200
4 92 38 74 178 62 9 161 41 20 135 181 388 132 63 7 29 197 206
4 104 55 105 223 70 10 223 30 25 177 237 737 218 75 14 11 188 196
1 93 41 79 159 63 8 144 46 19 150 165 309 134 67 4 9 195 203
3 93 45 86 201 69 7 184 35 22 145 203 523 183 72 0 4 194 197
2 101 51 112 201 59 11 214 32 24 162 223 667 194 65 0 36 190 206
3 97 45 72 187 71 5 161 40 20 144 178 399 186 70 7 7 196 203
2 92 37 80 180 67 8 154 43 19 129 180 353 144 69 6 9 190 195
4 97 55 96 170 54 10 216 31 24 173 219 68