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

时间:2015-06-10 18:47:04

标签: machine-learning vowpalwabbit

使用以下内容,我能够将原始预测和最终预测作为文件获取:

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

我是否有特定参数或参数的传递来获取原始预测?我更喜欢原始预测,而不是最终预测。感谢

4 个答案:

答案 0 :(得分:2)

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

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

守护进程将原始预测写入标准输出,在这种情况下最终与localhost端口26542位于同一位置。

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

作为一种解决方法,您可以在管道中运行VW,因此它会读取stdin并将概率写入stdout:

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

答案 3 :(得分:0)

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

它对我的oaa模型有帮助。