我有点难以理解 weight 中的 xgb.DMatrix 函数和 sum_pos_weight 列表中的 param 参数之间的区别。我正在浏览以下使用 Higgs 数据的 code

由于数据不平衡,作者定义了一个权重参数:

weight <- as.numeric(dtrain[[32]]) * testsize / length(label)

sumwpos <- sum(weight * (label==1.0))
sumwneg <- sum(weight * (label==0.0))

然而第32列已经是一个weight变量,所以作者是在修改一个已经定义好的权重变量?

然后,修改后的 weight 变量被设置为 xgb.DMatrix 的“权重”参数:
xgmat <- xgb.DMatrix(data, label = label, weight = weight, missing = -999.0)

此外,在 param 列表中,作者有: "scale_pos_weight" = sumwneg / sumwpos,

所以 scale_pos_weightsumneg 的函数,weighta previously defined weight (column 32) 的函数,weight <- as.numeric(dtrain[[32]]) * testsize / length(label)weight 的函数。所以我很困惑。
  • 作者在下面这行做了什么: xgb.DMatrix
  • sum_pos_weight 和 ojit_code 中设置 ojit_code 有什么区别?
  • 最佳答案

    当你设置
    xgmat <- xgb.DMatrix(data, label = label, weight = weight, missing = -999.0)weight 应该是与您的数据行相对应的向量

    例如,如果您有以下数据:

      A B C
    1 1 1 1
    2 2 2 2
    

    您需要将 weight 设置为 2 个权重的向量
    weight <- c(1, 2)
    

    因此,第一个事件的权重为 1,第二个事件的权重为 2。你问自己为什么好?假设事件 1 发生了 1 次,事件 2 发生了 2 次,您希望共同响应权重特别提到事件发生的时间。

    以下是使用权重的更多示例:
  • 如果你想让最近的事件有更多的“值(value)”
  • 您对数据行的置信度。您将所有权重设置为 0 到 1 之间,权重将代表您对该数据的确定程度。例如,如果 weight = 0.88 你给了那一行 88% 的置信度
  • 如果您有重复的事件。而不是创建更多的行,你可以设置一次,并给他们一个权重作为他们重复的数字
  • scale_pos_weight 通常在您有“不平衡数据”时使用。例如,假设您有一个分类问题,其中 5% 的数据为 1,95% 的数据为 0,您希望为每个 正值 “事件”赋予更多权重。所以你可以设置 scale_pos_weight = 19 (或者如作者所写: sumneg/sumpos )

    至于“作者”重新定义权重。如果没有完整的代码,我无法知道他在那里做了什么,但我认为他正在对权重进行某种标准化。

    关于machine-learning - xgb.DMatrix 中的权重参数和超参数列表中的 scale_pos_weight 之间的区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49534974/

    10-12 19:44