0

我想测试CB的电子商务任务:个人报价推荐(如“最后一次购买机会”、“相似职位”、“消费者推荐”、“畅销书”等)。我的任务是订购它们(建议列表中更相关的问题更高)。

因此,有 5 种可能的报价。我在不使用任何模型的情况下收集了一些历史数据:上下文(用户和网络会话功能)、操作 ID(我的 5 个优惠之一)、奖励(如果用户点击了此优惠,则为 1,0 - 未点击)。所以我有 N 个用户和 5 个奖励已知的优惠,在我的历史数据中总共有 5*N 行。

前任:

1:1:1 | user_id:1 f1:... f2:... 2:-1:1 | user_id:1 f1:... f2:... 3:-1:1 | user_id:1 f1:... f2:...

这意味着用户 1 看到了 3 个优惠 (1,2,3),第 1 个优惠的成本等于 1(未点击),用户点击了优惠 2 和 3(成本为负 -> 奖励为正) . 概率等于 1,因为显示了所有报价并且我们知道奖励。

全球任务是增加点击率。我想使用这些数据来训练 CB,然后通过探索/开发策略改进模型。我在这个数据中设置概率等于 1(对吗?)。但接下来我想根据奖励设置优惠的顺序。

我应该在大众 CB 中使用这种热启动吗?在不使用 CB 的情况下收集的数据是否可以正常工作?也许您可以针对此数据和任务在 CB 中建议更相关的方法?

非常感谢。

4

1 回答 1

0

如果只有 5 个可能的报价,并且如果您(如所示)具有“我有 N 个用户和 5 个具有已知奖励的报价,在我的历史数据中总共 5*N 行”形式的数据。那么您的历史数据是受监督的多标签数据,并且将应用热启动功能;确保您使用对成本敏感的版本来适应历史数据的多标签方面(即,有多个报价会导致点击)。

在不使用 CB 的情况下收集的数据是否可以正常工作?

因为每个行动奖励都是为数据集中的每个用户指定的,所以您只需确保用户样本代表您关心的人群。

也许您可以针对此数据和任务在 CB 中建议更相关的方法?

第一段以“如果”开头,因为更典型的情况是 1) 有许多可能的报价,以及 2) 用户在历史上只看到过其中的几个。

在这种情况下,您所拥有的是退化的日志记录策略和多个奖励的组合。如果有 k 个可能的操作,但每个用户在历史上只看到 n<=k,那么您可以尝试像您一样为每个用户制作 n 行。从理论上讲,这不一定有效,但在实践中可能会有所帮助。

开箱即用:更改数据

如果您收集的数据是运行现有策略的结果,那么另一种方法是开始随机化该系统做出的决策,以收集符合 CB 的数据集。例如,使用您当前的系统在 96% 的时间内选择“最佳”动作,并在 4% 的时间内随机选择其他 4 个动作之一,并记录概率和奖励(0.96 或 0.01,具体取决于是否被认为是最好的),然后为大众建立一个合适的 CB 式训练集。有了这个,您还可以反事实地估计您当前策略和 vw 生成的策略的价值,并且只有在它获胜时才切换到 vw。

实现最后一段的最快方法是开始使用APS

于 2020-06-15T21:36:22.847 回答