在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.

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

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


回答:

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

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

并非所有命令行选项都是模型持久化的:例如,默认情况下,损失函数(--loss_function ...)不会存储在模型中,因此如果你运行回归,你可以每次测试运行时更改损失函数。这是一个非常有用的功能。

你可以通过创建一个“可读模型”使用--readable_model file_name并查看其头部(前几行)来始终了解哪些选项在模型中被持久化。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注