在守护程序模式下 运行 时,如何从 Vowpal Wabbit 获取原始预测 (-r)?

How do I get the raw predictions (-r) from Vowpal Wabbit when running in daemon mode?

使用下面的方法,我能够将原始预测和最终预测都作为文件获得:

cat train.vw.txt | vw -c -k --passes 30 --ngram 5 -b 28 --l1 0.00000001 --l2 0.0000001 --loss_function=logistic -f model.vw --compressed --oaa 3

cat test.vw.txt | vw -t -i model.vw --link=logistic -r raw.txt -p predictions.txt

但是,当我 运行 VW 作为守护程序时,我无法获得原始预测:

vw -t -i model.vw --daemon --port 26542 --link=logistic

我是否可以传递特定参数或参数来获得原始预测?我更喜欢原始预测,而不是最终预测。谢谢

--raw_predictions 是一种 hack(语义取决于使用的缩减)并且在 --daemon 模式下不受支持。 (像 --output_probabilities 这样的东西会很有用而且不难实现,它可以在守护进程模式下工作,但到目前为止还没有人有时间实现它。)

作为变通方法,您可以在管道中 运行 VW,因此它读取标准输入并将概率写入标准输出:

cat test.data | vw -t -i model.vw --link=logistic -r /dev/stdout | script.sh

在支持 /dev/stdout(和 /dev/stderr)的系统上,您可以试试这个:

vw -t -i model.vw --daemon --port 26542 --link=logistic -r /dev/stdout

守护程序会将原始预测写入标准输出,在本例中,标准输出最终与本地主机端口 26542 位于同一位置。

行的相对顺序是有保证的,因为每个示例中处理不同打印的代码(例如非原始与原始)始终是连续的。

November 2015以来,获得概率的最简单方法是使用--oaa=N --loss_function=logistic --probabilities -p probs.txt。 (或者如果您需要标签相关的功能:--csoaa_ldf=mc --loss_function=logistic --probabilities -p probs.txt。)

--probabilities 也可以与 --daemon 一起使用。应该不再需要使用 --raw_predictions.

根据 https://github.com/VowpalWabbit/vowpal_wabbit/issues/1118 你可以尝试在命令行中添加 --scores 选项: vw --scores -t -i model.vw --daemon --port 26542

它对我的 oaa 模型有帮助。