集成学习(3)

前面两节课我们介绍了AdaBoost。 接下来我们介绍对多个弱分类器独立进行学习的Bagging学习法和随机森林。
1 Bagging
想要得到泛化能力强的集成,集成中的个体学习器应尽可能相互独立,而在现实任务中无法做到,但是可以使基学习器尽可能产生较大差异。给定一个数据集,一种可能的做法就是对训练样本进行采样产生出若干个子集,然后每个子集训练出一个基学习器。
Bagging基于“自助采样法”, 给定一个包含m个样本的数据集,我们先随机选取一个样本放入采样集中,再把该样本放入初始的数据集,使得下次采样时该样本仍有可能被采集到,这样经过m次随机操作我们得到了m个样本的采样集。初始训练集中有的样本多次出现,有的从未出现。照这样我们采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些学习器结合起来。在对预测输出进行结合时, Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法
这里写图片描述

分类任务伪代码: Dbs 是自助采样产生的样本分布。


输入:训练集D=(x1,y1),(x2,y2),,(xm,ym) 基学习算法A 训练轮数 T
过程:
1:for t = 1,2….T do
2: - - - ht=A(D,Dbs)
3:end for
输出H(x)=argmaxyγTt=1I(ht(x)=y)


自助采样法 只有63.2%的样本被采用,那么剩余的36.8%的样本可以用来进行测试(包外估计),事实上,包外估计还有其他用途: 如基学习器是决策树时,可使用包外样本来辅助剪枝;如果基学习器是神经网络时,包外样本可以用来辅助早期停止以减小过拟合风险。

clc;clear;close all;
%%Creat Samples%
n = 50;
x = randn(n, 2);  % 产生n*2的矩阵
y =2 * (x(:,1)>x(:,2)) - 1 ; %产生 1 -1 标签 
T = 5000;
Y = zeros(50, 50);
X0 = linspace(-3,3,50);
[X(:,:,1) X(:,:,2)] = meshgrid(X0);
%%剪枝分类器--基分类器%
for i=1:T
    db = ceil(2*rand);
    r = ceil(n*rand(n,1));  % n*1矩阵 (0-n的整数)
    % 自助采样
    xb = x(r,:); % 随机选取一行组合作为样本,(n*2) 
    yb = y(r); % 标签 (n*1)
    [xs, xi] = sort(xb(:,db));
    el = cumsum(yb(xi));
    eu = cumsum(yb(xi(end:-1:1)));
    e = eu(end-1:-1:1) - el(1:end-1);
    [em,ei] = max(abs(e));  
    c = mean(xs(ei:ei+1));   %阈值
    s = sign(e(ei));  
    Y = Y + sign(s*(X(:,:,db)-c))/T;    
end
figure(1);clf;hold on; axis([-3 3 -3 3]);
colormap([1 0.7 1; 0.7 1 1]);
contourf(X0,X0,sign(Y));
plot(x(y==1,1),x(y==1,2),'bo');
plot(x(y==-1,1),x(y==-1,2),'rx');

这里写图片描述

2 随机森林
随机森林是Bagging的变体,RF在以决策树为基学习器构建Bagging的基础上,进一步在决策树的训练过程中引入了随机属性选择。
具体过程:传统的决策树在选择划分属性时是在当前节点属性集合(假设有d个属性)中选择一个最佳的属性,而在随机森林中,对基决策树的每一个节点,先从该节点的属性集合中随机选择包含k个属性的子集。然后再从这个子集中选择一个最优的属性用于划分。 其中k控制了随机性的引入程度,k=d:传统决策树,k=1:随机选择一个属性用于划分。一般的,推荐 k=log2(d)

内容概要:本文围绕SecureCRT自动化脚本开发在毕业设计中的用,系统介绍了如何利用SecureCRT的脚本功能(支持Python、VBScript等)提升计算机、网络工程等相关专业毕业设计的效率与质量。文章从关键概念入手,阐明了SecureCRT脚本的核心对象(如crt、Screen、Session)及其在解决多设备调试、重复操作、跨场景验证等毕业设计常见痛点中的价值。通过三个典型用场景——网络设备配置一致性验证、嵌入式系统稳定性测试、云平台CLI兼容性测试,展示了脚本的实际赋能效果,并以Python实现的交换机端口安全配置验证脚本为例,深入解析了会话管理、屏幕同步、输出解析、异常处理和结果导出等关键技术细节。最后展望了低代码化、AI辅助调试和云边协同等未来发展趋势。; 适合人群:计算机、网络工程、物联网、云计算等相关专业,具备一定编程基础(尤其是Python)的本科或研究生毕业生,以及需要进行设备自动化操作的科研人员; 使用场景及目标:①实现批量网络设备配置的自动验证与报告生成;②长时间自动化采集嵌入式系统串口数据;③批量执行云平台CLI命令并分析兼容性差异;目标是提升毕业设计的操作效率、增实验可复现性与数据严谨性; 阅读建议:建议读者结合自身毕业设计课题,参考文中代码案例进行本地实践,重点关注异常处理机制与正则表达式的适配,并注意敏感信息(如密码)的加密管理,同时可探索将脚本与外部工具(如Excel、数据库)集成以增结果分析能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值