当前位置: 首页 > news >正文

《XGBoost算法的原理推导》12-22计算信息增益(Gain)的公式 公式解析

本文是将文章《XGBoost算法的原理推导》中的公式单独拿出来做一个详细的解析,便于初学者更好的理解。


公式 (12-22) 是 XGBoost 中用于计算增益(Gain) 的公式。在决策树的构建过程中,增益衡量的是某个节点分裂前后损失的减少量。通过计算增益,XGBoost 能够判断当前分裂操作是否有助于减少预测误差,并选择增益最大的分裂点进行分裂。公式 (12-22) 表示增益的计算公式,具体为:

Gain = 1 2 [ G L 2 H L + λ + G R 2 H R + λ − ( G L + G R ) 2 H L + H R + λ ] − γ \text{Gain} = \frac{1}{2} \left[\frac{G_L^2}{H_L + \lambda} + \frac{G_R^2}{H_R + \lambda} - \frac{(G_L + G_R)^2}{H_L + H_R + \lambda}\right] - \gamma Gain=21[HL+λGL2+HR+λGR2HL+HR+λ(GL+GR)2]γ

公式中的符号解释

  1. Gain \text{Gain} Gain

    • 表示在当前节点进行分裂时的增益值。增益衡量的是分裂前后的损失变化量。
    • 如果增益为正,说明分裂操作可以减少总体损失,分裂是有利的;如果增益为负或为零,则说明分裂操作并没有显著减少损失。
  2. G L G_L GL G R G_R GR

    • G L G_L GL 表示左子节点中所有样本的一阶导数(梯度)之和。
    • G R G_R GR 表示右子节点中所有样本的一阶导数之和。
    • 梯度值反映了样本的误差方向和大小,因此 G L G_L GL G R G_R GR 分别表示左、右子节点的误差信息。
  3. H L H_L HL H R H_R HR

    • H L H_L HL 表示左子节点中所有样本的二阶导数(Hessian)之和。
    • H R H_R HR 表示右子节点中所有样本的二阶导数之和。
    • Hessian 表示损失函数的曲率,用于衡量误差的变化率。
  4. λ \lambda λ

    • 正则化参数,用于控制节点权重的大小,防止过拟合。
    • 较大的 λ \lambda λ 值可以抑制叶子节点的权重,使得模型更加简单,增强泛化能力。
  5. γ \gamma γ

    • 正则化参数,用于控制分裂操作的成本。
    • 较大的 γ \gamma γ 值会增加每次分裂的成本,从而抑制生成过多的叶子节点,防止树结构过于复杂。

公式的分解与解释

公式 (12-22) 可以分解为两个主要部分:分裂前后的损失差异项和正则化项。

第一部分:分裂前后的损失差异项

1 2 [ G L 2 H L + λ + G R 2 H R + λ − ( G L + G R ) 2 H L + H R + λ ] \frac{1}{2} \left[\frac{G_L^2}{H_L + \lambda} + \frac{G_R^2}{H_R + \lambda} - \frac{(G_L + G_R)^2}{H_L + H_R + \lambda}\right] 21[HL+λGL2+HR+λGR2HL+HR+λ(GL+GR)2]

  1. 左子节点的损失项 G L 2 H L + λ \frac{G_L^2}{H_L + \lambda} HL+λGL2

    • 这是左子节点的损失。分子 G L 2 G_L^2 GL2 是左子节点中所有样本梯度的平方和,表示误差的方向和大小。
    • 分母 H L + λ H_L + \lambda HL+λ 是左子节点中所有样本的二阶导数之和加上正则化项 λ \lambda λ,它表示误差的变化速率,并防止权重过大。
  2. 右子节点的损失项 G R 2 H R + λ \frac{G_R^2}{H_R + \lambda} HR+λGR2

    • 这是右子节点的损失,计算方式与左子节点类似。
    • 分子 G R 2 G_R^2 GR2 是右子节点所有样本梯度的平方和,表示误差方向的大小。
    • 分母 H R + λ H_R + \lambda HR+λ 是右子节点中所有样本的二阶导数之和加上正则化项 λ \lambda λ
  3. 父节点的损失项 ( G L + G R ) 2 H L + H R + λ \frac{(G_L + G_R)^2}{H_L + H_R + \lambda} HL+HR+λ(GL+GR)2

    • 这是分裂之前的父节点损失。分子 ( G L + G R ) 2 (G_L + G_R)^2 (GL+GR)2 是父节点中所有样本梯度的平方和。
    • 分母 H L + H R + λ H_L + H_R + \lambda HL+HR+λ 是父节点中所有样本的二阶导数之和加上正则化项 λ \lambda λ
  4. 差异项的解释

    • 分裂前后的损失差异通过 G L 2 H L + λ + G R 2 H R + λ − ( G L + G R ) 2 H L + H R + λ \frac{G_L^2}{H_L + \lambda} + \frac{G_R^2}{H_R + \lambda} - \frac{(G_L + G_R)^2}{H_L + H_R + \lambda} HL+λGL2+HR+λGR2HL+HR+λ(GL+GR)2 来表示。
    • 这个差异项反映了在进行分裂操作后,左右子节点的损失相对于父节点损失的减少量。
    • 负号和二次项表明我们希望最小化损失,并且差异越大,增益越大,说明分裂操作越有利。
第二部分:正则化项

− γ -\gamma γ

  • − γ -\gamma γ 表示对分裂操作的正则化成本。因为分裂会增加一个叶子节点,所以增加了一个 γ \gamma γ 成本。
  • 如果分裂增益不足以弥补这个正则化成本,那么 Gain \text{Gain} Gain 会为负,表示该分裂操作并不划算,应当避免。
  • 较大的 γ \gamma γ 值有助于控制模型复杂度,防止生成过多的叶子节点。

公式的意义

  • 增益的计算:公式 Gain = 1 2 [ G L 2 H L + λ + G R 2 H R + λ − ( G L + G R ) 2 H L + H R + λ ] − γ \text{Gain} = \frac{1}{2} \left[\frac{G_L^2}{H_L + \lambda} + \frac{G_R^2}{H_R + \lambda} - \frac{(G_L + G_R)^2}{H_L + H_R + \lambda}\right] - \gamma Gain=21[HL+λGL2+HR+λGR2HL+HR+λ(GL+GR)2]γ 表示在分裂操作前后,损失的变化量。
  • 分裂操作的有效性:通过计算增益,我们可以评估该分裂是否有助于减少总体损失。如果增益为正,说明分裂有效,可以减少模型的误差;否则,则不进行分裂。
  • 选择最佳分裂点:在构建树的过程中,XGBoost 会选择增益最大的分裂点,这样可以有效减少模型的损失,提升模型的预测精度。

总结

公式 (12-22) 计算了在分裂操作前后的损失减少量(增益),用于判断分裂操作的有效性。该公式包含了分裂后左右子节点的损失、分裂前父节点的损失,以及分裂操作的正则化成本。通过比较增益,XGBoost 能够选择最优的分裂点,构建出高效的决策树,从而提升模型的性能和泛化能力。


http://www.mrgr.cn/news/68444.html

相关文章:

  • 如何创建备份设备以简化 SQL Server 备份过程?
  • SQL--查询连续三天登录数据详解
  • ESLint 使用教程(一):从零配置 ESLint
  • Python并发编程库:Asyncio的异步编程实战
  • 重学 Android 自定义 View 系列:动手实现专属 TextView
  • 物联网核心安全系列——物联网安全需求
  • 【AI技术】PaddleSpeech
  • 【计网不挂科】计算机网络期末考试——【选择题&填空题&判断题&简述题】题库(1)
  • NVR设备ONVIF接入平台EasyCVR私有化部署视频平台如何安装欧拉OpenEuler 20.3 MySQL
  • 超干干货!看完,你就是产品经理天花板
  • aws申请ssl证书的方法【该证书仅供aws】
  • <数据集>草莓叶片病害识别数据集<目标检测>
  • 【EI稳定检索】2025通信技术与数据安全国际研讨会(CTADS 2025)
  • 常见加密算法逆向分析
  • 吐糟-致敬一棍子把我打死的知识
  • 三品PLM产品管理系统如何提升企业研发管理效率?
  • SourceTree突然打不开,删除这个文件就好了
  • linux服务器通过手机USB共享网络
  • 无线婴儿监视器方案(附SI24R1选型)
  • 爬虫-------字体反爬
  • linux 安装anaconda3
  • 366_C++_SystemClock类,每1秒定时轮巡,需要不停在后台执行的任务,可以用这种方式
  • 腾讯云双11最强优惠攻略详解
  • 基于数组实现的Huffman树和Huffman编码
  • windows环境下vscode下载安装
  • 进程池的实现与匿名管道通信(task 2)