其中,和被挑选出来,使得是最适合训练数据的模型,因此这是对 的最佳可能改进 。我们可以进一步将其表示为:
文章插图
其中,是给定模型的拟合误差,是损失/误差函数 。因此,我们并没有在求和过程中对所有L个模型进行「全局优化」,而是通过「局部」优化来近似最优解并将弱学习器逐个添加到强模型中 。
更特别的是,在考虑二分类问题时,我们可以将 adaboost 算法重新写入以下过程:首先,它将更新数据集中观测数据的权重,训练一个新的弱学习器,该学习器重点关注当前集成模型误分类的观测数据 。其次,它会根据一个表示该弱模型性能的更新系数,将弱学习器添加到加权和中:弱学习器的性能越好,它对强学习器的贡献就越大 。
因此,假设我们面对的是一个二分类问题:数据集中有N个观测数据,我们想在给定一组弱模型的情况下使用adaboost算法 。在算法的起始阶段(序列中的第一个模型),所有的观测数据都拥有相同的权重1/N 。然后,我们将下面的步骤重复L次(作用于序列中的L个学习器):
- 用当前观测数据的权重拟合可能的最佳弱模型;
- 计算更新系数的值,更新系数是弱学习器的某种标量化评估指标,它表示相对集成模型来说,该弱学习器的分量如何;
- 通过添加新的弱学习器与其更新系数的乘积来更新强学习器计算新观测数据的权重,该权重表示我们想在下一轮迭代中关注哪些观测数据(聚和模型预测错误的观测数据的权重增加,而正确预测的观测数据的权重减小) 。
文章插图
3. 堆叠法(Stacking)
堆叠法Stacking与Bagging和Boosting主要存在两方面的差异 。首先,堆叠法通常考虑的是异质弱学习器(不同的学习算法被组合在一起),而Bagging和Boosting主要考虑的是同质弱学习器 。其次,stacking堆叠法学习用元模型组合基础模型,而Bagging和Boosting则根据确定性算法组合弱学习器 。
正如上文已经提到的,堆叠法的概念是学习几个不同的弱学习器,并通过训练一个元模型来组合它们,然后基于这些弱模型返回的多个预测结果输出最终的预测结果 。
因此,为了构建Stacking模型,我们需要定义两个东西:想要拟合的L个学习器以及组合它们的元模型 。例如,对于分类问题来说,我们可以选择KNN分类器、logistic回归和SVM作为弱学习器,并决定学习神经网络作为元模型 。然后,神经网络将会把三个弱学习器的输出作为输入,并返回基于该输入的最终预测 。所以,假设我们想要拟合由L个弱学习器组成的Stacking集成模型 。我们必须遵循以下步骤:
- 将训练数据分为两组;
- 选择 L 个弱学习器,用它们拟合第一组数据;
- 使 L 个学习器中的每个学习器对第二组数据中的观测数据进行预测;
- 在第二组数据上拟合元模型,使用弱学习器做出的预测作为输入 。
为了克服这种限制,我们可以使用某种k-折交叉训练方法(类似于 k-折交叉验证中的做法) 。这样所有的观测数据都可以用来训练元模型:对于任意的观测数据,弱学习器的预测都是通过在k-1折数据(不包含已考虑的观测数据)上训练这些弱学习器的实例来完成的 。换句话说,它会在k-1折数据上进行训练,从而对剩下的一折数据进行预测 。迭代地重复这个过程,就可以得到对任何一折观测数据的预测结果 。这样一来,我们就可以为数据集中的每个观测数据生成相关的预测,然后使用所有这些预测结果训练元模型 。
文章插图
十折交叉验证
由于深度学习模型一般需要较长的训练周期,如果硬件设备不允许建议选取留出法,如果需要追求精度可以使用交叉验证的方法 。
推荐阅读
- 把计算机“防火墙”说的通俗易懂,这篇文章做到了
- 淘宝如何做到月销几千 淘宝新店怎么做基础销量
- 太厉害了!总算有人把“串行通信”的基础知识讲的明明白白了
- 超全的Python图像处理讲解,小白也能懂
- 混淆矩阵-不再那么令人混淆了
- 做淘宝店铺最基础的运营技巧 淘宝运营注意事项
- 新手淘宝开店入门基础 新手开淘宝店怎么操作
- 自己在家不知道练什么?推荐8个可以每天练习的瑜伽基础动作
- 初学瑜伽基础知识有哪些需要注意的?
- 淘宝基础优化怎么做 淘宝基础优化指的是哪些方面