1. Bootstrap算法
实际上就是一种针对小样本的无放回式的抽样方法,通过方差的估计可以构造置信区间。
其核心思想和基本步骤如下:
(1) 采用重抽样技术从原始样本中抽取一定数量(自己给定)的样本,此过程允许重复抽样。
(2) 根据抽出的样本计算给定的统计量T。
(3) 重复上述N次(一般大于1000),得到N个统计量T。
(4) 计算上述N个统计量T的样本方差,得到统计量的方差。
2. Bagging算法(bootstrap aggregating)
bootstrap aggregating的缩写。让该学习算法训练多轮,每轮的训练集由从初始的训练集中随机取出的n个训练样本组成,某个初始训练样本在某轮训练集中可以出现多次或根本不出现,训练之后可得到一个预测函数序列 h 1 , ⋯ , h n h_1,⋯ ,h_n h1,⋯,hn,最终的预测函数H对分类问题采用投票方式,对回归问题采用简单平均方法对新示例进行判别。
在参考资料【2】有个很好解释Bagging算法的例子: 假设一下,第一次重新捕鱼100条,发现里面有标记的鱼12条,记下为12%,放回去,再捕鱼100条,发现标记的为9条,记下9%,重复重复好多次之后,假设取置信区间95%,你会发现,每次捕鱼平均在10条左右有标记,所以,我们可以大致推测出鱼塘有1000条左右。其实是一个很简单的类似于一个比例问题。这也是因为提出者Efron给统计学顶级期刊投稿的时候被拒绝的理由–”太简单”。这也就解释了,为什么在小样本的时候,bootstrap效果较好,你这样想,如果我想统计大海里有多少鱼,你标记100000条也没用啊,因为实际数量太过庞大,你取的样本相比于太过渺小,最实际的就是,你下次再捕100000的时候,发现一条都没有标记,,,这特么就尴尬了。。。当然,该方法在小样本时效果很好。通过方差的估计可以构造置信区间等,其运用范围得到进一步延伸。当我们不知道样本分布的时候,bootstrap方法最有用。
上面这种方法,加上了子数据集抽取,模型训练,集成一下,少数服从多数,就变成了Bagging算法。感觉Bagging就是所谓的平权投票
原来,随机森林就是种典型的Bagging算法
3. Boosting算法
最有名的应该就是adaboost算法(也就是自适应 adaptive boosting算法)。初始化时对每一个训练例赋相等的权重1/n,然后用该学算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重,也就是让学习算法在后续的学习中集中对比较难的训练例进行学习,从而得到一个预测函数序列 h 1 , ⋯ , h m h_1,⋯, h_m h1,⋯,hm , 其中 h i h_i hi也有一定的权重,预测效果好的预测函数权重较大,反之较小。
PS: 简单说,对于难分类的样本给于更高的抽样权值,对于分类效果好的子模型提高其权重。 一种迭代算法,针对同一个训练集训练不同的分类器(弱分类器),然后进行分类,对于分类正确的样本权值低,分类错误的样本权值高(通常是边界附近的样本),最后的分类器是很多弱分类器的线性叠加(加权组合),分类器相当简单。实际上就是一个简单的弱分类算法提升(boost)的过程。
4. Bagging和Boost区别
- 区别1
二者的主要区别是取样方式不同。Bagging采用均匀取样,而Boosting根据错误率来取样,因此Boosting的分类精度要优于Bagging。 - 区别2
Bagging的训练集的选择是随机的,各轮训练集之间相互独立,而Boostlng的各轮训练集的选择与前面各轮的学习结果有关;
5. 参考资料
【1】腾讯云-快速理解bootstrap、bagging、boosting
【2】csdn-总结:Bootstrap(自助法),Bagging,Boosting(提升)