集成学习

集成学习与个体学习器

  • 集成学习是机器学习中常用的一种方法,常用的集成学习方法有boosting,bagging以及随机森林,前者基学习器相互之间有着较大关联的一种集成学习方法,后两者是基学习器之间较为独立的集成学习方法。通常较好的集成学习算法的基学习器有着“好而不同”的特点,即在我们构建基学习的过程中希望我们得到的基学习器能够有较高的准确率并且能够保证不同的学习器之间有着不同的结果,但是这两项指标在某种程度上是矛盾的,所以我们在构建基学习的过程中并不能完全做到“好而不同”。
  • 个体学习器是指集成学习中被集成的单个学习器。常见的学习器有以下两种:1.C4.5决策树算法 2.BP神经网络。我们将用同种算法集成的学习器称为“同质”学习器,学习算法称为“基学习算法”,不同的算法集成的学习器称为“异质”学习器。个体学习器应该采用不同的数据集训练,以达到个体学习器之间相互独立的条件,但是在现实生活中数据与数据之间并不能保证数据集的完全独立,所以训练好的学习器只能保证大体独立,集成后的学习器的结果由测试数据集来度量学习器的好坏。

Boosting & bagging

  • Boosting算法是一族分类器之间有强关联的一种算法,由较弱的分类器逐渐训练成精准度较高的强分类器。在Boosting算法中,最有名的算法叫Adaboost算法。其基本思想是对于每个分类器设定一个相同的权重,之后再对每个分类器进行训练,得到分类器的误差,对于误差较大的分类器增加它的权重值,而对于误差较小的分类器减小他们的权重值,之后再重新训练直到最终的损失函数达到收敛。
1.为每一个分类器设定权重值Di = 1/N
2.设定训练次数m = 1,2,3,4......M
  a.使用具有Dm的训练集进行训练,得到基本分类器Gm(x)
  b.计算这次迭代的误差em=∑Wmi*I(Gm(xi)!=Yi)
  c.计算Gm(x)的系数(话语权)αm=1/2 * log((1-em)/em)
  d.更新权重值
3.构建基本分类器的线性组合
      G(x)=sign(∑αmGm(x))
  • Bagging算法是一种分类器之间没有较大关联的增强算法,分类器之间的结果可以近似看做独立的。它的主要思想是“投票”,训练T个分类器,T个分类器分别投票,选出最终的结果。算法流程如下图所示。
1.设定需要的分类器个数T
2.开始迭代t = 1,2,3,4....T
  a.对样本集进行有放回采样,共采取m个。
  b.对这m个样本进行训练得到分类器Gt(x)。
3.对这m个分类器进行线性组合,最终结果是
          G(x)= argmax ∑ Gt(x)

随机森林的思想与推广

  • 随机森林(Random forest)是一种基于决策树的分类算法。首先决策树用了CART决策树作为弱学习器。同时采用了bagging的思想,由于集成学习要求分类器之间有“好而不同”的特征,所以在决策树决定最佳分类节点的时候并不是在所有特征中选取一个最佳特征,而是在待选取的Nsub个特征中选取一个,这样就极大的增加了分类器的泛化程度,由于是集成学习也可以极大的增加结果精确性。最终的结果由T个分类器投票决定。
首先设定弱分类器的的个数T,以及训练数据集大小m
1.对于t=1,2,3,4......T
  a.对待训练数据进行t第t次有放回的抽样,抽取m个。
  b.对这m个数据按照上面所说的方式进行训练得到决策树分类器Gt(x)。
2.对这T个分类器进行线性叠加,如果是分类则返回其中最多的那个,如果是回归,则返回所以分类器的加权平均。
  • 随机森林的推广(暂时还没看)
    1.extra trees
    2.Totally Random Trees Embedding
    3.Isolation Forest

随机森林的优缺点

  • 优点
    1.训练可以并行的进行,不想boosting需要串行,能够极大的加快训练的速度。
    2.由于是选择特征进行分类,所以可以分类较高维的数据。
    3.训练后可以给出各个维度的重要程度。
    4.RF相对Adaboost实现相对简单。
    5.方差小,泛化能力强,对特征缺失不敏感。
  • 缺点
    1.在噪点较多的数据集上容易过拟合。
    2.取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。

sklearn中的参数

  • 在sklearn机器学习包中,随机森林在集成学习模块,具体在sklearn.ensemble.RandomForestClassifier()中,主要参数如下所示。
n_estimators:这个参数定义了随机森林的分类器个数。
criterion:这个参数定义了在构建每个分类器时,选取待选取节点特征的指标。
max_depth:这个参数定义了在构建决策树时,树最大的深度。
booststrap:这个参数表示在构建树时是否使用自举样本。
oob_score:这个参数表示是否用袋外数据来估计某个分类器的好坏。默认为否。

随机森林的使用场景

  • 严格来说,随机森林其实算是一种集成算法。它首先随机选取不同的特征(feature)和训练样本(training sample),生成大量的决策树,然后综合这些决策树的结果来进行最终的分类。
    随机森林在现实分析中被大量使用,它相对于决策树,在准确性上有了很大的提升,同时一定程度上改善了决策树容易被攻击的特点。
    适用情景:
    1.数据维度相对低(几十维),同时对准确性有较高要求时。
    2.因为不需要很多参数调整就可以达到不错的效果,基本上不知道用什么方法的时候都可以先试一下随机森林。

你可能感兴趣的:(集成学习)