【问题标题】:Vowpal Wabbit hash collision works better than L1 as regularizationVowpal Wabbit 哈希冲突作为正则化比 L1 效果更好
【发布时间】:2023-03-06 10:31:02
【问题描述】:

我有 VW 分类模型,我想检查它的特征数量和哈希冲突的数量。我对其进行了训练并在不同的数据集上对其进行了测试。数据集包含超过 400k 的特征,因此使用 18 位 VW 空间,可以仅保存 260k 而不会发生冲突。

然后,为了检查它,我创建了两个可读模型:一个带有参数--readable_model,用于获取所有哈希的数量,第二个带有参数--invert_hash,用于获取所有特征的数量,即使是那些处于哈希冲突中的特征.有 425k 特征和 208k 哈希(不是 260k,因为我使用了一些带有 --keep 参数的过滤,据我了解,vw 保存到哈希表也忽略了命名空间)。然后我用 ROC_AUC、MCC 和平均精度测量了模型的质量。结果分别为 0.903、0.564、0.591。

如您所见,哈希冲突很大,因此我决定将 -b 参数值设置为 24 来增加位空间。然后我再次训练模型。现在,有 425k 特征,425k 哈希 = 没有冲突。但是,相同指标的结果更差 (0.902,0554,0.587)。

现在一切看起来都存在 24 位空间的严重过拟合,而 18 位更好地防止模型过拟合 - 这很好地解释了为什么在 18 位模型的测试数据集上结果更好。

但后来我决定使用 L1 正则化减少 24 位模型的特征数量。我玩了一段时间,当我得到具有 208k 哈希和 208k 特征的模型时,我非常惊讶,它的结果仍然比具有相同哈希数的 18 位模型的结果更差。是 0.901,0.584,0.552。

这让我相信,随机哈希冲突,即使对于大部分特征,也比 L1 正则化更有效。这怎么可能?

【问题讨论】:

    标签: machine-learning hash vowpalwabbit hash-collision regularized


    【解决方案1】:

    这里发生了什么(底线)?

    您所经历的是过度拟合的强烈迹象。详情如下。

    这怎么可能?

    正则化和随机哈希冲突都是模型特征子集的折扣机制。他们选择了一些特征,并让它们在模型中变得不那么重要(或完全打折扣)。

    但这就是相似之处的结束。这两种折扣机制在以下方面有很大不同:

    • 他们打折的功能子集(特定与随机)
    • 折扣方法(完全与部分混合)
    • 折扣方向和幅度

    特定折扣与随机折扣

    L1 正则化 (--l1 ...) 选择非常具体的权重(最接近零的权重与标准),而随机哈希冲突“选择”随机权重,其中一些可能很大。

    完全与部分混合折扣

    L1 正则化完全修剪/删除它选择的权重,而随机哈希冲突创建与其他特征的混合。在某种意义上(效果混合)混合与 vw-q <XY> 的功能交叉相似,但并不完全相同。

    折扣的方向和幅度

    与通过权重绝对值进行的特定选择不同,随机选择可以影响任何数量级的权重。

    此外,单独考虑一个特性可能是一个坏特性,但与另一个特性结合考虑时,它实际上是有贡献的。一个例子是两种不良特征的混合,一种具有正权重,另一种具有负权重。通过部分地相互抵消,它们可能会产生一个与目标标签有些相关的看似不错的特征。 IOW:特征混合有时可以将坏效果变成好效果。

    折扣如何帮助(或伤害)模特?

    这在机器学习中很常见,尤其是在大数据问题中。特征选择、修剪或混合是否能提高准确性取决于数据。

    如果它碰巧忽略了“坏”特征(与训练数据一致但无助于泛化的特征),它会使模型变得更好。但是,如果我们忽略一个好的、泛化能力强的特征,它会使模型在测试中显得更糟(样本数据外)。

    相关:在深度神经网络 (NN) 中,随机打折或丢弃特征(甚至是可能重要的特征)的想法已被证明是一种强大且有益的技术,它被称为 dropout . dropout 已成为深度学习中避免过度拟合的一种规范方法。

    底线

    创建好的模型需要练习。当您有大量特征时,由于随机效应(小权重和/或大权重)导致的过度拟合是可能的。需要避免这种过度拟合。

    有很多方法可以避免过度拟合。正则化只是减少过拟合的一种特定方法。有时,一种更重要的随机方法会影响所有特征,而不仅仅是那些低权重的特征,可能总体上是有益的。

    发生这种情况时,暗示特征数量可能过多,您可能过度拟合它们。

    一般来说,我会怀疑任何模型,其中用于训练的示例(数据集行)的数量不会比特征数量(不同的数据集列)大多少。如果您有数十万 (10^6) 个特征,您可能应该有 10^12 (万亿) 个示例以避免过度拟合。

    我会对大量特征做的另一件事是随机打乱示例的顺序,并混合多个模型以确保特定顺序不会导致过度拟合。由于学习率衰减,在线学习往往会优先考虑早期示例而不是后期示例。

    【讨论】:

      猜你喜欢
      • 2019-06-30
      • 2015-12-21
      • 2015-11-14
      • 1970-01-01
      • 2014-08-31
      • 2016-07-30
      • 1970-01-01
      • 2018-01-20
      • 2022-09-30
      相关资源
      最近更新 更多