提升(boosting)方法是一种常用的机器学习方法,应用十分广泛。提升方法的基本思想是:对于一个复杂的学习任务,我们首先构造多个简单的学习模型,然后再把这些简单模型组合成一个高效的学习模型。实际上,就是“三个臭皮匠顶个诸葛亮”的道理。
1. 基本概念
1.1 “强可学习”和“弱可学习”
“强可学习”是指:在概率近似正确(probably approximately correct, PCA)学习的框架中,一个概念(一个类),如果存在一个多项式的学习算法能够学习它,并且正确率很高。而如果在PAC学习框架中,如果存在一个多项式的学习算法能够学习这个概念,但是学习的正确率仅比随机猜想略好,那么称之为“弱可学习”。
事实证明,在PCA学习的框架下,一个概念是强可学习的充分必要条件是该概念是弱可学习的。因此,我们对于一个复杂的学习问题,可以先构造简单的“弱学习算法”,然后再想办法把“弱学习算法”提升为“强学习算法”。
1.2 提升算法的两个关键问题
以分类问题为例,给定一个训练集,发现较为粗糙的分类规则(弱分类器)比发现精确的分类规则(强分类器)要容易很多。提升方法就是从弱学习方法出发,反复学习可以得到一系列的弱分类器,然后把这些弱分类器组合起来,构成一个强分类器。因此,提升方法需要解决两个关键问题是:如何学习一系列的弱分类器和如何把这些弱分类器组合成一个强分类器。
对于问题一,大多数提升方法都是通过改变训练数据的概率分布(训练数据的权值分布),对于不同的训练数据分布执行弱学习算法来学习一系列的弱分类器。
对于问题二,不同的提升方法采取不同的方式,如平均法、投票法、学习法等。其中AdaBoost采取加权多数表决的方法,即加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用。
2. 经典Boosting方法
Boosting系列算法最经典的包括AdaBoost算法和GBDT算法。
2.1 AdaBoost算法
2.2 GBDT算法