集成学习 - Bagging
认识
Bagging 的全称为 (BootStrap Aggregation), 嗯, 咋翻译比较直观一点呢, 就有放回抽样 模型训练? 算了, 就这样吧, 它的Paper是这样的:
Algorithm Bagging:
- Let n be the number of bootstrap samples
这步非常关键: 对训练样本进行 有放回抽样, 这样就可达到,将原来只有一个数据集,现在有n个数据集了.
- for i = 1 to n do:
3. Draw bootstrip sample of size
表示第 i 个采样的数据集
- Train base classifier on
与之前的 voting 不同在于, 这里 hi 算法没有变, 只是数据变了
mode 是众数的意思, 民主投票, 来确定最终结果
BootStrap 有放回采样
假设数据是均匀分布的, 然后我们有采样了一个样本 X, 假设有 n 条数据, 则每条数据, 被抽中的概率是均等的, 都是:
没有被抽中的概率是:
现在进行有放回抽样, 该条数据在 n次都没有被抽中的概率为:
当 n -> 无穷 时:
洛必达法则求极限
Bias-Variance 分解
也就是误差分解. 当然这里引入也是为了, 说明, 为啥这种 bootstrap 比较能充分利用样本数据做训练
怎么理解这个误差(真实值 和预测值)呢, 其实就从上面的式子, 从误差产生的原来做一个分析:
-
Bias : 模型自身的偏差, 模型都是由假设前提(目标函数的嘛, 只是对真实的一种近似
-
Variance: 样本数据的训练误差, 每次抽样不一样, 训练的model也不太一样.
-
Noise: 真实的样本数据和理想模型有差距, 数据点很多是"异常值" 要特征处理等
case
我自己的栗子, 也谈到过, 就上学那会儿, 为了更好拟合数据, 然后模型很复杂, 就过拟合了. 最直观的是简单线性回归
通常收集到的点是有异常值的, 或者数据的分布没有很线性, 这时候, 如果不考虑实际情况, 就去求解, 不论是最小二乘, 还是梯度下降啥都, 能求解, 但必然是欠拟合的, 这样得到的模型, 会有较大的bias.
于是这时候, 为了更好拟合数据, 我通过给模型增加项, 或正则...之类的, 这样造成的问题是 过拟合了. 或者换一个复杂一些的模型, 如决策树来拟合, 也会面临这样的 "均衡问题".
说这么多,就只是想引入这种, bootStrap (有放回抽样)的 方式来训练模型, 做voting , 这样是可以 "抵消" variance 的. 即从整体来说, 这种有放回抽样的方式来训练模型, 会让样本得到比较充分的 训练. 也可以理解为, 投资组合理论中的, 降低风险. 好像也不大恰当的比喻哦.
上学时有过严格证明的, 关于降低风险, 回头整理下,补充一波吧再
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通