Adaboost和GBDT

1. Adaboost

boost算法通过学习一系列的弱分类器,通过加权得到一个强分类器

Adaboost首选假设每个样本权值相通为1/N。然后学习第一个分类器,然后计算样本在该分类器下的误差率(误分类样本的加权和):


根据误差率得到一个系数,这个系数也是当前这个分类器的权重:


然后更新样本的权重:

Adaboost和GBDT_第1张图片

然后根据新的样本分布去训练一个新的分类器。

最后的分类器可表示为这些分类器的加权和:


2. GBDT

讲GBDT之前先说提升树。

提升方法实际采用的是加法模型(即基函数的线性组合)与前向分步算法,一决策树为基函数的提升方法称为提升树。

针对不同问题的提升树学习算法,主要区别是损失函数不同,包括用平凡误差损失函数的回归问题,用指数损失函数的分类问题,以及一般损失函数的一般决策问题。

分类问题就是Adaboost中将分类器使用决策树即可。

针对分类问题的提升树:

定义树:J表示树的复杂度,即叶子节点的数目,R表示这棵树将输入空间X划分为J个互不相交的区域。


回归提升树算法采用前向分步算法:

Adaboost和GBDT_第2张图片

每一步需要求解得到第m棵树的参数。

当采用平方误差所为损失函数时:

Adaboost和GBDT_第3张图片

是当前模型拟合数据的残差。所以,对回归问题的提升树算法来说,只需简单的拟合当前模型的残差。这样,算法是比较简单的。

GBDT就是为了解决一般决策问题,对于一般损失函数来说,优化不像平方误差和指数损失那么简单。因此使用损失函数对当前模型的负梯度来作为回归问题中残差的近似值,然后去拟合一个回归树,这就是GBDT.

Adaboost和GBDT_第4张图片

Adaboost和GBDT_第5张图片

3. Adaboost和GBDT的区别和联系

它们都属于boosting提升方法,AdaBoost 是通过提升错分数据点的权重来定位模型的不足,而Gradient Boosting是通过计算负梯度来定位模型的不足。

参考:李航《统计学习方法》

你可能感兴趣的:(机器学习)