【问题标题】:How is xgboost cover calculated?xgboost 覆盖率是如何计算的?
【发布时间】:2015-11-10 02:06:02
【问题描述】:

有人能解释一下xgboost R 包中的Cover 列是如何在xgb.model.dt.tree 函数中计算的吗?

在文档中它说 Cover “是衡量受拆分影响的观察数量的指标”

当您运行以下代码时,xgboost 文档中给出了此函数,树 0 的节点 0 的 Cover 为 1628.2500。

data(agaricus.train, package='xgboost')

#Both dataset are list with two items, a sparse matrix and labels
#(labels = outcome column which will be learned).
#Each column of the sparse Matrix is a feature in one hot encoding format.
train <- agaricus.train

bst <- xgboost(data = train$data, label = train$label, max.depth = 2,
               eta = 1, nthread = 2, nround = 2,objective = "binary:logistic")

#agaricus.test$data@Dimnames[[2]] represents the column names of the sparse matrix.
xgb.model.dt.tree(agaricus.train$data@Dimnames[[2]], model = bst)

train 数据集中有 6513 个观察值,所以谁能解释为什么树 0 的节点 0 的 Cover 是这个数字 (1628.25) 的四分之一?

另外,树 1 的节点 1 的 Cover 是 788.852 - 这个数字是如何计算的?

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: r xgboost


    【解决方案1】:

    封面在xgboost 中定义为:

    分类到的训练数据的二阶梯度之和 叶,如果是平方损失,这简单地对应于 该分支中的实例。在树的更深处有一个节点,降低这个 指标将是

    https://github.com/dmlc/xgboost/blob/f5659e17d5200bd7471a2e735177a81cb8d3012b/R-package/man/xgb.plot.tree.Rd 没有特别好的记录......

    为了计算覆盖,我们需要知道在树中那个点的预测,以及关于损失函数的二阶导数

    幸运的是,您示例中 0-0 节点中每个数据点(其中 6513 个)的预测值为 0.5。这是一个全局默认设置,您在 t=0 时的第一个预测是 0.5。

    base_score [ default=0.5 ] 所有的初始预测分数 实例,全局偏差

    http://xgboost.readthedocs.org/en/latest/parameter.html

    二元逻辑的梯度(这是您的目标函数)是 p-y,其中 p = 您的预测,y = 真实标签。

    因此,hessian(我们需要它)是 p*(1-p)。 注意:Hessian 可以在没有 y 的情况下确定,真正的标签。

    所以(把它带回家):

    6513 * (.5) * (1 - .5) = 1628.25

    在第二棵树中,该点的预测不再都是 .5,sp 让我们得到一棵树之后的预测

    p = predict(bst,newdata = train$data, ntree=1)
    
    head(p)
    [1] 0.8471184 0.1544077 0.1544077 0.8471184 0.1255700 0.1544077
    
    sum(p*(1-p))  # sum of the hessians in that node,(root node has all data)
    [1] 788.8521
    

    注意,对于线性(平方误差)回归,hessian 始终为 1,因此封面表示该叶子中有多少示例。

    最大的收获是覆盖是由目标函数的粗麻布定义的。有很多关于获取梯度和二元逻辑函数的 hessian 的信息。

    这些幻灯片有助于了解他为什么使用粗麻布作为权重,并解释了 xgboost 与标准树的分割方式有何不同。 https://homes.cs.washington.edu/~tqchen/pdf/BoostedTree.pdf

    【讨论】:

    • 很棒的解释。谢谢
    • 另外,我想你不能对这个问题有所了解吗? stackoverflow.com/questions/33654479/…
    • @dtfoster 我一直在玩另一个问题 - 还没有解决它......引擎盖下有一些轻微的权重,与他的幻灯片有一些细微的差异跨度>
    猜你喜欢
    • 2016-05-31
    • 1970-01-01
    • 2018-08-16
    • 2020-02-12
    • 2021-04-04
    • 2019-08-04
    • 2011-01-24
    • 2011-03-06
    • 1970-01-01
    相关资源
    最近更新 更多