【问题标题】:How does feature bits work in vowpal wabbit特征位如何在 vowpal wabbit 中工作
【发布时间】:2015-12-04 19:52:10
【问题描述】:

我对 vowpal wabbit 比较陌生,想了解一下 -b 参数(特征表中的特征位)。

我的训练数据是这样的。总共有大约100万字。

1 | a = "word" b ="word131232" c="word1233" d = "word123124" e = "word23145"

但是,每行只有 5 个特征。我应该使用多少位?我尝试运行它,似乎随着示例数量的增加,功能集的数量似乎也在增加。我似乎不明白为什么会这样。

【问题讨论】:

    标签: hash parameters vowpalwabbit bit-depth


    【解决方案1】:

    如果您使用-b 18(这是默认值),这些特征将被散列到一个包含 2^18 个项目的表中,因此如果您的数据集中唯一特征的数量接近 2^18(甚至更高) ),你应该增加参数-b,这样就不会有那么多hash冲突了。没有简单的方法来检测碰撞次数,但通常的做法是调整参数-b 以获得最佳渐进式验证损失(如果您使用更多通道,则为保持损失)。当然,这也取决于您机器上的可用内存。

    1 | a = "word" b ="word131232" c="word1233" d = "word123124" e = "word23145"

    请注意,此示例是错误的(不是您想要的),因为 = 周围有空格。等号没有特殊含义(与用于分隔特征值的冒号不同)。功能名称中不能包含空格。无需将功能名称括在引号中。所以这个例子应该是这样的

    1 | word word131232 word1233 word123124 word23145
    

    如果前缀 a、b、c、d、e 有一些特殊含义(即 a=word42 应该是与 b=word42 不同的特征),您可以使用:

    1 | a=word b=word131232 c=word1233 d=word123124 e=word23145
    

    如果你的所有单词都已经映射到整数(在 0-2^b 范围内),你可以直接将它们用作特征名称,并且不会进行哈希处理(除非你指定 --hash=all):

    1 | 0 131232 1233 123124 23145
    

    请参阅wiki page about input format

    功能集的数量似乎在增加

    在进度报告中(默认为每 2^x 个示例),在最后一列可以看到current features,这是当前示例的特征数(包括常数特征和二次/三次/. .. 功能,如果你使用它们)并且它不应该增加(除非你有这样奇怪的数据)。

    在最终报告中,vw 打印 total feature number,这是每个示例的平均特征数乘以示例数乘以通过次数(所以它不是数据集中的独特特征)。

    【讨论】:

      猜你喜欢
      • 2014-12-08
      • 2017-10-07
      • 2015-04-22
      • 2020-10-28
      • 2017-08-23
      • 2018-01-20
      • 2014-10-26
      • 2020-11-07
      • 2017-10-09
      相关资源
      最近更新 更多