如何使用vowpal wabbit进行在线预测(流模式)

1 vowpalwabbit

我正在尝试将Vowpal Wabbit用于具有154个不同类别标签的一个多类别分类任务,如下所示:

  1. 训练有素的大众模型,包含大量数据。
  2. 使用一个专用测试集测试了模型。

在这种情况下,我能够达到> 80%的结果,这很好。但是我目前正在研究的问题是:

我必须复制实时预测方案。在这种情况下,我必须一次传递一个数据点(即文本行),以便模型可以预测值和输出。

我已经尝试了所有我知道但失败的选择。谁能让我知道如何通过将一个数据点与VW命令一起传递而不是作为文件传递来创建实时方案。

ari*_*elf 5

您可以vw用作守护程序:

vw --daemon --port 54321 --quiet -i model_file -t --num_children 1
Run Code Online (Sandbox Code Playgroud)

现在vw加载模型并侦听端口54321(在localhost上)。每次向其发送一行(以换行符结尾的ASCII 10)时,localhost:54321都会在同一个套接字上返回预测,例如:

echo " | your features here..." | netcat localhost 54321
Run Code Online (Sandbox Code Playgroud)

这只是一个例子,通常您会编写一个程序,该程序将在循环中从套接字读取然后从套接字读取,而不是调用netcat

您还可以vw在常规输入/输出和预测模式下调用:

vw --quiet -i model_file -t -p /dev/stdout
Run Code Online (Sandbox Code Playgroud)

并写入(via stdin)和从中读取(via stdout)。关键是您将以相同的顺序为发送的每一行输入获得一行输出。您也可以一次发送N线路,然后回读N响应。请求与响应的顺序相对顺序可以保证得到保留。