集成学习 - 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 \(m, D_i\)
\(D_i\) 表示第 i 个采样的数据集
- Train base classifier \(h_i\) on \(D_i\)
与之前的 voting 不同在于, 这里 hi 算法没有变, 只是数据变了
- \(\hat y = mode(h_1(X), h_2(X)..)\)
mode 是众数的意思, 民主投票, 来确定最终结果
BootStrap 有放回采样
假设数据是均匀分布的, 然后我们有采样了一个样本 X, 假设有 n 条数据, 则每条数据, 被抽中的概率是均等的, 都是:
$P(x_i) = \frac {1}{n} $
没有被抽中的概率是:
\(1-P(x_i) = 1-\frac {1}{n}\)
现在进行有放回抽样, 该条数据在 n次都没有被抽中的概率为:
\(P = (1- \frac {1}{n})^n\)
当 n -> 无穷 时:
\(=\frac {1}{e} = 0.3682...\)
洛必达法则求极限
\(lim_{x \rightarrow 0} e^{ln(1-\frac{1}{n})^n} = e^{lim_{x \rightarrow 0} e^{ln(1\frac{n-1}{n})^n}} = e^1 = e\)
Bias-Variance 分解
也就是误差分解. 当然这里引入也是为了, 说明, 为啥这种 bootstrap 比较能充分利用样本数据做训练
\(Loss = Bias + Variance + Noise\)
怎么理解这个误差(真实值 和预测值)呢, 其实就从上面的式子, 从误差产生的原来做一个分析:
Bias : 模型自身的偏差, 模型都是由假设前提(目标函数的嘛, 只是对真实的一种近似
- Variance: 样本数据的训练误差, 每次抽样不一样, 训练的model也不太一样.
Noise: 真实的样本数据和理想模型有差距, 数据点很多是"异常值" 要特征处理等
case
我自己的栗子, 也谈到过, 就上学那会儿, 为了更好拟合数据, 然后模型很复杂, 就过拟合了. 最直观的是简单线性回归
通常收集到的点是有异常值的, 或者数据的分布没有很线性, 这时候, 如果不考虑实际情况, 就去求解, 不论是最小二乘, 还是梯度下降啥都, 能求解, 但必然是欠拟合的, 这样得到的模型, 会有较大的bias.
于是这时候, 为了更好拟合数据, 我通过给模型增加项, 或正则...之类的, 这样造成的问题是 过拟合了. 或者换一个复杂一些的模型, 如决策树来拟合, 也会面临这样的 "均衡问题".
说这么多,就只是想引入这种, bootStrap (有放回抽样)的 方式来训练模型, 做voting , 这样是可以 "抵消" variance 的. 即从整体来说, 这种有放回抽样的方式来训练模型, 会让样本得到比较充分的 训练. 也可以理解为, 投资组合理论中的, 降低风险. 好像也不大恰当的比喻哦.
上学时有过严格证明的, 关于降低风险, 回头整理下,补充一波吧再
集成学习 - Bagging的更多相关文章
- 集成学习---bagging and boosting
作为集成学习的二个方法,其实bagging和boosting的实现比较容易理解,但是理论证明比较费力.下面首先介绍这两种方法. 所谓的集成学习,就是用多重或多个弱分类器结合为一个强分类器,从而达到提升 ...
- 机器学习基础—集成学习Bagging 和 Boosting
集成学习 就是不断的通过数据子集形成新的规则,然后将这些规则合并.bagging和boosting都属于集成学习.集成学习的核心思想是通过训练形成多个分类器,然后将这些分类器进行组合. 所以归结为(1 ...
- [机器学习]集成学习--bagging、boosting、stacking
集成学习简介 集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务. 如何产生"好而不同"的个体学习器,是集成学习研究的核心. 集成学习的思路是通过 ...
- 机器学习——集成学习(Bagging、Boosting、Stacking)
1 前言 集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器.弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(errorrate < ...
- 笔记︱集成学习Ensemble Learning与树模型、Bagging 和 Boosting
本杂记摘录自文章<开发 | 为什么说集成学习模型是金融风控新的杀手锏?> 基本内容与分类见上述思维导图. . . 一.机器学习元算法 随机森林:决策树+bagging=随机森林 梯度提升树 ...
- 集成学习—boosting和bagging
集成~bagging~权值~组合~抽样~样例~基本~并行 一.简介 集成学习通过构建并结合多个学习器来完成学习任务,常可获得比单一学习器显著优越的泛化性能 根据个体学习器的生成方式,目前的集成学习方法 ...
- 集成学习:以Bagging、Adaboosting为例
集成学习是一大类模型融合策略和方法的统称,以下以bagging和boosting为例进行说明: 1.boosting boosting方法训练分类器采用串行的方式,每个弱分类器之间是相互依赖的,尤其后 ...
- 集成学习算法汇总----Boosting和Bagging(推荐AAA)
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...
- 集成学习一: Bagging
目录 偏倚与方差 Bagging 自助采样 投票 随机森林 参考文献: ''团结就是力量'' 对问题进行建模时, 算法无论如何优化都无法达到我们的要求,又或者精准算法的实现或调优成本太大, 这时,我们 ...
随机推荐
- 实现 Cloneable 需要注意
产品Product里面包含BaseInfo对象:Product(productName,companyName,baseinfo)如果implement Cloneable 需要实现 注意强转类 ...
- biopython处理中蜂基因组
1.安装包 pip install bcbio-gff pprint 2.显示中蜂的序列 from Bio import SeqIO genome_name = 'GCF_001442555.1_AC ...
- 关于对pei
我现在才开始整理这个不算晚吧...... 望轻喷 学习博客 我们需要四个程序 1.暴力 2.“正解” 3.数据生成器 4.检查程序 暴力: 就是暴力 eg: #include <cstdio&g ...
- 【转】Java代码编译过程简述
转载:https://blog.csdn.net/fuzhongmin05/article/details/54880257. 代码编译是由Javac编译器来完成,流程如下图1所示: 图1 Javac ...
- Bootstrap-table实现动态合并相同行
Bootstrap-table 表格合并相同名字的列 @编写function() /** * 合并行 * @param data 原始数据(在服务端完成排序) * @param fieldName ...
- [LeetCode] 545. Boundary of Binary Tree 二叉树的边界
Given a binary tree, return the values of its boundary in anti-clockwise direction starting from roo ...
- Spring 源码分析之AbstractApplicationContext源码分析
首先我觉得分析ApplicationContext必须从它的实现类开始进行分析,AbstractApplicationContext我觉得是一个不错的选择,那我们就从这里开始逐一分析吧,首先我自己手画 ...
- [数据库] SQL 语法之基础篇
一.什么是 SQL ? SQL 是 Structured Query Language(结构化查询语言)的缩写,是一种专门用来与数据库沟通的语言.与其他语言(如英语或 C.C++.Java 这样的编程 ...
- LeetCode 561:数组拆分 I Array Partition I
文章全部来自公众号:爱写bug 算法是一个程序的灵魂. Given an array of 2n integers, your task is to group these integers into ...
- centos7上配置mysql8的双主互写
注意:1.主库1:10.1.131.75,主库2:10.1.131.762.server-id必须是纯数字,并且主从两个server-id在局域网内要唯一. [主节点1]vi /etc/my.cnf[ ...