1. 自助聚合(Bagging)
在并行化的方法中,我们单独拟合不同的学习器,因此可以同时训练它们 。最著名的方法是自助聚合(Bagging),它的目标是生成比单个模型更棒的集成模型 。Bagging的方法实现 。
自助法:这种统计技术先随机抽取出作为替代的 B 个观测值,然后根据一个规模为 N 的初始数据集生成大小为 B 的样本(称为自助样本) 。
文章插图
在某些假设条件下,这些样本具有非常好的统计特性:在一级近似中,它们可以被视为是直接从真实的底层(并且往往是未知的)数据分布中抽取出来的,并且彼此之间相互独立 。因此,它们被认为是真实数据分布的代表性和独立样本(几乎是独立同分布的样本) 。
为了使这种近似成立,必须验证两个方面的假设:
- 初始数据集的大小N应该足够大,以捕获底层分布的大部分复杂性 。这样,从数据集中抽样就是从真实分布中抽样的良好近似(代表性);
- 与自助样本的大小B相比,数据集的规模N应该足够大,这样样本之间就不会有太大的相关性(独立性) 。注意,接下来我可能还会提到自助样本的这些特性(代表性和独立性),但读者应该始终牢记:这只是一种近似 。
在大多数情况下,相较于实际可用的数据量来说,考虑真正独立的样本所需要的数据量可能太大了 。然而,我们可以使用自助法生成一些自助样本,它们可被视为最具代表性以及最具独立性(几乎是独立同分布的样本)的样本 。这些自助样本使我们可以通过估计每个样本的值,近似得到估计量的方差 。
文章插图
2. 提升法(Boosting)
在顺序化的方法中,组合起来的不同弱模型之间不再相互独立地拟合 。其思想是迭代地拟合模型,使模型在给定步骤上的训练依赖于之前的步骤上拟合的模型 。提升法(Boosting)是这些方法中最著名的一种,它生成的集成模型通常比组成该模型的弱学习器偏置更小 。
Boosting和Bagging的工作思路是一样的:我们构建一系列模型,将它们聚合起来得到一个性能更好的强学习器 。然而,与重点在于减小方差的Bagging不同,Boosting着眼于以一种适应性很强的方式顺序拟合多个弱学习器:序列中每个模型在拟合的过程中,会更加重视那些序列中之前的模型处理的很糟糕的观测数据 。
直观地说,每个模型都把注意力集中在目前最难拟合的观测数据上 。这样一来,在这个过程的最后,我们就获得了一个具有较低偏置的强学习器(我们会注意到,Boosting也有减小方差的效果) 。和Bagging一样,Boosting也可以用于回归和分类问题 。由于其重点在于减小偏置,用于Boosting的基础模型通常是那些低方差高偏置的模型 。
例如,如果想要使用树作为基础模型,我们将主要选择只有少许几层的较浅决策树 。而选择低方差高偏置模型作为Boosting弱学习器的另一个重要原因是:这些模型拟合的计算开销较低(参数化时自由度较低) 。实际上,由于拟合不同模型的计算无法并行处理(与Bagging不同),顺序地拟合若干复杂模型会导致计算开销变得非常高 。
一旦选定了弱学习器,我们仍需要定义它们的拟合方式和聚合方式 。介绍两个重要的Boosting算法:自适应提升(adaboost)和梯度提升(gradient boosting) 。
简而言之,这两种元算法在顺序化的过程中创建和聚合弱学习器的方式存在差异 。自适应提升算法会更新附加给每个训练数据集中观测数据的权重,而梯度提升算法则会更新这些观测数据的值 。这里产生差异的主要原因是:两种算法解决优化问题(寻找最佳模型——弱学习器的加权和)的方式不同 。
文章插图
2.1. 自适应adaboost
在自适应adaboost中,我们将集成模型定义为L个弱学习器的加权和:
其中为系数,为弱学习器寻找这种最佳集成模型是一个困难的优化问题 。因此,我们并没打算一次性地解决该问题(找到给出最佳整体加法模型的所有系数和弱学习器),而是使用了一种更易于处理的迭代优化过程(即使它有可能导致我们得到次优解) 。另外,我们将弱学习器逐个添加到当前的集成模型中,在每次迭代中寻找可能的最佳组合(系数、弱学习器) 。换句话说,我们循环地将 定义如下:
推荐阅读
- 把计算机“防火墙”说的通俗易懂,这篇文章做到了
- 淘宝如何做到月销几千 淘宝新店怎么做基础销量
- 太厉害了!总算有人把“串行通信”的基础知识讲的明明白白了
- 超全的Python图像处理讲解,小白也能懂
- 混淆矩阵-不再那么令人混淆了
- 做淘宝店铺最基础的运营技巧 淘宝运营注意事项
- 新手淘宝开店入门基础 新手开淘宝店怎么操作
- 自己在家不知道练什么?推荐8个可以每天练习的瑜伽基础动作
- 初学瑜伽基础知识有哪些需要注意的?
- 淘宝基础优化怎么做 淘宝基础优化指的是哪些方面