你能帮我理解GLM模型中的weights_column参数,例如在H2o中吗?

时间:2018-06-12 04:54:27

标签: r h2o

我想介绍一些偏见。我有n-risk factors(预测因子),但根据我收集的证据!我认为Risk factors中的一个比其他的更相关。有一个weights_column参数(请参阅description),但我不清楚如何使用它以及它是否可以用于我的目的。

文档说明(版本3.20.0.1):

此选项指定在确定权重时要使用的训练框架中的列。权重是每行观察权重,不会增加数据框的大小。这通常是行重复的次数,但也支持非整数值。在训练期间,由于较大的损失函数前因子,具有较高权重的行更重要。

我不知道它是否适合我的目的。我有以下问题/评论,这将有助于我了解如何使用它,但也有助于改进下一版本的文档:

  1. "权重是每行观察" ,我期望按列(我们在特定列中定义权重)。在我看来,该算法正在添加虚拟行,但它表示不会增加行数。 i)添加这些虚构行的逻辑是什么?(它是另一行或修改行的副本,如果是这样,它是如何被修改的?)

  2. "由于损失函数的前因子较大" ii)在这种情况下它意味着什么? ii)它是否仅适用于loss-function指标? iv)前因素是什么?

  3. v)我们可以指定多个列吗?参数的名称是复数形式,但示例和文档似乎只涉及一列。

  4. 然后下一段说明:"例如,权重2与复制行" 相同,但用户只能指定列名。 vi)我们可以指定权重因子数吗?

    文档中提供的示例没有说明基于问题性质使用此类参数的目的,并且没有比较使用此类参数如何影响结果。 vii)在这种情况下,使用weight列设置此参数的理由是什么?

    例如,使用和不设置weights_column运行脚本我们得到:

    [1] "AUC with weights_column"
    [1] 0.9645522
    [1] "AUC without weights_column"
    [1] 0.9803922
    

    该示例显示了如何使用参数,但不适合看到使用它的好处。

1 个答案:

答案 0 :(得分:1)

我认为这里可能存在一些关于权重的一般使用的混淆。

此处加权以行为单位应用,因此不能用于对变量进行加权。一个示例用例可能是我们有时变数据,我们认为最新数据更像未来样本而不是以前的数据。在这个用例中,我们可以增加最近的样本和减轻最近的样本的重量。

这里重要的一点是它是样本(及其所有特征)的权重,而不是所有样本中的单个特征的权重。

对于您的使用案例,如果您有足够的培训数据,则适当的算法(GBM / RF)可能会使用您认为重要的功能。如果没有,那么这可能表明您所识别的功能并不像您最初想象的那么重要,或者与其他功能高度相关。

如果你仍然想要增加一个特征,那么一个hacky方法就是为同一个特征添加多个虚拟变量到数据框。