集成学习本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。也就是我们常说的“博采众长”。集成学习可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等,可以说所有的机器学习领域都可以看到集成学习的身影。本文就对集成学习方法进行简单的总结和概述。
集成学习有两个主要的问题需要解决,第一是如何得到若干个个体学习器,第二是如何选择一种结合策略,将这些个体学习器集合成一个强学习器。
集成学习之结合策略
个体学习器已知的情况下
首先,我们介绍blending,blending就是将所有已知的个体学习器
结合起来,发挥集体的智慧得到 强学习器
。值得注意的一点是这里的
都是已知的。blending通常有三种形式:
- uniform:简单地计算所有
的平均值
- non-uniform:所有
的线性组合
- conditional:所有
的非线性组合
其中,uniform采用投票、求平均的形式更注重稳定性,而non-uniform和conditional追求的更复杂准确的模型,但存在过拟合的危险。
个体学习器未知的情况下
刚才讲的blending是建立在所有
已知的情况。那如果所有个体学习器
未知的情况,对应的就是学习法,做法就是一边学
,一边将它们结合起来。学习法通常也有三种形式(与blending的三种形式一一对应):
- Bagging:通过bootstrap方法,得到不同
,计算所有
的平均值
- AdaBoost:通过bootstrap方法,得到不同
,所有
的线性组合
- Decision Tree:通过数据分割的形式得到不同的
,所有
的非线性组合
然后,后续文章我们将AdaBoost延伸到另一个模型GradientBoost。对于regression问题,GradientBoost通过residual fitting的方式得到最佳的方向函数
和步进长度
。
除了这些基本的集成模型之外,我们还可以把某些模型结合起来得到新的集成模型。
例如:
- Bagging与Decision Tree结合起来组成了Random Forest。Random Forest中的Decision Tree是比较“茂盛”的树,即每个树的
都比较强一些。
- AdaBoost与Decision Tree结合组成了AdaBoost-DTree。AdaBoost-DTree的Decision Tree是比较“矮弱”的树,即每个树的gt都比较弱一些,由AdaBoost将所有弱弱的树结合起来,让综合能力更强。
- GradientBoost与Decision Tree结合就构成了经典的算法GBDT。
集成的核心是将所有的
结合起来,融合到一起,即集体智慧的思想。这种做法之所以能得到很好的模型
,是因为集成具有两个方面的优点:cure underfitting和cure overfitting。
第一,集成 models 有助于防止欠拟合(underfitting)。它把所有比较弱的
结合起来,利用集体智慧来获得比较好的模型
。集成就相当于是特征转换,来获得复杂的学习模型。
第二,集成 models 有助于防止过拟合(overfitting)。它把所有
进行组合,容易得到一个比较中庸的模型,类似于SVM的最大间隔一样的效果,从而避免一些极端情况包括过拟合的发生。从这个角度来说,集成起到了正则化的效果。
由于集成具有这两个方面的优点,所以在实际应用中集成 models 都有很好的表现。
集成学习之Bootstrap
自助法(bootstrap)是统计学的一个工具,思想就是从已有数据集
中模拟出其他类似的样本
。
bootstrap的做法是,假设有
个样本数据,先从中选出一个样本,再放回去,再选择一个样本,再放回去,共重复
次。这样我们就得到了一个包含
个样本的数据集,显然,这个新的
中有一部分样本会在
中多次出现,而另一部分样本不出现,
与
类似但又不完全相同。值得一提的是,抽取-放回的操作不一定非要是
,次数可以任意设定。例如原始样本有10000个,我们可以抽取-放回3000次,得到包含3000个样本的
也是完全可以的。其中利用bootstrap进行集成的操作就被称为bagging。
自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。因此,在初始数据量足够时,留出法和交叉验证法更常用。
Betten:模型选择之交叉验证zhuanlan.zhihu.com