【问题标题】:Vowpal Wabbit varinfo and ngrams : non-existent combinationsVowpal Wabbit varinfo 和 ngrams:不存在的组合
【发布时间】:2014-10-22 05:48:39
【问题描述】:

我正在尝试使用 vw 来查找预测某人是否会打开电子邮件的单词或短语。如果他们打开电子邮件,则目标为 1,否则为 0。我的数据如下所示:

1 |A this is a test
0 |A this test is only temporary
1 |A i bought a new polo shirt
1 |A that was a great online sale

我将它放入一个名为“test1.txt”的文件中并运行以下代码来执行 2 的 ngrams 并输出变量信息:

C:\~\vw>perl vw-varinfo.pl -V --ngram 2 test1.txt >> out.txt

当我查看输出时,有一些我在原始数据中看不到的二元组。这是一个错误还是我误解了什么。

输出:

FeatureName            HashVal   MinVal   MaxVal    Weight   RelScore
A^a                     239656     0.00     1.00   +0.1664    100.00%
A^is                      7514     0.00     1.00   +0.0772     46.38%
A^test                   12331     0.00     1.00   +0.0772     46.38%
A^this                  169573     0.00     1.00   +0.0772     46.38%
A^bought                245782     0.00     1.00   +0.0650     39.06%
A^i                     245469     0.00     1.00   +0.0650     39.06%
A^new                    51974     0.00     1.00   +0.0650     39.06%
A^polo                   48680     0.00     1.00   +0.0650     39.06%
A^shirt                  73882     0.00     1.00   +0.0650     39.06%
A^great                 220692     0.00     1.00   +0.0610     36.64%
A^online                147727     0.00     1.00   +0.0610     36.64%
A^sale                  242707     0.00     1.00   +0.0610     36.64%
A^that                  206586     0.00     1.00   +0.0610     36.64%
A^was                   223274     0.00     1.00   +0.0610     36.64%
A^a^bought              216990     0.00     0.00   +0.0000      0.00%
A^bought^great            7122     0.00     0.00   +0.0000      0.00%
A^great^i               190625     0.00     0.00   +0.0000      0.00%
A^i^is                   76227     0.00     0.00   +0.0000      0.00%
A^is^new                140536     0.00     0.00   +0.0000      0.00%
A^new^online             69117     0.00     0.00   +0.0000      0.00%
A^online^only           173498     0.00     0.00   +0.0000      0.00%
A^only^polo              51059     0.00     0.00   +0.0000      0.00%
A^polo^sale             131483     0.00     0.00   +0.0000      0.00%
A^sale^shirt            191329     0.00     0.00   +0.0000      0.00%
A^shirt^temporary        81555     0.00     0.00   +0.0000      0.00%
A^temporary^test         90632     0.00     0.00   +0.0000      0.00%
A^test^that              13689     0.00     0.00   +0.0000      0.00%
A^that^this             127863     0.00     0.00   +0.0000      0.00%
A^this^was               22011     0.00     0.00   +0.0000      0.00%
Constant                116060     0.00     0.00   +0.1465      0.00%
A^only                   62951     0.00     1.00   -0.0490    -29.47%
A^temporary              44641     0.00     1.00   -0.0490    -29.47%

例如,^bought^great 从未实际出现在任何原始输入行中。我是不是做错了什么?

【问题讨论】:

    标签: vowpalwabbit


    【解决方案1】:

    这是 vw-varinfo 中的一个错误。

    这可以通过单独运行vw 和--invert_hash 来验证:

    $ vw --ngram 2 test1.txt --invert_hash train.ih
    
    $ grep '^bought^great' train.ih
    # no output
    

    快速的部分解决方法是将权重为 0.0 的所有特征视为高度可疑的,并且可能是虚假的。不幸的是,也缺少一些功能,因为vw-varinfo 对--ngram 一无所知。

    我真的需要重写vw-varinfo。 vw 自从编写了 vw-varinfo 以来发生了很大变化,加上 vw-varinfo 的编写并不理想,重复了 vw 本身已经存在的许多跨功能逻辑。我心目中的新实现应该更高效,更不容易受到此类错误的影响。

    由于更紧急的事情,该项目被搁置。希望今年能找到一些时间来纠正这个问题。

    无关提示:由于您正在进行二进制分类,因此应在 {-1, 1} 而不是 {0,1} 中使用标签,并使用 --loss_function logistic 以获得最佳结果。

    【讨论】:

      猜你喜欢
      • 2018-01-20
      • 2015-12-10
      • 2016-02-08
      • 2013-12-15
      • 2020-11-11
      • 2015-01-06
      • 2017-10-09
      • 1970-01-01
      • 2016-02-21
      相关资源
      最近更新 更多