Machine learning 我是否应该为Vowpal Wabbit中的培训和测试指定相同的二次特征?

Machine learning 我是否应该为Vowpal Wabbit中的培训和测试指定相同的二次特征?,machine-learning,feature-selection,vowpalwabbit,Machine Learning,Feature Selection,Vowpalwabbit,我在测试模式下运行我的VW模型(使用-t标志),使用-q SE SZ DR,其中S,E,Z,D,R是我的名称空间。然后,我在诊断打印输出中遇到以下警告: 警告:模型文件存储了一组{-q,--cubic,--interactions}设置,但它们将被命令行中的一组{-q,--cubic,--interactions}设置覆盖。 所以问题是:当创建二次特征时,我是否应该在测试时在-q标志后指定与用于训练的名称空间相同的名称空间 首先,我决定是的,我最好这样做,因为否则:(a)要么不会创建二次特征,要

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

警告:模型文件存储了一组{-q,--cubic,--interactions}设置,但它们将被命令行中的一组{-q,--cubic,--interactions}设置覆盖。

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


首先,我决定是的,我最好这样做,因为否则:(a)要么不会创建二次特征,要么在测试中忽略它们的权重;(b) 或者,它们将被创建,但散列到不同于训练集中的桶中。这两种方式都会降低性能,我就是这么想的。但上述警告让我怀疑。那么VW在这种情况下是如何工作的呢?

正如警告所述,已经存储(持久化)在模型文件中的选项不应该在命令行上重复(或更改)

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

并非所有命令行选项都是模型持久性的:例如,默认情况下,丢失函数(
--loss\u function…
)不存储在模型中,因此如果运行回归,可以在每次测试运行时更改丢失函数。一个非常有用的特性

通过使用
--readable_model file_name
创建一个“readable model”,并查看其标题(前几行),您始终可以知道哪些选项被持久保存在模型中