Hessian矩阵在XGBoost算法的应用小结

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

前言


Hessian矩阵最常见的应用是牛顿法最优化算法,其主要思想是搜寻一阶导数为0的函数极值点,本文深入浅出的总结了Hessian矩阵在XGboost算法中的两种应用,即权重分位点算法和样本权重和算法 。

目录


  1. Hessian矩阵的定义

  2. 样本权重和算法

  3. 权重分位点算法

  4. 总结

1.Hessian矩阵的定义

Hessian矩阵(Hessian matrix或Hessian)是一个自变量为向量的实值函数的二阶导偏导数组成的方块矩阵,此实值函数如下:

14b758e250d5665e5b95cc2249e81180.png

自变量为向量:

  0592571e9eb45ed1c9ca99e544da8787.png

因此,Hessian矩阵H(f),定义为:

           10e6183326cfea5697d0b7ae462dbf4f.png

2. 最小叶子节点样本权重和算法

官方文档对XGBoost算法参数最小叶子节点样本权重和 (min_child_weitht) 的定义:

minimum sum of instance weight (hessian) needed in a child. If the tree partition step results in a leaf node with the sum of instance weight less than min_child_weight, then the building process will give up further partitioning. In linear regression mode, this simply corresponds to minimum number of instancesneeded to be in each node. The larger, the more conservative the algorithm will be.

翻译:min_child_weight定义为最小叶子节点样本权重(hessian)和,如果树分裂步骤产生的叶子节点上所有样本权重和小于min_child_weight,就停止分裂 。在线性回归的模型中,最小样本个数反映了最小叶子节点样本权重和 。min_child_weight越大,模型越保守,即降低了模型的复杂度 ,避免过拟合 。


下面讨论树模型和线性模型用hessian表示节点样本权重的含义 。

还记得hessian矩阵的定义吗? hessian是函数值对变量的二阶导,xgboost算法中用损失函数对预测值的二阶导表示hessian,如下:

71604225661b6ad81a689c9d2bacc211.png

其中,L 表示损失函数,y和f70068b7e09ffcd50b8560e49219beb0.png分别表示真实值和预测值 。

2.1 线性回归模型

若某一节点的样本数为n,其损失函数:

fd6975102d012ec6808206e6ab5c1ad2.png

对(2.1)式求二阶导:

359330ed9e1af55d9a70b201049d5f81.png

因此,线性回归模型中,节点的样本数表示了样本权重和 。

2.2 树模型

树模型中用Hessian表示样本权重,决定某一节点是否切分的条件是比较该节点的样本权重和与min_child_weight的大小,若大于,则切分;反之则不切分(假设其他条件满足切分)。

为了加深理解,本节用二分类逻辑回归举例:

二分类逻辑回归的损失函数:

d013e40fda7138ef11c6c7c039a82958.png

a1017ce9342b47c1af879307d46764e4.png

(2.7)式表示节点所有样本的权重和,可以定性的画出(2.7)式与min_child_weight的关系:

4e0583f4cd744c0bc3aace775aad641b.png

由上图可知,样本数与样本权重成正相关的关系,因此树模型的样本权重和在一定程度上反映了样本数 。

由xgboost算法的性质可知:

(1)、当yi为1时,2c04f98c6b922425aa1a98176534b1cf.png越大,损失函数越小,(2.7)式越接近于0 。

(2)、当yi为0时,be36afc921a77e8ecc70aa4ad8b5eb94.png越小,损失函数越小,(2.7)式越接近于0 。

因此,(2.7)式也可以表示某一节点的纯度(purity),若纯度大于 min_child_weight,那么可继续对该节点切分;纯度小于 min_child_weight,则不切分 。

3. 权重分位点算法

对损失函数的二阶导值进行排序,然后根据分位点进行切分,选择最佳切分点 。这里不展开了,具体算法请参考XGBoost切分点算法

4. 总结

XGBoost算法用损失函数的二阶导(Hessian)表示样本权重,这一思想在线性回归模型中反映了节点的样本个数,在树模型中反映了该节点的纯度 。

参考:
https://stats.stackexchange.com/questions/317073/explanation-of-min-child-weight-in-xgboost-algorithm#

 
 

好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇

 
 

33b0b50b95287e78092a6a5bf7f5d88c.jpeg

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。


下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。


下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。


交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值