我正在尝试使用Vowpal Wabbit进行简单的多类分类,但尽管阅读了每个可用的示例和stackoverflow帖子,但它仍然无法正常工作。 这就是我的训练文件train.vw看起来像[大约60k行,甚至分发类示例]:
1:0.0 2:1.0 3:1.0 4:1.0 5:1.0 6:1.0 7:1.0 8:1.0 9:1.0 ex1|f 1:1 2:0 3:0 4:0 5:0 ... 100:0
这是我的测试文件test.vw看起来像[> 100k示例]:
1 2 3 4 5 6 7 8 9 ex1|f 1:1 2:0 3:0 4:0 5:0 ... 100:0
我使用 csoaa ,所以我调用这样的训练:
vw -d train.vw --csoaa 9 -f data.model -p train.pred
train.pred包含正确标记的示例。
然后我这样测试:
vw -t -i data.model train.vw -p train.predict -r train.raw
有趣的是,train.predict包含
9.000000 ex1
9.000000 ex2
9.000000 ex3 [etc]
在test.vw上进行测试时也是如此。
如果你看一下train.raw,你确实看到标签9到目前为止的概率最高:
1:4.466 2:2.54384 3:2.00479 4:1.4716 5:5.43068 6:4.33557 7:0.725791 8:4.04874 9:-2.10407 ex1
1:6.74119 2:3.91698 3:5.75727 4:3.05082 5:5.17448 6:2.04901 7:3.54167 8:2.57396 9:-2.72631 ex2
我的问题是:为什么会发生这种情况,我需要做些什么才能确保为测试示例分配合理的标签?
我见过很多人遇到类似的问题,但通常会使用不正确的输入格式。
我正在使用Vowpal Wabbit v7.10.1。
非常感谢你的帮助,
克里斯