我正在尝试使用 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。
非常感谢你的帮助,
克里斯