我已经计划使用Vowpal Wabbit(大众)的上下文强盗来构建推荐系统。
我有N用户的M(在这种情况下是26)维数字特征,并有反馈日志,其中包含用户点击哪个项目(例如广告)的信息。每个反馈日志的有效操作总数略有不同(约为100~150)。只有来自项(操作)的信息才是其唯一ID。
因此,在这种情况下,我决定使用ADF学习模式(--cb_explore_adf)。但在the tutorial中,大众似乎只关心分类数据类型,而不是数字类型。无论如何,我尝试设置测试数据格式,如下所示。
shared |User feat_0=1.0 feat_1=0.00389094278216362 feat_2=0.004632890224456787 feat_3=0.003936515189707279 feat_4=0.0053831832483410835 ... feat_23=0.4192083477973938 feat_24=0.003969503100961447 feat_25=0.0038898871280252934
|Action item_id=hamny-kU9bbbbbak
|Action item_id=hamny-kU9bcxP9v1
...
|Action item_id=hamny-bbbbbcxP9v
|Action item_id=hamny-k7bbbbbcxd
|Action item_id=hamny-bbbbbbbbbc
|Action item_id=hamny-aaaaaaaaac上面的例子要求CB模型在给定26D用户上下文特征的100个动作中产生pmf(预测)。
在从模型和奖励中获得预测后,训练数据格式将为..
shared |User feat_0=1.0 feat_1=0.00389094278216362 feat_2=0.004632890224456787 feat_3=0.003936515189707279 feat_4=0.0053831832483410835 ... feat_23=0.4192083477973938 feat_24=0.003969503100961447 feat_25=0.0038898871280252934
|Action item_id=hamny-kU9bbbbbak
|Action item_id=hamny-kU9bcxP9v1
...
|Action item_id=hamny-bbbbbcxP9v
0:-1:0.57124 |Action item_id=hamny-k7bbbbbcxd
|Action item_id=hamny-bbbbbbbbbc
|Action item_id=hamny-aaaaaaaaac我不确定它的格式是否正确。但是,当我对CTR运行一些模拟时,我得到了与CB模型几乎相同的结果,而不考虑勘探选项(例如epsilon,bag,softmax等)。
我刚刚在教程函数(run_simulation)中尝试了相同的逻辑。唯一的区别是示例:共享上下文、操作数量和ADF。
发布于 2021-09-01 20:41:39
VW文本格式非常简单。在指定特性时,如果您使用':‘,然后使用浮点型,则允许您指定特性的值。如果':‘后面没有显式的值,则值为1。
因此,当您将一个特征作为feat_1=0.00389094278216362提供时,它是一个值为1的分类特征。这里需要注意的重要一点是,如果该特征字符串的任何部分发生更改,它将导致一个完全不同的特征(整个字符串被散列以确定其索引),因此feat_1=0.00389094278216363 (最后更改的字符)是一个完全不同的特征。这两者之间没有关系。
您可以尝试指定像feat_1:0.00389094278216362这样的值,但我不确定这是否真的有效。也许如果特征与结果之间存在某种线性关系?
您还可以尝试使用四舍五入将特征四舍五入到某个小数位。因此,feat_1=0.00389094278216362可能会变成feat_1=0.004。
我不确定在这里应该做什么背后的理论,但这些是我的想法,你可以尝试经验。
https://stackoverflow.com/questions/68716366
复制相似问题