06 集成学习 - Boosting - GBDT算法原理、总结

简介:

05 集成学习 - Boosting - GBDT初探

十四、GBDT的构成

● GBDT由三部分构成:DT(Regression Decistion Tree-回归决策树)、GB(Gradient Boosting-梯度提升)、Shrinkage(衰减)
1、先构建__回归决策树__,然后用到提升的思想:ft(x) = ∑ ht(x);
2、__梯度提升:__ 下一个模在拟合上一个模型的残差,其实就等价于在拟合上一个模型的梯度。
3、__衰减:__ ft(x) = step × ∑ ht(x); 衰减指公式里的step值,上一章最后有详述。

● 由多棵决策树组成,所有树的结果累加起来就是最终结果。(上一章的例子中可以直观感受到这一点。)

● 迭代决策树和随机森林的区别:
1、随机森林使用抽取不同的样本,构建不同的子树。也就是说第m棵树的构建和前m-1棵树的结果是没有关系的。(所以人家可以同时构建所有的树)

2、迭代决策树在构建子树的时候,使用之前子树构建结果后,形成的残差作为输入数据,再构建下一个子树;然后最终预测的时候按照子树构建的顺序进行预测,并将预测结果相加。(而你要看前面人的脸色行事)

迭代决策树

十五、GBDT算法原理

1、 给定输入向量X和输出变量Y组成的若干训练样本(X1,Y1),(X2,Y2)...(Xn,Yn),目标是找到近似函数F(X),使得损失函数L(Y,F(X))的损失值最小。
其实机器学习这个领域,本质上都想达到这个目标。正如我在第一章里说的,我们尽可能想要找到一个模型,符合造物主公式。无论哪种机器学习的模型,我们都在追求损失函数最小。

2、 L损失函数一般采用最小二乘损失函数或者绝对值损失函数。
F(X)是常数。(参考第7步)
● 看左边最小二乘的公式,关于F(X)求偏导,得到__F(X)-y__ 。F(X)是真实值y的均值的时候,该损失函数最小。
● 看右边的绝对值损失函数,当F(X)是中位数的时候损失最小。

最小二乘(左) 绝对值损失函数(右)

3、 最优解为:
比较最小二乘损失函数和绝对值损失函数,哪个更小就选哪个。

最优解

4、 假定F(X)是一组最优基函数 fi(X) 的加权和(即衰减的思想)

理解和的概念

原本14,16,24,26,一下子变成-1,1,-1,1,变化幅度太大了,所以加上缩放系数。

理解衰减的概念

5、用贪心算法的思想扩展得到 __Fm(X)__,求解最优 f 。

贪心算法(相邻两步的解最优):在当前的情况下,求解下一步的最优解。当算法包含若干步的时候,贪心算法只能保证下一步的算法是最优解,而不能保证在整个求解的过程中获得全局最优解。

使用贪心算法考虑GBDT问题:每求一步基模型,都是当前步骤的最优情况。如下图所示:第m步的强模型= 第m-1的强模型 + 使得损失函数达到最小时候的对应的基模型: fm(Xi)

但这个基模型 __fm(Xi)__不能保证在未来的全局中它是最优的模型。

6、如果以贪心算法在每次选择最优基函数 f 时仍然困难,使用梯度下降法近似计算。

7、给定常数函数 F0(X) 第2步中提到的F(X)
即得损失函数L最小的时候,对应的yi和c,构成了常数函数 __F0(X)__。

这个常数不是随便给的,比如当你选择使用最小二乘构建损失函数的时候,如果下图中的样本不是一个30岁,而是(14,16,24,26),那么我们预测的F(X)常数应该是均值,即F(X) = (14+16+24+26)/4 = 20。此时损失函数= (14-20)^2 + (16-20)^2 + (24-20)^2 + (26-20)^2 = 104。在相同标准下,如果这个损失函数值最小,那么用 F(X)=20作为常数作为这一步的基模型构建最优。此时yi和c分别为 (14,6) (16,4) (24,4) (26,6),下一步要预测的真实值(残差) = (6,4,4,6)

理解和的概念

8、根据梯度下降计算学习率
在第7步我们得到了F(X)的值,作为这一步的输入。
这里将损失函数对F(X)进行求导,在第2步中我们可以看到,当对最小二乘进行求导后,得到 |y-F(X)| 。这是针对一个样本求导,如果是所有的样本求导并求和,得到的是 ∑|y-F(X)| ,这就是最小二乘损失函数的导函数。

最小二乘(左) 绝对值损失函数(右)

这里的__αim(第i个样本集的第m个模型对应的学习率)__ 就是下一步模型中的需要预测的真实值y,学习率αim可以近似看成是残差。(伪残差)

9、使用数据(xiim) (i=1……n )计算拟合残差找到一个CART回归树,得到第m棵树。
第m棵树是什么样的?

作为一个样本X,将X放入模型之后,最终会落到某个叶子节点中。这个叶子节点中对应了一个目标值。

左边 - 最优的单个叶子节点,决策树每次找到的都是一个常量。右边 - 第m棵树,公式含义:首先判断x是否属于叶子,属于返回1,不属于返回0。对于所有的leaf叶子,x最终只属于一个叶子。

左边 - 第m个基模型中第j个叶子节点的取值,右边 - 第m棵树基模型的表达方式

10、更新模型

十六、GBDT回归算法和分类算法的区别

1、两者唯一的区别就是选择不同的损失函数。
2、回归算法选择的损失函数一般是均方差(最小二乘)或者绝对值误差;而在分类算法中一般的损失函数选择对数函数来表示。

十七、GBDT scikit-learn相关参数

GBDT的代码和AdaBoosting类似,这里简单对其相关的参数进行介绍:
工作中对常用的参数如何选择会问得比较多。
比较关键的是n_estimators 和 learning_rate的设置。
当上面两个参数怎么调都调不好模型的时候,尝试使用subsample参数。

十八、GBDT总结

GBDT的优点如下:
1、可以处理连续值和离散值;
2、在相对少的调参情况下,模型的预测效果也会不错;
3、模型的鲁棒性比较强。

GBDT的缺点如下:
由于弱学习器之间存在关联关系,难以并行训练模型。

十九、Bagging、Boosting的区别

1、样本选择:Bagging算法是有放回的随机采样;Boosting算法是每一轮训练集长度不变,是训练集中的每个样例在分类器中的权重发生变化(Adaboost),而权重根据上一轮的分类结果进行调整;对于GBDT来说,目标值Y实际上发生了变化,基于梯度来确定新的目标Y。

2、样例权重:Bagging使用随机抽样,样例的权重相等;Boosting(Adaboost)根据错误率不断的调整样例的权重值,错误率越大则权重越大;

3、预测函数:Bagging所有预测模型的权重相等;Boosting(Adaboost)算法对于误差小的分类器具有更大的权重。

4、并行计算:Bagging算法可以并行生成各个基模型;Boosting理论上只能顺序生产,因为后一个模型需要前一个模型的结果;

5、Bagging是减少模型的variance(方差);Boosting是减少模型的Bias(偏度)。

6、Bagging里每个分类模型都是强分类器,因为降低的是方差,方差过高需要降低是过拟合;Boosting里每个分类模型都是弱分类器,因为降低的是偏度,偏度过高是欠拟合。

7、方差和偏差的问题:error = Bias + Variance

Bagging对样本重采样,对每一轮的采样数据集都训练一个模型,最后取平均。由于样本集的相似性和使用的同种模型,因此各个模型的具有相似的bias和variance;

相关文章
|
2月前
|
数据采集 机器学习/深度学习 算法
|
2天前
|
搜索推荐 Shell
解析排序算法:十大排序方法的工作原理与性能比较
解析排序算法:十大排序方法的工作原理与性能比较
14 9
|
1月前
|
机器学习/深度学习 算法 Python
群智能算法:深入解读人工水母算法:原理、实现与应用
近年来,受自然界生物行为启发的优化算法备受关注。人工水母算法(AJSA)模拟水母在海洋中寻找食物的行为,是一种新颖的优化技术。本文详细解读其原理及实现步骤,并提供代码示例,帮助读者理解这一算法。在多模态、非线性优化问题中,AJSA表现出色,具有广泛应用前景。
|
2月前
|
前端开发 算法 JavaScript
React原理之Diff算法
【8月更文挑战第24天】
|
2月前
|
机器学习/深度学习 算法 搜索推荐
【机器学习】机器学习的基本概念、算法的工作原理、实际应用案例
机器学习是人工智能的一个分支,它使计算机能够在没有明确编程的情况下从数据中学习并改进其性能。机器学习的目标是让计算机自动学习模式和规律,从而能够对未知数据做出预测或决策。
60 2
|
2月前
|
机器学习/深度学习 算法 数据可视化
决策树算法介绍:原理与案例实现
决策树算法介绍:原理与案例实现
|
2月前
|
存储 负载均衡 监控
自适应负载均衡算法原理和实现
自适应负载均衡算法原理和实现
|
2月前
|
算法 安全 网络安全
Diffie-Hellman (DH) 算法的工作原理
【8月更文挑战第23天】
133 0
|
2月前
|
数据采集 搜索推荐 算法
【高手进阶】Java排序算法:从零到精通——揭秘冒泡、快速、归并排序的原理与实战应用,让你的代码效率飙升!
【8月更文挑战第21天】Java排序算法是编程基础的重要部分,在算法设计与分析及实际开发中不可或缺。本文介绍内部排序算法,包括简单的冒泡排序及其逐步优化至高效的快速排序和稳定的归并排序,并提供了每种算法的Java实现示例。此外,还探讨了排序算法在电子商务、搜索引擎和数据分析等领域的广泛应用,帮助读者更好地理解和应用这些算法。
27 0
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能算法原理
人工智能(AI)属计算机科学,聚焦于模拟人类智慧的技术与系统的研发。本文概览常见AI算法原理:机器学习含监督(如决策树、支持向量机)、无监督(如聚类、主成分分析)及强化学习算法;深度学习涉及卷积神经网络、循环神经网络和生成对抗网络;自然语言处理涵盖词袋模型、循环神经网络语言模型及命名实体识别等。这些算法支撑着AI技术的广泛应用与发展。
82 0