梯度提升树算法原理(梯度提升树优缺点)

梯度提升树算法原理(梯度提升树优缺点)梯度提升决策树 GBDT 作为集成学习中的佼佼者 以其在分类和回归任务中的卓越性能 赢得了广大数据科学家的青睐 本文将带您深入探索 GBDT 的神秘面纱 并展示如何使用 sklearn 库高效实现 GBDT 介绍 GBDT 之前 让我们先介绍下提升树 Boosting Tree 提升树是以 分类树 或 回归树 为基本分类器的提升方法 提升树被认为是统计学习中性能最好的方法之一

大家好,我是讯享网,很高兴认识大家。



梯度提升决策树(GBDT)作为集成学习中的佼佼者,以其在分类和回归任务中的卓越性能,赢得了广大数据科学家的青睐。本文将带您深入探索GBDT的神秘面纱,并展示如何使用sklearn库高效实现GBDT。

介绍GBDT之前,让我们先介绍下提升树(Boosting Tree)

提升树是以 分类树 或 回归树 为基本分类器的提升方法。提升树被认为是统计学习中性能最好的方法之一。

提升方法实际采用加法模型( 即基函数的线性组合)与前向分步算法。以决策树为基函数的提升方法称为提升树( boosting tree)。对分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树。


讯享网

提升树利用加法模型与前向分歩算法实现学习的优化过程。当损失函数是平方损失和指数损失函数时, 每一 步 优化是很简单的。但对 一般损失函数而言, 往往每一步优化并不那么容易。针对这一问题, Freidman 提出了 梯度提升( gradient boosting) 算法。它将问题转变成在损失函数梯度上寻找下降最快的方向,近似地求解。

GBDT 与提升树类似,模型依旧为加法模型、学习算法为前向分步算法。不同的是,GBDT 没有规定损失函数的类型,设损失函数为

Gradient Boosting 是 Boosting 中的一大类算法,它的思想借鉴于梯度下降法,其基本原理是「根据当前模型损失函数的负梯度信息来训练新加入的弱分类器」,然后将训练好的弱分类器以累加的形式结合到现有模型中。采用决策树作为弱分类器的 Gradient Boosting 算法被称为 GBDT

让我们来看看如何使用scikit-learn库来实现GBDT算法。

梯度树提升Gradient Tree Boosting或梯度提升树(Gradient Boosted Decision Trees,GBDT)是Booting对任意可微损失函数的推广。GBDT是一种准确有效的现成程序,可用于各种领域的回归和分类问题,包括Web搜索、排名和生态领域。

集成模块 sklearn.ensemble 通过梯度提升树提供了分类和回归的方法。

注意:在LightGBM (参看 [LightGBM])的启发下,Scikit-learn 0.21引入了两种新的梯度提升树的实验实现,即 HistGradientBoostingClassifier和 HistGradientBoostingRegressor。当样本数大于数万个样本时,这些基于直方图的估计可以比GradientBoostingClassifierGradientBoostingRegressor 快几个数量级。他们还内置了对缺失值的支持,从而避免了计算的需要。这些估计器将在下面基于直方图的梯度提升Histogram-Based Gradient Boosting中更详细地描述。

下面的指南重点介绍 GradientBoostingClassifierGradientBoostingRegressor,它们可能是小样本大小的首选,因为在这个设置中,装箱可能会导致分割点过于接近。

  1. from sklearn.ensemble import GradientBoostingClassifier
    from sklearn.datasets import load_iris
    from sklearn.model_selection import train_test_split

    讯享网
    导入必要的库:
  2. 讯享网# 加载鸢尾花数据集
    iris = load_iris()
    X, y = iris.data, iris.target
    加载数据:
  3. # 划分训练集和测试集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
    划分数据集:
  4. 讯享网# 创建GBDT分类器实例
    gbdt = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, max_depth=3, random_state=42)

    调参是提升GBDT性能的关键步骤。以下是一些常用的调参策略:

    创建GBDT分类器:
    • n_estimators:控制弱学习器的数量,需要权衡模型复杂度和过拟合风险。
    • learning_rate:学习率较小意味着需要更多的弱学习器来达到相同的拟合效果。
    • max_depth:控制决策树的深度,防止模型过于复杂。
    • subsample:样本抽样比例,小于1可以减少过拟合。
    • max_features:划分时考虑的最大特征数,可以是整数或百分比。
  5. # 训练模型
    gbdt.fit(X_train, y_train)
    训练模型:
  6. 讯享网# 预测
    y_pred = gbdt.predict(X_test)

    # 计算准确率
    from sklearn.metrics import accuracy_score
    accuracy = accuracy_score(y_test, y_pred)
    print(f”Accuracy: {accuracy:.2f})
    评估模型:

小讯
上一篇 2025-05-07 22:08
下一篇 2025-05-14 22:09

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/202226.html