【问题标题】:How to use vowpal wabbit for online prediction (streaming mode)如何使用 vowpal wabbit 进行在线预测(流模式)
【发布时间】:2015-09-02 04:08:02
【问题描述】:

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

  1. 经过大量数据训练的 VW 模型。
  2. 用一个专用测试集测试了模型。

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

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

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

【问题讨论】:

  • 标题具有误导性。问题不在于将输入数据作为命令行参数传递(例如vw --example "| featureA featureB",这在大众汽车中是不可能的)。它是关于使用大众进行在线预测(流媒体模式)。
  • 谢谢马丁,你是对的。我建议对标题进行编辑。希望得到批准。

标签: vowpalwabbit


【解决方案1】:

您可以使用vw 作为守护进程:

vw --daemon --port 54321 --quiet -i model_file -t --num_children 1

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

echo " | your features here..." | netcat localhost 54321

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

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

vw --quiet -i model_file -t -p /dev/stdout

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

【讨论】:

    猜你喜欢
    • 2015-10-18
    • 2016-01-18
    • 2014-10-06
    • 2016-04-20
    • 2015-08-26
    • 2016-01-05
    • 2014-03-12
    • 2015-04-08
    • 2015-09-29
    相关资源
    最近更新 更多