我应该为 Vowpal Wabbit 中的训练和测试指定相同的二次特征吗?

Should I specify the same quadratic features for training and testing in Vowpal Wabbit?

我 运行 我的 VW 模型处于测试模式(使用 -t 标志)和 -q SE SZ DR,其中 S, E, Z, D, R 是我的命名空间。然后我在诊断打印输出中遇到以下警告:

WARNING: model file has set of {-q, --cubic, --interactions} settings stored, but they'll be OVERRIDEN by set of {-q, --cubic, --interactions} settings from command line.

所以问题是:在创建二次特征时,我是否应该在 testing 时在 -q 标志后指定与用于 training 相同的名称空间

起初,我决定是的,我最好这样做,否则:(a) 将不会创建二次特征,并且在测试中将忽略它们的权重; (b) 或者它们将被创建但散列到与训练集中不同的桶中。这两种方式都会降低性能,这就是我的想法。但是前面提到的警告让我怀疑。那么大众汽车在这种情况下是如何运作的呢?

如警告所述,模型文件中已存储(持久化)的选项不应在 command-line 上重复(或更改)。

换句话说:如果您使用 -q XY ... 交互进行训练,这些交互已经存储在模型中。它们在启动时加载模型时被初始化(使用 -i model_file),因此没有理由(重新)将它们包含在命令行中。

并非所有命令行选项都是 model-persistent:例如,默认情况下,loss-function (--loss_function ...) 未存储在模型中,因此如果您 运行 一个回归,你可以用每个 test-run 来改变 loss-function。一个非常有用的功能。

您始终可以通过使用 --readable_model file_name 创建 "readable model" 并查看其 header(前几行)来判断模型中保留了哪些选项。