首页 > 其他分享 >机器学习-集成学习GBDT

机器学习-集成学习GBDT

时间:2023-02-17 09:55:05浏览次数:33  
标签:集成 预测 特征 模型 学习 算法 GBDT 决策树

目录

前言

​ GBDT(Gradient Boosting Decision Trees)是一种基于决策树的集成学习算法,它通过逐步地训练多个决策树模型来提高预测性能。具体来说,GBDT采用加法模型(additive model)的思想,每次训练一个新的决策树来拟合残差(预测误差),然后将所有决策树的预测结果相加作为最终的预测值。

一、原理

​ 具体来说,GBDT算法采用加法模型的思想,即将每个模型的预测结果相加来得到最终的预测结果。在每一轮迭代中,GBDT算法会根据当前模型的预测结果计算出残差,然后使用残差作为目标变量重新训练一个决策树。多轮迭代之后,所有的决策树的预测结果相加就可以得到最终的预测结果。

具体实现流程:

  1. 初始化模型:将所有样本的真实值作为初始预测值。

  2. 对于每一轮迭代:

    a. 计算当前模型的预测值。

    b. 计算当前模型的残差。

    c. 根据残差训练一个新的决策树模型。

    d. 计算新模型的预测结果,并将其与之前所有模型的预测结果相加得到最终的预测结果。

  3. 返回最终的预测结果。

二、优缺点

  • 优点:
  1. 高准确性:GBDT能够得到非常高的准确性,在许多机器学习问题中表现良好。

  2. 鲁棒性:GBDT对于输入数据的异常值和噪声具有很强的鲁棒

  3. 处理缺失值和高维特征:GBDT算法能够很好地处理缺失值和高维特征,这是由于决策树可以根据特征的取值将样本分成不同的子集,从而避免了对缺失值的处理。

  4. 解释性:GBDT算法生成的决策树具有很好的可解释性,可以帮助我们理解模型的决策过程。

  • 缺点:
  1. 计算时间长:GBDT需要训练多个决策树模型,并且每一轮迭代都需要计算梯度和Hessian矩阵,因此训练时间较长。
  2. 容易过拟合:GBDT容易过拟合,特别是在训练集的噪声较大或者数据量较小的情况下,需要进行一些正则化处理。

三、实际应用

  1. 排序:学习排序模型,比如搜索引擎中的网页排序、广告推荐系统中的广告排序等。
  2. 回归:回归问题,比如房价预测、股票价格预测等。
  3. 分类:分类问题,比如垃圾邮件分类、用户行为分析等。
  4. 推荐系统:用于推荐系统,比如基于用户历史行为数据和商品属性数据来预测用户对商品的偏好程度。

四、常见的GBDT 变体

  1. XGBoost:eXtreme Gradient Boosting(XGBoost)是GBDT算法的一种扩展,它在原始GBDT算法的基础上添加了正则化项和自定义损失函数,提高了模型的泛化性能和精度,特别适用于处理大规模数据集和高维特征。
  2. LightGBM:LightGBM是一种基于决策树的梯度提升框架,它采用基于直方图的决策树算法和多线程并行计算,具有更快的训练速度和更低的内存占用,特别适用于大规模数据集。
  3. CatBoost:CatBoost是一种基于决策树的梯度提升框架,它采用对称二叉树结构和分类变量特征处理技术,能够自适应地学习特征交互关系,提高模型的准确性和泛化性能,特别适用于处理具有大量分类特征的数据集

五、代码

使用 python 和 Scikit-learn库

from sklearn.ensemble import GradientBoostingClassifier

# 创建GBDT分类器模型
gbdt = GradientBoostingClassifier(loss='deviance', learning_rate=0.1, n_estimators=100, max_depth=3)

# 训练模型
gbdt.fit(X_train, y_train)

# 使用模型进行预测
y_pred = gbdt.predict(X_test)

# 评估模型性能
accuracy = gbdt.score(X_test, y_test)

注意:在实际应用中,我们需要对数据进行预处理、特征工程等步骤,并使用交叉验证等技术来评估模型性能,我们也可以使用其他GBDT库或自己实现GBDT算法,以满足不同的应用需求。

六、总结

GBDT算法虽然能够自适应地学习特征交互关系,但它仍然需要依赖人工选择或构造特征。在实际应用中,我们需要结合特征工程技术来提取更有用的特征,从而进一步提高模型的性能。后续文章我也会写到这几种变体。

标签:集成,预测,特征,模型,学习,算法,GBDT,决策树
From: https://www.cnblogs.com/alax-w/p/17129107.html

相关文章

  • 《分布式技术原理与算法解析》学习笔记Day14
    分布式计算模式:Stream什么是流数据?实时性任务主要是针对流数据处理,对处理时延要求很高,通常需要常驻服务进程,等待数据的随时到来随时处理,以保证低时延。流数据有4个特征:......
  • 安装Linux操作系统,学习Linux基础(必做)
    掌握了Linux命令的学习方法https://www.cnblogs.com/bky20221301/p/16652478.html......
  • 数据结构个人学习推荐
    目录学好这门课的重要性学习方法多看图例并动笔画图步步为营且不断重复Showmeyourcode!尝试输出所学知识常见的问题C都还给老师了,还需要返工吗?需不需要先学某门语言再......
  • markdown学习
    markdown使用学习#+标题名字选择标题最多6级一个#表示加一级一级最大字体对字体加粗等操作hello**hello**粗体hello*hello*斜体hello***hello*......
  • 2.16 背包学习
    11.背包问题求方案数思路求最优方案数可以分成两步第一步求出最优方案,也就是最大价值第二部求最大价值下的方案数具体有多少种而求出当前i,j下最大价值,然后求出相应......
  • 【学习笔记】支配树
    先对自己说句话:你觉得没用的算法不一定没用,别太自以为是在那里一遍一遍叫"stoplearninguselessalgorithm",最useless的是你。支配给定一个有向图\(G\),有一个起点......
  • 多模态学习有哪些架构?MBZUAI最新《多模态表示学习》综述,29页详述多模态表示学习的演化
    前言本文回顾了深度多模态学习方法的演变,并讨论了使主干对各种下游任务具有鲁棒性所需的预训练的类型和目标。本文转载自专知 欢迎关注公众号CV技术指南,专注于计......
  • 传统图机器学习的特征工程
    特征工程的意义特征工程是传统图机器学习中的一个重要环节,它可以帮助我们更好地理解图中的节点、连接和全图,从而更好地构建有效的机器学习模型。特征工程可以帮助我们......
  • spring security学习笔记
    1.创建springboot工程,添加lombok插件2.引入springsecurity包3.引入MybatisPuls和mysql驱动包 4.密码加密存储 5.PreAuthorize("hasAuthority('test'......
  • 【学习笔记】Spring之AOP
    Spring之AOP什么是AOPAOP(AspectOrientedProgramming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发......