Vowpal Wabbit哈希冲突在正则化方面比L1更好

时间:2019-02-20 11:21:30

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

我有VW分类模型,我想检查特征数量和哈希冲突数量。我对其进行了训练,并在不同的数据集上对其进行了测试。数据集包含超过40万个特征,因此,在18bit的大众空间下,仅保存260k就不会发生碰撞。

然后,为了检查它,我创建了两个可读模型:一个带有参数--read_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特征的模型时,我非常惊讶,它的结果仍然比具有相同哈希数的18bit模型的结果差。是0.901,0.584,0.552。

这使我相信,即使对于很大一部分功能,随机哈希冲突也比L1正则化更像是正则化器。这怎么可能?

1 个答案:

答案 0 :(得分:2)

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

您所经历的事情是过度拟合的强烈信号。详细信息如下。

这怎么可能?

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

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

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

特定折扣与随机折扣

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

完全与部分混合折扣

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

折扣的方向和幅度

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

此外,如果单独考虑某项功能,则可能会是一个不好的功能,但与其他功能结合使用时,实际上会有所帮助。一个例子是将两个不良特征混合在一起,一个具有正的权重,另一个具有负的权重。通过彼此部分抵消,它们可能会导致看起来不错的功能,该功能在某种程度上与目标标签相关。 IOW:功能融合有时可以将坏效果变成好效果。

打折如何帮助(或伤害)模型?

这在机器学习中非常普遍,尤其是在大数据问题中。特征选择,修剪或融合是否会提高精度取决于数据。

如果碰巧不重视“不良”功能(与训练数据一致但对推广没有帮助的功能),则会使模型变得更好。但是,如果我们不考虑良好的,通用化的功能,则会使模型在测试中显得更糟(样本数据不足)。

相关:随机折减特征的想法,甚至可能是潜在的重要特征,已被证明是深度神经网络(NN)中的一种强大且有益的技术,该技术被称为 dropout 辍学已成为避免过度适应深度学习的去严格方法。

底线

创建好的模型需要实践。当您具有大量特征时,可能会由于随机效应(较小和/或较大的权重)而过度拟合。需要避免这种过度拟合。

有很多方法可以避免过度拟合。正则化只是减少过度拟合的一种特定方法。有时,一种更有意义的随机方法可能会有益于总体效果,这种方法会影响所有功能,而不仅仅是权重较低的功能。

发生这种情况时,这暗示着功能的数量可能太大,您可能过度安装了它们。

通常,我会怀疑任何模型,其中用于训练的示例(数据集行)的数量不会比要素(数据集的不同列)的数量大很多。如果您有成千上万(10 ^ 6)个特征,则可能应该有10 ^ 12(万亿个)示例,以避免过度拟合。

我将使用大量功能进行的另一件事是随机调整示例的顺序,并混合多个模型以确保特定顺序不会导致过拟合。由于学习率下降,在线学习往往会使早期的例子比后面的例子更重。