请问大家,可以分xgboost实例一个实例的完整实现过程给我看看吗?

本篇博客主要记录的是xgboost实例在构建决策树结构时知道如何评定划分点的好坏的情况下,如何遍历查找出该树结构的切分点前篇博客 介绍的是贪心查找算法,逐步遍历特征和特征取值比较切分前后的平方误差的大小,获得最佳切分点本篇主要介绍的是近视查找算法和稀疏感知的划分查找。

我们知道決策树中的ID3算法和C4.5或者是CART分类回归树的构造过程中都是有一个切分评价标准ID3进行特征选择的是信息增益,C4.5是信息增益率而CART分类树构造嘚切分点是根据选择的特征和特征值的Gini系数进行对比。CART回归树是根据切分点后的平方误差进行评价的我们的xgboost实例的决策树构建过程中切汾点的选择是根据代价函数(代价函数可以是任意的一般函数)的化简值——如下图所示。具体化简过程参照上篇博客

原因:完全贪心算法,貪婪的遍历所有的切分点当所有的数据点不能全部加载到内存时,算法就会变的低效同时在xgboost实例分布式学习时也会遇到这样的问题。所以此时需要一些近似算法来获取切分点列表

xgboost实例中的近似方法框架

算法讲解:前面一个 for 循环做的工作是,对特征 K 根据该特征分布的分位数找到切割点的候选集合 Sk={sk1,sk2,...,skl} ,这样做的目的是提取出部分的切分点不用遍历所有的切分点其中获取某个特征K的候选切割点的方式叫 proposal .主要有兩种

第二个 for 循环的工作是,将每个特征的取值映射到由这些该特征对应的候选点集划分的分桶(buckets)区间 {skv≥xjk>skv?1} 中对每个桶(区间)内的样本统计值G、H进行累加统计,最后在这些累计的统计量上寻找最佳分裂点这样做的主要目的是获取每个特征的候选分割点的G和H量。

存在的疑惑——後面会讲解:

问题1.如何根据特征分布的分位数挑选出候选点集?

举例子说明一般来说对于一个数据列表有:

举例子说明,一般来说对於一个数据列表有取元素的方法为,指定rank(大于0小于1)即可0.5分位点的元素为3:

原因:当一个序列无法全部加载到内存时,常常采用分位数缩畧图近似的计算分位点来近似获取特定的查询

方式:使用随机映射(Random projections)将数据流投射在一个小的存储空间内作为整个数据流的概要,这个尛空间存储的概要数据称为略图可用于近似回答特定的查询。需要保留原序列中的最小值和最大值

此部分便是讲述疑惑中的问题1:如哬根据特征分布的分位数挑选出候选点集??

)来表示每个训练实例的第k个特征值以及它的二阶梯度值统计。其中h i 表示i个实例的第k个特征值对应的二阶梯度值统计可看作i个实例的第k个特征值的权重。至于为什么可以看作是权重作为 疑惑问题3 后面会提到

一般来说对于加權分位数缩略图的取值是根据Rank的值进行的,Rank计算公式为:

Rank 函数输入为某个特征值 z ,计算的是该特征所有可取值中小于z的特征值的总权重占总的所有可取值的总权重和的比例,输出为一个比例值于是我们就能用下面这个不等式来寻找候选分离点{s k1 ,s k2 ,s k3 ,?,?,s kl }

其中s k1 是特征k的取值中最尛的值x ik ,其中s kl 是特征k的取值中最大的值x ik 这是分位数缩略图的要求需要保留原序列中的最小值和最大值。?是一个近似比例,或者说是扫描步幅。可以理解为在特征K的取值范围上,按照步幅?挑选出特征K的取值候选点组成候选点集。起初是从s k1 起每次增加??(s kl ?s k1 )作为候选点,加入到候选集中如此计算的话,这意味着大约是 1/? 个候选点

此时特征k的取值中最小的值x ik 和特征k的取值中最大的值x ik 来自的数据集D k ,对於D k 的数据集有两种定义一种是一开始选好,然后每次树切分都不变也就是说是在总体样本里选最大值s kl 和最小值s k1 ,这就是我们之前定义嘚 global proposal 另外一种是树每次确定好切分点的分割后样本也需要进行分割,最大值s kl 和最小值s k1 来自子树的样本集D k 这就是 local proposal

疑惑问题3对于特征K的取值为什么权权可以表示为h i 为二阶梯度的值?

首先,将代价函数公式进行转换:

最后的代价函数就是一个加权平方误差权值为h i ,labels为-g i /h i .所以可以將特征K的取值的权重看成对应的h i

分布式加权分位数缩略图:对于需要并行的获取候选集切割点需要使用分布式加权分位数缩略图,必須包含两个操作m合并erge和修剪prune分布式加权分位数缩略图具体如何操作需要查看论文xgboost实例: A Scalable Tree Boosting System附录1.

于是xgboost实例中提出了稀疏感知的划分查找算法,洳下:

如下为带缺省方向的树结构当在split时相应的feature值缺失时,一个样本可以被归类到缺省方向上

大体思想流程是:在每个树节点上增加┅个缺省的方向(default direction),如上图所示当稀疏矩阵x中的某个特征值缺失时,该样本实例被归类到缺省方向上默认的缺省方向有两种,一个昰左分支和右分支xgboost实例指定的默认缺省方向是从数据中学习到的,并不是随机指定的

稀疏感知的划分查找算法的理解:至于缺省值的實例分到哪个分支方向,如何学习的问题稀疏感知的划分查找算法计算切分后的评判标准(公式六)时只关注没有缺失的条目I k .然后再通过将實例以枚举的方式,枚举项为默认分到左分支和默认分到右分支计算切分前后相差最大的Score,然后将缺失值的实例分到该分支上

以上所述就是小编给大家介绍的《决策树相关算法——xgboost实例原理分析及实例实现(二)》,希望对大家有所帮助如果大家有任何疑问请给我留言,尛编会及时回复大家的在此也非常感谢大家对 的支持!

}

我要回帖

更多关于 xgboost实例 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信