集成学习之GBDT算法详解

这篇具有很好参考价值的文章主要介绍了集成学习之GBDT算法详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先说一下提升树(Boosting Decision Tree):通过拟合残差的思想来进行提升,残差 = 真实值 - 预测值,例如:

  • 某人年龄为100岁,预测其年龄

  • 第一次预测结果为80岁,残差为100-80=20

  • 第二次预测以残差20为目标,预测结果为16岁,残差为4

  • 第三次预测以残差4为目标,预测结果为3.2,残差为0.8

  • 三次结果串联起来预测结果为80+16+3.2=99.2,通过拟合残差可以将多个弱学习器组成一个强学习器

梯度提升树(Gradient Boosting Decisen Tree):梯度提升树不再拟合残差,而是采用类似于梯度下降的方法,利用损失函数的负梯度作为提升树算法中的残差近似值。一句话:把损失函数的负梯度作为下次预测的目标值,把同子树的均值作为预测值,相减作为负梯度。

假设:

  • 前一轮迭代得到的强学习器:

    •         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

  • 损失函数为平方损失:

    • ​​​​​​​​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

  • 本轮迭代的目标是找到一个弱学习器:

    • ​​​​​​​​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

  • 本轮的强学习器为:

    • ​​​​​​​​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        集成学习之GBDT算法详解,机器学习,算法,集成学习,机器学习,python,人工智能

则本轮的损失函数为:

                

则要拟合的负梯度为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

注:如果GBDT进行的是分类问题,则损失函数变为对数损失。

算法推导案例

x 1 2 3 4 5 6 7 8 9 10
目标值 5.56 5.70 5.91 6.40 6.80 7.05 8.90 8.70 9.00 9.05

1. 初始化弱学习器(CART树):把预测值初始化为目标值的均值,可使第一个弱学习器的损失函数最小,证明如下:

    ,求平方误差最小,即对损失函数求导,导数为0时,函数最小

     

    则 可令 

 由以上公式可得,当初始化为均值时,可以使损失函数最小

2. 构建第1个弱学习器,根据负梯度的计算方法得到下表

集成学习之GBDT算法详解,机器学习,算法,集成学习,机器学习,python,人工智能

  • 当以1.5为分割点,拟合负梯度为-1.75,-1.61,-1.4,-0.91,…,1.74

    • 左子树均值为-1.75,右子树均值为( - 1.61 - 1.40 - 0.91 - 0.51 - 0.26 + 1.59 + 1.39 + 1.69 + 1.74 ) / 9=0.19

    • 平方损失:左子树0+右子树(-1.61-0.19)2 + (-1.40-0.19)2 + (-0.91-0.19)2 + (-0.51-0.19)2 +(-0.26-0.19)2 +(1.59-0.19)2 + (1.39-0.19)2 + (1.69-0.19)2 + (1.74-0.19)2 =15.72308

  • 以次把其它点作为分割点,并求损失函数

  • 集成学习之GBDT算法详解,机器学习,算法,集成学习,机器学习,python,人工智能

集成学习之GBDT算法详解,机器学习,算法,集成学习,机器学习,python,人工智能 

3. 构建第2个弱学习器,以3.5 作为切分点时,平方损失最小,此时得到第2棵决策树

集成学习之GBDT算法详解,机器学习,算法,集成学习,机器学习,python,人工智能

集成学习之GBDT算法详解,机器学习,算法,集成学习,机器学习,python,人工智能

集成学习之GBDT算法详解,机器学习,算法,集成学习,机器学习,python,人工智能

API文章来源地址https://www.toymoban.com/news/detail-798743.html

# 1 初始化弱学习器(目标值的均值作为预测值)
# 2 迭代构建学习器,每一个学习器拟合上一个学习器的负梯度
# 3 直到达到指定的学习器个数
# 4 当输入未知样本时,将所有弱学习器的输出结果组合起来作为强学习器的输出
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import GridSearchCV, train_test_split
import pandas as pd
titanic_df = pd.read_csv('titanic/train.csv')
X = titanic_df[['Pclass','Age','Sex']]
y = titanic_df['Survived']
# 性别编码
X = pd.get_dummies(X) 
# 年龄进行缺失值填充
X['Age'].fillna(X['Age'].mean(),inplace = True)
# 训练集测试集划分
X_train, X_test, y_train, y_test = train_test_split(X,y,stratify=y,random_state=66)
gboost_classifier = GradientBoostingClassifier()
parmas = {"n_estimators": [50,100,150], "max_depth": [2,3,5,8,10],'learning_rate':[0.1,0.3,0.5,0.7,0.9]}
# 交叉验证和网格搜索 寻找最优的超参数组合
gs_estimator = GridSearchCV(gboost_classifier,param_grid=parmas,cv=4)
gs_estimator.fit(X_train,y_train)

到了这里,关于集成学习之GBDT算法详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 传统机器学习(六)集成算法(1)—随机森林算法及案例详解

    集成学习(Ensemble Learning) 就是通过某种策略将多个模型集成起来,通过群体决策来提高决策准确率。 集成学习首要的问题是选择什么样的学习器以及如何集成多个基学习器,即集成策略。 一个有效的集成除了要让各个基学习器的学习效果好之外,还需要各个基学习器的差

    2024年02月01日
    浏览(56)
  • 机器学习之集成学习概念介绍

    机器学习中的集成学习(Ensemble Learning)是一种通过组合多个模型来提高整体性能的技术。它的基本思想是将多个学习器(弱学习器)组合成一个更强大的学习器,以提高整体性能和泛化能力。集成学习可以在各种机器学习任务中使用,包括分类、回归和聚类。 弱学习器(

    2024年01月22日
    浏览(46)
  • 【Python】人工智能-机器学习——不调库手撕演化算法解决函数最小值问题

    现在有一个函数 3 − s i n 2 ( j x 1 ) − s i n 2 ( j x 2 ) 3-sin^2(jx_1)-sin^2(jx_2) 3 − s i n 2 ( j x 1 ​ ) − s i n 2 ( j x 2 ​ ) ,有两个变量 x 1 x_1 x 1 ​ 和 x 2 x_2 x 2 ​ ,它们的定义域为 x 1 , x 2 ∈ [ 0 , 6 ] x_1,x_2in[0,6] x 1 ​ , x 2 ​ ∈ [ 0 , 6 ] ,并且 j = 2 j=2 j = 2 ,对于此例,所致对于 j =

    2024年01月20日
    浏览(76)
  • 毕业设计-基于深度学习玉米叶病虫害识别系统 YOLO python 机器学习 目标检测 人工智能 算法

    目录 前言 设计思路 一、课题背景与意义 二、算法理论原理 2.1 卷积神经网络 2.2 YOLOv5算法 三、检测的实现 3.1 数据集 3.2 实验环境搭建 3.3 实验及结果分析 实现效果图样例 最后        📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准

    2024年02月03日
    浏览(136)
  • 机器学习强基计划10-2:详细推导串行集成AdaBoost算法(附Python实现)

    机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理;“广”在分析多个机器学习模型:决策树、支持向量机、贝叶斯与马尔科夫决策、强化学习等。强基计划实现从理论到实践的全面覆盖,由本人亲自从底层编

    2024年02月07日
    浏览(114)
  • 机器学习——boosting之GBDT

    现在要开始重点关注名字了,名字透漏了很多信息!名字暗藏线索! GBDT,Gradient Boosting Decision Tree: 梯度提升决策树 果然信息很丰富 梯度:意味着计算有迭代递进关系,但还不明确是怎么迭代递进的 提升:意味着前向分布式+加法模型,并且分类器之间是有相关提升的 决策树

    2024年02月09日
    浏览(38)
  • python算法中的机器学习算法之无监督学习知识点(详解)

    目录 学习目标: 学习内容: Ⅰ. K均值聚类(K-Means Clustering) Ⅱ. 层次聚类(Hierarchical Clusteri

    2024年02月01日
    浏览(46)
  • 【10个适合新手的人工智能项目 - 02】手写数字识别:使用Python和机器学习算法,编写一个手写数字识别程序,能够识别手写数字图像并将其转换为数字。

    为了编写一个手写数字识别程序,我们需要使用Python编程语言和一些机器学习算法。在这个项目中,我们将使用深度学习神经网络模型,它被广泛应用于图像识别任务。 以下是手写数字识别程序的基本步骤: 首先,我们需要一个数据集,用于训练和测试我们的模型。一个常

    2024年02月03日
    浏览(57)
  • Spark-机器学习(5)分类学习之朴素贝叶斯算法

    在之前的文章中,我们学习了回归中的逻辑回归,并带来简单案例,学习用法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-机器学习(4)回归学习之逻辑回归-CSDN博客 文章浏览阅读2.6k次

    2024年04月28日
    浏览(58)
  • 【机器学习】Decision Tree 决策树算法详解 + Python代码实战

    决策树即通过一步步决策得到最终结果的树 如下图所示,如果要判断一个人在家庭里的身份,我们可以先判断ta年龄是否大于15,如果是,则说明ta是爷爷或奶奶或妈妈,如果不是,则再判断ta是否为男性,如果是,则ta是儿子,否则ta是女儿。 这就是一个决策树的基本流程。

    2024年01月23日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包