【机器学习基础】决策树及其ensemble方法(RF, LGBM, Xgboost, GBDT, 梯度提升boosting)

本文深入解析决策树及集成学习方法,包括Bagging、Boosting等技术,阐述其工作原理,如Adaboost与GradientBoosting的区别,并探讨如何通过这些方法提升模型的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【机器学习基础】决策树及其ensemble方法(RF, LGBM, Xgboost, GBDT, 梯度提升boosting)

1. 关系

在这里插入图片描述

2. Boostrap

Boostrap是一种通过有放回的抽样方式生成更多样本集,从而达到扩大样本集,来更好研究样本的目的。
在这里插入图片描述

3. Bagging

3.1 Baggin定义

Bagging通过boostrap的方式生成更多样本集,在每个样本集的样本上使用学习器进行学习,最终投票得出最终结果
在这里插入图片描述

3.2 随机森林(RandomForest)

RF就是在Bagging上使用决策树,只不过新加入一个特色,即用boostrap取样本时不仅随机抽样,还限定了特征的数量,丰富了森林里的数目种类。

4. Boosting

4.1 Boosting定义

Boosting(Adaboost)是一种用来提高弱分类算法准确度的方法,在这个系列里每个学习器都是针对对上一个学习器不足的补充(!!!重点!!!),然后以一定的方式将他们组合成一个预测函数。Boosting是一种提高任意给定学习算法准确度的方法。
与RF不同的是:RF是随机生成新树的,Boosting每一个新的学习器都是针对性提升上一棵树不足的。RF每棵树对最终结果影响相同,Boosting根据使用方法不同,投票比例也不同
投票比例和新树的选择详细看公式推导。
在这里插入图片描述

4.2 Adaboost

Adaboost的主要思想是集合多个模型形成加法模型进行预测,在添加一个新模型的时候需要考虑两个问题:如果选择最优的模型?新加入的模型的权重设置?
设定总模型为 G ( x ) G(x) G(x),第m轮新加入的模型为 G m ( x ) G_m(x) Gm(x)

  1. 如何选择最优的模型?
    使用上一轮的训练样本的权重,比较多个基学习器的误差,选择误差较小的模型作为加入的最优的模型。
    其中,这一轮的训练样本的权重 w m , i w_{m,i} wm,i是根据 w m − 1 , i w_{m-1,}i wm1,i y i ∗ G m ( x i ) y_i * G_m(x_i) yiGm(xi)计算决定的。第一轮训练样本的初始权重是 1 N \frac{1}{N} N1
  2. 新加入的模型的权重设置?
    计算在 G m ( x ) G_m(x) Gm(x)基础上的残差 e m e_m em(这里是与Gradient Boosting的区别),则新加入的模型权重是
    α m = 1 2 ∗ l o g ( 1 − e m e m ) \alpha_m = \frac{1}{2} * log(\frac{1 - e_m}{e_m}) αm=21log(em1em)
    解决上述两个问题之后,由于Boosting的本质是加法模型,所以最后得到的总模型是
    G ( x ) = s i g n ( ∑ m = 1 M α m ∗ G m ( x ) ) G(x) = sign(\sum^M_{m=1} \alpha_m * G_m(x)) G(x)=sign(m=1MαmGm(x))

4.3 Gradient Boosting

不同于Adaboost,gradient boosting每一次的计算都是为了减少上一次学习器的残差,从而在残差减少梯度方向上建立新的模型。gradient boosting在选择最优模型的时候,不是直接迭代计算,而是计算残差函数,然后对残差进行拟合出一个回归树(如果基模型是树模型),得到需要新加入的模型。

### 经典机器学习中的梯度提升树 #### 算法原理 梯度提升决策树(Gradient Boosting Decision Tree, GBDT)是一种基于集成学习的思想来增强弱分类器的方法GBDT 的核心在于逐步构建多个决策树,每棵树都在前一棵的基础上进行改进,从而形成一个强预测模型[^2]。 在每次迭代过程中,新加入的树会专注于减少之前所有树组合起来所犯错误的方向上做修正。这种机制使得整个模型能够持续逼近真实目标函数,并最终获得更好的泛化能力。为了实现这一点,GBDT 使用负梯度作为残差近似值来进行拟合,这类似于梯度下降算法中利用导数指导参数更新的过程[^1]。 #### 实现方法 以下是 Python 中使用 `scikit-learn` 库实现 GBDT 的简单例子: ```python from sklearn.datasets import make_regression from sklearn.model_selection import train_test_split from sklearn.ensemble import GradientBoostingRegressor # 创建数据集 X, y = make_regression(n_samples=1000, n_features=20, noise=0.1) # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 初始化并配置 GBDT 模型 gbdt_model = GradientBoostingRegressor( n_estimators=100, learning_rate=0.1, max_depth=3, random_state=42 ) # 训练模型 gbdt_model.fit(X_train, y_train) # 预测评估 predictions = gbdt_model.predict(X_test) score = gbdt_model.score(X_test, y_test) print(f"Model R^2 Score on Test Set: {score}") ``` 此代码片段展示了如何创建、训练以及评价一个基本的 GBDT 回归模型。其中设置了三个重要超参数:`n_estimators`(迭代次数),`learning_rate`(步长大小), 和 `max_depth`(单棵决策树的最大深度)。 #### 应用场景 GBDT 广泛应用于多种实际问题解决当中,特别是在那些特征空间较大且存在较多非线性关系的情况下表现尤为出色。典型应用场景包括但不限于以下几个方面: - **金融风险评估**: 对贷款申请者信用状况建模分析; - **广告点击率预估(CTR)**: 基于用户行为历史预测特定广告被点击的可能性; - **搜索引擎排名优化(SERP)**: 提升搜索结果页面上的条目顺序以匹配用户的查询意图;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值