集成方法原理总结

集成学习

集成方法的目标是把多个使用给定学习算法构建的基估计器的预测结果结合起来,从而获得比单个估计器更好的泛化能力/鲁棒性。简单来说集成学习就是把若干个基学习器通过某种学习算法结合起来,进而达到比单个基学习更好的效果。
主要有两个问题:
(1)选择若干个基学习器
(2)选择某种学习算法
首先,选择的基学习器的方法有两种:一种是选择相同的基学习器,如决策树DT、KNN、神经网络。集成学习中使用的都是相同的基学习器。另一种方法是选择不同的基学习器。

其次,集成学习的常用的方法有Bagging方法和Boosting方法。Bagging方法的典型例子是RF(随机森林 Random Forest),Boosting方法的典型例子是Adaboost、GBDT(梯度提升树)。

1、Bagging方法和Boosting方法

1.1Bagging(套袋法)

借用一张比较形象的图来描述一下Bagging方法:
在这里插入图片描述从图中可以看到,Bagging方法对m个样本的训练集采取随机采样的方法(Bootstraping方法)抽取m个样本,进行T轮抽取,得到T个训练集。对这T个训练集,独立训练T个弱学习器,然后使用某种集合策略组合成强学习器。

其中,随机采样(也称为自助采样法)方法是Bootstrapping方法。这是一种有放回的抽样方法。是非系数统计中一种重要的估计统计量方差而进行区间估计的统计方法。若训练集大小为N,对于每个弱学习器来说,随机有放回的从训练集中抽取N个训练,作为该弱学习器的训练集。

随机:如果不随机的话,每个弱学习器的训练集一样,训练出的弱学习器的预测结果一样。
有放回:有放回抽样,每个弱学习器的训练集之间才会有交集。完全不同的话,在做分类的时候,最后的分类结果取决于多个弱学习的投票表决,则每个都不同。

结合策略:对于分类和回归问题采取的结合策略不同
分类:所有弱学习器投票产生最终分类结果
回归:所有弱学习器预测结果均值作为最终预测结果

随机森林RF是Bagging算法的一个典型例子,是Bagging算法结合决策树DT,多棵决策树组成森林,在随机取样的基础上加上特征的随机选取,结合构成随机森林。

在scikit-learn中,bagging 方法使用统一的 BaggingClassifier 元估计器(或者 BaggingRegressor ),基估计器和随机子集抽取策略由用户指定。
eg:

>>> from sklearn.ensemble import BaggingClassifier
>>> from sklearn.neighbors import KNeighborsClassifier
>>> bagging = BaggingClassifier(KNeighborsClassifier(),
...                             max_samples=0.5, max_features=0.5)
1.2、Boosting(提升法)

继续上图:
在这里插入图片描述从图中可以看到,Boosting算法是从弱学习器开始加强,通过加权来进行训练。首先对训练集中的每个样本建立初始权值,表示对每个样本的关注度。首先从训练集中用初始权重D(1)训练弱学习器1,然后根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的在弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。
Boosting算法中典型的例子是GBDT和Adaboost。

1.3两种方法区别

1). 样本选择:Bagging采取Bootstraping的是随机有放回的取样,Boosting的每一轮训练的样本是固定的,改变的是每一个样本的权重。
2). 样本权重:Bagging采取的是均匀取样,且每个样本的权重相同,Boosting根据错误率调整样本权重,错误率越大的样本权重会变大
3). 并行计算:Bagging 的各个预测函数可以并行生成;Boosting的各个预测函数必须按照顺序迭代生成。

将决策树与以上框架组合成新的算法:

  1. Bagging + 决策树 = 随机森林
  2. AdaBoost + 决策树 = 提升树
  3. gradient boosting+ 决策树 = GBDT

2.结合策略

对于Bagging和Boosting方法训练完弱学习器后,都需要通过某种结合策略把不同弱学习器的结果结合起来,主要有三种结合策略。

2.1平均法

该方法的原理是构建多个独立的估计器,然后取它们的预测结果的平均。一般来说组合之后的估计器是会比单个估计器要好的,因为它的方差减小了。
对于数值类的回归预测问题,通常使用的结合策略是平均法,也就是说,对于若干个弱学习器的输出进行平均得到最终的预测输出。
主要有算术平均加权平均两种。

2.2投票法

对于分类问题的预测,通常使用的是投票法。
最简单的投票法是相对多数投票法,也就是我们常说的少数服从多数。如果多个最高票,则随机从中选择。
稍微复杂的投票法是绝对多数投票法,也就是我们常说的要票过半数。在相对多数投票法的基础上,不光要求获得最高票,还要求票过半数。否则会拒绝预测。
更加复杂的是加权投票法,和加权平均法一样,每个弱学习器的分类票数要乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别为最终类别。

2.3学习法

学习法的代表是stacking方法,当使用stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter是一种开源的跨平台移动应用开发框架,而Uniapp则是一种基于Vue.js的跨平台开发框架。两者都有着各自的特点和优势。 如果要将Flutter集成到Uniapp中,首先需要了解Uniapp的基本原理和使用方式。Uniapp使用Vue.js的语法和组件系统,可以开发同时运行在多个平台上的应用程序,包括iOS、Android、H5和小程序等。而Flutter则是使用Dart语言开发的,可以构建高性能、高质量的移动应用。 要将Flutter集成到Uniapp中,可以使用Uniapp的插件机制。Uniapp提供了插件系统,可以通过导入Flutter的插件来使用Flutter的功能和组件。通过这种方式,我们可以在Uniapp的项目中使用Flutter的特性,如高性能的渲染引擎、丰富的UI组件和强大的开发工具等。 另外,为了方便集成和使用,一些开源社区也提供了一些Flutter插件,可以直接在Uniapp中引用和使用。这些插件可以帮助我们快速集成Flutter,并在Uniapp项目中使用Flutter的功能。 将Flutter集成到Uniapp中可以给我们带来一些好处。首先,我们可以利用Flutter的高性能和丰富的功能来提升Uniapp应用的性能和体验。同时,我们还可以利用Flutter的跨平台特性,在多个平台上同时开发和运行应用程序,减少开发成本和时间。 总结起来,将Flutter集成到Uniapp中可以带来更好的应用性能和用户体验,同时也可以帮助我们在多个平台上快速开发和发布应用程序。当然,具体的集成方式还需要根据具体项目需求和技术要求进行选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值