首页 > 编程知识 正文

gbdt怎么计算特征重要性,gbdt算法原理深入解析

时间:2023-05-04 12:06:22 阅读:135148 作者:1447

说明:本文是在文章末尾参考相关博客写的读书笔记。

GDT算法步骤:

k表示要分类的类别,共有k个类别。

(m )表示重复次数,共重复m次。

)表示样品编号,共有n个样品。

FK0(x ) :表示样本x在第k个分类中的评价值,是k维的向量。 下表0显示了第零次迭代。 例如,如果输入数据x属于五个类别(分别为1、2、3、4、5 ),并且在训练数据中x属于类别3,则y=) 0、0、1、0、0 )、0 )、0 )、0 )、0 )、0 )、0 ) 也可以理解为F1(x )=0,F2 ) x )=0.3,F3 ) x )=0.6,F4 ) x )=0,F5 ) x )=0。

(1)初始化所有样本在K类别中的估计值

33558www.Sina.com/:FK0(x )=0,k=1,2,…K。 这实际上是对于样本x在所有类别中的单独估计,而实际上是for循环操作。 这样写是为了看起来简洁。 如上所示,是矢量。

说明

循环下面的学习更新过程M次;

PK(x ) :经过逻辑转换的数据将f ) x )转换为0到1之间的概率值。 第4行之后的k=1,…K意味着计算for循环,分别计算p1(x ),p2 ) x ),p3 ),p4 ) x ),p5 ) x )

逻辑转换后的数据p(x )=(0.16、0.21、0.29、0.16、0.16 ) ) ) ) ) ) ) ) ) ) ) )。

(2)对每个样本的函数估计值做logistic变换

我们制作常见的成本函数。 代价函数呈对数似然函数的形式。 (在算法步骤中省略了这一部分。 )

用求导梯度下降法学习:

这实际上对应于算法步骤的第6行是如何来的,在算法步骤中直接得出了结论。 33558www.Sina.com/:I:第I个样本属于第k个类别的残差=真概率-估计概率。

yik是输入的样本数据的实际类别,如果一个样本x属于类别k,则yik=1,否则yik=0。 y - p得到梯度g:(-0.16,- 0.21,0.71,-0.16,-0.16 ) )

设gk为样品在某一维(某分类)上的梯度:

在gk0情况下,越大表示该一维上的概率p(x )越应该提高,例如如果上述第三维的概率为0.29则应该提高,http://www.Sina.com/http://www.Sina.com /小

对于gk0,越小、负越多,应该越降低该一维上的概率,例如第二维0.21应该降低。 http://www.Sina.com/http://www.Sina.com /越大,负越少,表示这个报价“没有错”

总的来说,(3)遍历所有样本的每个类别的概率,求每个样本在第k类上概率梯度(详细推导过程如下:)因此,函数的估计允许梯度沿相反方向移动(在0维中沿负方向移动,在0维中沿正方向移动),最终梯度尽可能地变为=0),http://

有没有发现这里的求导得到的梯度形式居然是残差的形式这些梯度也是构建下一个回归树的学习方向。

应该往

学习的伪代码:

上式用n个样本做回归树。

输入所有样本xi,I=1 ̄n和每个样本在第k个类别的概率残差作为更新方向,学习了带j个叶的回归树。 学习的基本过程与回归树相似。 遍历样本的特征维度,选择一个特征作为分割点,必须满足最小均方误差原则。 或者,必须满足【与左子树采样目标值(残差)的均方(右子树采样目标值)残差】的均方(父节点所有采样目标值)的均方】的最大标准。 学习到j个叶节点后,中止学习,结果在该回归树中每个叶分布有很多样本。

“正确的方向”前进:每个叶子的示例既有自己属于类别k的估计概率,也有真实概率。 因为后来求增益需要用它们。

应该朝着

各节点的增益计算公式如下。

请注意后标记。 叶的每个节点j都增加一个

益值(不是向量,是值)。计算的时候需要用到该叶子结点上的所有样本的梯度。 
    换句话说,每个叶子结点都可以计算出一个增益值,记住是值啊!

(7)更新所有样本在第k类下的估计值 

上一步中求得的增益是基于梯度计算得到的,而且前面说到的梯度和残差有

一定的关联,我们可以利用这个增益更新样本的估计值。 
 

第m次迭代中的第k类下,所有样本的估计值F可以通过上次迭代m-1中,这些样本的估计值+增益向量求得。注意,这个增益向量需要把所有的J个叶子结点的增益值求和,然后和向量1相乘,而得。

也就是我们上面讲的,第k类的所有样本的估计值是一列: 
 
    也就是按列更新,前面有对类别数k的循环,所以每一类(每一列)的估计值都可以更新。一定记住是按列更新,每一类(每一列)都建立一个回归树来更新下去,最后原始的K类的N个样本的估计值矩阵都更新了一遍,带着这个新的估计值矩阵,我们进入下次m+1次的迭代学习。

如此,迭代学习M次之后,我们可以得到最终的所有样本在所有类别下的估计值矩阵,基于这个估计值矩阵,我们可以实现多类分类。

这样,基于梯度版本的GBDT算法的所有详细步骤我们都说完了。

 

参考资料:

http://blog.csdn.net/xiaokang06/article/details/76687517

http://blog.csdn.net/xiaokang06/article/details/76691444

http://blog.csdn.net/xiaokang06/article/details/76687564

https://cethik.vip/2016/09/21/machineCAST/


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。