微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

与 Vowpal Wabbit Contextual Bandit 训练数据格式的混淆

如何解决与 Vowpal Wabbit Contextual Bandit 训练数据格式的混淆

我是 Vowpal Wabbit 的新手,正在研究多臂老虎机模型,为注册弹出窗口推荐不同的 CTA。我已经在主站点上完成了演练,但对于 --cb_explore_adf 版本的训练数据应该是什么样子,我有点困惑。到目前为止,对于常规版本(带有设置的操作总数),数据如下所示:

action:cost:probability | features

这是有道理的,但是当你使用 adf 版本时,它变成了:

| a:1 b:0.5
0:0.1:0.75 | a:0.5 b:1 c:2
 
shared | s_1 s_2
0:1.0:0.5 | a:1 b:1 c:1
| a:0.5 b:2 c:1

我已经多次阅读文档,但我仍然不明白这是如何工作的。

我认为一个类似于我的数据示例,说明如何将其调整为上述版本会很棒。

我的用例示例: 2 个动作:1 和 2 3个特点:语言、国家、喜爱的运动

我看过的一些文档:

  1. https://vowpalwabbit.org/tutorials/cb_simulation.html

[编辑]:

玩弄它,我用这个输入创建了一个 train.txt:

shared |user language=en nation=CAN
|action arm=10-OC-ValueProp10 
0:0:0.5 |action arm=11-OC-ValueProp11 

shared |user language=it nation=ITA
|action arm=10-OC-ValueProp10 
0:0:0.5 |action arm=11-OC-ValueProp11 

shared |user language=it nation=ITA
0:0:0.5 |action arm=10-OC-ValueProp10 
|action arm=11-OC-ValueProp11 

shared |user language=it nation=ITA
0:0:0.5 |action arm=10-OC-ValueProp10 
|action arm=11-OC-ValueProp11 

但是当我运行这个时:

vw = pyvw.vw("-d full_data.txt --cb_explore_adf -q ua --quiet --epsilon 0.2")
vw.predict("|user language=en nation=USA")

我得到一个没有意义的 [1.0]。我确定我做错了什么。

解决方法

ADF 代表动作相关特征。因此,每个事件/示例都由多行组成,第一行是一组可选的共享功能(用 shared 标记)。

除共享行外,每一行对应一个动作。

因此,当您向大众提供输入时:

|user language=en nation=USA

您要求仅对 1 个动作进行预测(因为没有共享线),这就是为什么您要返回一个 PMF(概率质量函数,或选择每个不同项目的概率),它只是 [1.0 ]。这表明应该以 1.0 的概率选择单个动作。但是,阅读功能看起来好像您实际上正在传递共享功能应该是什么。

对于每个预测,您需要为每个动作提供所有特征,因为基本上动作本身被定义为其特征集 (ADF)。

您的预测数据应该类似于(注意省略了标签):

shared |user language=it nation=ITA
|action arm=10-OC-ValueProp10 
|action arm=11-OC-ValueProp11 

VW 然后会发出看起来像 [0.9,0.1] 的东西。然后,您应该从这个 PMF 中采样(以允许探索)以确定哪个是所选操作。

训练数据

训练数据的格式有点混乱,因为从非 adf 中重复使用了相同的格式。标签的 action 部分实际上是未使用的,因为 标签必须在行上作为它所要执行的操作。

shared |user language=en nation=CAN
|action arm=10-OC-ValueProp10 
0:0:0.5 |action arm=11-OC-ValueProp11 

在上面的例子中,它说这里的动作二的成本为 0,当它被选中时,选择它的概率是 0.5(PMF 中的值)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。