2.2 随机森林
2.2.1 集成学习
1 概述
集成学习本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。也就是我们常说的“博采众长”。集成学习可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等,可以说所有的机器学习领域都可以看到集成学习的身影。本文就对集成学习方法进行简单的总结和概述。
集成学习有两个主要的问题需要解决,第一是如何得到若干个个体学习器,第二是如何选择一种结合策略,将这些个体学习器集合成一个强学习器。
2 集成学习之结合策略
- 个体学习器已知的情况下
首先,我们介绍blending,blending就是将所有已知的个体学习器 g(t) 结合起来,发挥集体的智慧得到 强学习器G 。值得注意的一点是这里的 g(t) 都是已知的。blending通常有三种形式:
uniform:简单地计算所有g(t)的平均值
non-uniform:所有g(t)的线性组合
conditional:所有g(t)的非线性组合
其中,uniform采用投票、求平均的形式更注重稳定性,而non-uniform和conditional追求的更复杂准确的模型,但存在过拟合的危险。
- 个体学习器未知的情况下
刚才讲的blending是建立在所有 g(t) 已知的情况。那如果所有个体学习器 g(t) 未知的情况,对应的就是学习法,做法就是一边学 g(t) ,一边将它们结合起来。学习法通常也有三种形式(与blending的三种形式一一对应):
Bagging:通过bootstrap方法,得到不同g(t),计算所有g(t)的平均值
AdaBoost:通过bootstrap方法,得到不同g(t),所有g(t)的线性组合
Decision Tree:通过数据分割的形式得到不同的g(t),所有g(t)的非线性组合
除了这些基本的集成模型之外,我们还可以把某些模型结合起来得到新的集成模型。
- Bagging与Decision Tree结合起来组成了Random Forest。Random Forest中的Decision Tree是比较“茂盛”的树,即每个树的 g(t) 都比较强一些。
- AdaBoost与Decision Tree结合组成了AdaBoost-DTree。AdaBoost-DTree的Decision Tree是比较“矮弱”的树,即每个树的gt都比较弱一些,由AdaBoost将所有弱弱的树结合起来,让综合能力更强。
- GradientBoost与Decision Tree结合就构成了经典的算法GBDT。