bagging和boosting的区别
定义
Bagging:
算法构建多个分类器,每个分类器都随机从原样本中做有放回的抽样,利用这些采样后的样本训练该分类器,然后将这些分类器组合起来构成一个更强效果更好的组合分类器,结果一般使用多数投票效果就很好了。其代表算法为随机森林。
Boosting:
算法通过迭代构建一系列的分类器,每次分类都将上一次分错的数据权重提高一点再进行下一个分类器分类,这样最终得到的分类器在测试数据与训练数据上都可以得到比较好的成绩。其代表算法为AdaBoost、GBDT、XGBoost。
Bagging和Boosting的区别:
区别
1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的,子集的数量等于样本的数量。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大.
3)预测函数:
Bagging:所有预测函数的权重相等.
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重.
4)并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果.
5)偏差和方差:
Bagging:方差较小,偏差大,通过加深树的深度来弥补
Boosting:偏差较小,方差大,降低树模型复杂度弥补
偏差(bias)和方差(variance):
调参的目标:偏差和方差的协调<br />(Bagging与Boosting的差别)为什么随机森林的树的深度往往大于GBDT的树的深度?这里可能牵扯到两个概念——偏差、方差,
- 偏差指的是算法的期望预测与真实值之间的偏差程度,反映了模型本身的拟合能力;boosting方法通过逐步聚焦分类器分错的样本,减少集成分类器的偏差
- 方差度量了同等大小的训练集的变动导致学习性能的变化,刻画了数据扰动所导致的影响。Bagging采用分而治之的策略,通过对样本多次采样,分别训练多个模型,减少方差
当模型越复杂时,拟合能力就越好,模型的偏差就越好。但此时如果换一组数据可能模型的变化就会很大,即模型方差变大,所以复杂的模型容易造成过拟合; 同理:当模型简单的时候,模型方差很小,但由于模型过于简单,导致偏差会很大。
对于Bagging算法来说,由于我们并行的训练很多的分类器的目的就是降低这个方差,因为采用了相互独立的基分类器的数量多了,h的值就会靠近。所以对于每个基分类器的目的就是如何降低这个偏差,所以我们会采用深度很深并且不剪枝的决策树。
而对于Boosting来说,每一步我们都会在上一轮的基础上更加的拟合原数据,所以可以保证偏差,所以对于每个基分类器来说,问题就是如何选择方差更小的分类器,即更简单的弱分类器,所以我们选择深度很浅的决策树。
为什么决策树是常用的基分类器
- 决策树的表达能力和泛化能力,可以通过调节树的层数来做折中
- 数据样本扰动对决策树影响较大,因此不同子样本集生成的基分类器随机性就较大。这样的不稳定学习器更适合作为基分类器。
- 插一句,神经网络也适合做基分类器
RF 的采样方式
定义:
随机森林算法——RF =bagging + CART,随机森林里的每一棵决策树的建立,不仅对样本进行有放回(bootstrap)的随机抽样,还对特征进行随机抽样(特征的随机抽样是指,在建每棵树进行每个节点分裂的时候,都随机抽一部分特征,然后在这随机抽的部分特征里面,用决策树的特征选择的方法(比如信息增益,或信息增益率)来决定使用最优的特征来作为分裂节点的;);(即“行”抽样和“列”抽样是否回放,是可以设定的)。形成随机森林,通过投票表决结果决定数据属于那一类。
随机森林的算法核心思想有二: 采样 和 完全分裂。 采样又分为行采样和列采样,这里的行与列对应的就是样本与特征。 完全分裂指的是决策树每一次分裂扩展节点时,能分裂必须分裂,分裂依据可以是信息增益或者增益率(这是为了增强单棵树的能力)
- 行采样保证了每棵决策树使用的训练集各不相同,这在一定程度上抑制了over-fitting问题。
- 对于列采样,每一棵决策树都从M个特征中随机挑选m个特征作为节点分裂特征来计算,一般情况下m也取M的平方根大小。列采样具体又分
两种方式,一种是全局列采样,即同一棵树的建树过程均采用同一批采样特征;另一种是局部列采样,即每一次节点分裂的时候均单独随机挑选m个特征进行扩展。列采样进一步保证了随机森林不会出现over-fitting问题。
