运行多臂老虎机优化
运行多臂老虎机优化
如何在云眼灰度发布(特性标帜)AB实验中运行多臂老虎机优化。
开发者可能希望运行一个测试,重点是尽可能提高版本的转化次数,而不是找到最有可能始终优于基线的变体。与 A/B 测试相比,多臂老虎机 (MAB) 优化是一种不同类型的实验,因为它使用强化学习将流量分配给表现良好的变体,同时将较少的流量分配给表现不佳的变体。
⚠
️重要事项
MAB 优化不会生成统计显著性。相反,该算法会将流量推送到转化次数最多的变体;变体性能的原因并不重要。
MAB 用于优化,而不是实验。人与用户游测试最适合在简短的临时体验(例如标题测试或假日周末促销)期间最大限度地提高转化量。_切勿_将 MAB 检验用于探索性假设或变异选择。
MAB的主要目标是回答:_哪种变体为我们带来_最大的奖励?其中“最大的奖励”是最高的收入或最多的转化。有关 MAB 的详细信息,请参阅如何通过多臂老虎机优化最大化提升力。
最佳用例
以下情况可能比传统的 A/B 实验更适合多臂老虎机优化:
- 促销和优惠。– 在其网站上销售消费品的用户通常专注于提高转化率。实现此目的的一种方法是提供限时运行的特别促销活动,因此更改不会是永久性的,并且 MAB 优化将在促销期间向效果不佳的变体发送更多流量,向效果不佳的变体发送更少的流量。
- 标题测试。– 标题是短暂的内容,在固定时间后会失去相关性。如果标题实验达到统计显著性所需的时间与标题的生命周期一样长,那么从实验中获得的见解就无关紧要。因此,MAB 优化可让开发者在不平衡实验运行时间和标题的自然生命周期的情况下最大限度地发挥影响力。
- 网络研讨会。– 可以通过尝试几种不同变体的号召性用语来注册网络研讨会,从而提高网络研讨会或其他活动的注册量。
有关云眼中 MAB 的算法详细信息,请参阅支持文档。
设置概述
要配置 MAB,请执行以下操作:
(先决条件)创建标帜。
(先决条件)处理用户标识。
在优化应用程序中创建和配置 MAB 规则。
如果尚未这样做,请通过灰度发布(特性标帜)在应用程序的代码库中实现优化功能实验 SDK 的 Decide 方法。
在开发环境中测试 MAB 规则。请参阅测试和故障排除。
放弃任何测试用户事件,并在生产环境中启用 MAB 优化规则。
在云眼应用程序中创建优化
要在 云眼 应用程序中创建新的优化,请执行以下操作:
转到“标帜”,选择你的标帜,然后选择你的环境(“开发”或**“生产”**)。
单击添加规则,然后选择多臂老虎机。
- 配置 MAB 规则:
- (可选)搜索并添加受众群体。要创建访问群体,请参阅目标访问群体。受众群体按照您拖放的顺序进行评估。可以选择是将每个用户匹配到任何受众群体条件,还是匹配所有受众群体条件。
- 设置**“包含的百分比”**滑块,以分配要加入实验的受众群体的百分比。
- 根据跟踪的用户事件添加指标。请参阅创建事件以创建和跟踪事件。有关选择指标的更多信息,请参阅选择指标。
- 选择要优化的变体。与 A/B 实验不同,您无需与基线实验进行比较,因为统计显著性不是通过 MAB 优化计算的。请参阅为什么 MAB 不使用基线。
- (可选)将 MAB 添加到互斥组。
- 单击保存。
📘 注意
如果计划在开始实验后更改流量分配,请实现用户配置文件服务 UserProfileService。请参阅确保一致的用户分桶。此外,如果计划使用统计信息加速器,请创建用户配置文件服务。
- 打开标帜****。
如果已在应用程序的代码库中实现了灰度发布(特性标帜),则无需进一步配置即可进行标帜传递。如果没有,请在代码中实现 Decide 方法调用,以启用或禁用用户的标帜:
// Decide if user sees a feature flag variation let user = eyeofcloud.createUserContext(userId: "user123", attributes: ["logged_in":true]) let decision = user.decide(key: "flag_1") let enabled = decision.enabled
// Decide if user sees a feature flag variation user := eyeofcloud.CreateUserContext("user123", map[string]interface{}{"logged_in": true}) decision := user.Decide("flag_1", nil) enabled := decision.Enabled
# Decide if user sees a feature flag variation user = eyeofcloud.create_user_context("user123", {'logged_in': True}) decision = user.decide("flag_1") enabled = decision.enabled
// Decide if user sees a feature flag variation $user = $eyeofcloud_client->createUserContext('user123', ['logged_in' => true]); $decision = $user->decide('flag_1'); $enabled = $decision->getEnabled();
# Decide if user sees a feature flag variation user = eyeofcloud_client.create_user_context('user123', {'logged_in' => true}) decision = user.decide('flag_1') enabled = decision.enabled
// Decide if user sees a feature flag variation var user = eyeofcloud.CreateUserContext("user123", new UserAttributes { { "logged_in", true } }); var decision = user.Decide(key: "flag_1"); var enabled = decision.Enabled;
// Decide if user sees a feature flag variation 云眼UserContext user = eyeofcloud.createUserContext("user123", new HashMap<String, Object>() { { put("logged_in", true); } }); 云眼Decision decision = user.decide("flag_1"); Boolean enabled = decision.getEnabled();
// Decide if user sees a feature flag variation var user = eyeofcloudClient.createUserContext('user123', { logged_in: true }); var decision = user.decide('flag_1'); var enabled = decision.enabled;
// Decide if user sees a feature flag variation var decision = useDecision('flag_1', null, { overrideUserAttributes: { logged_in: true }}); var enabled = decision.enabled;
// Decide if user sees a feature flag variation var user = await flutterSDK.createUserContext("user123"); var decisionResponse = await user!.decide("flag_1"); var decision = decisionResponse.decision; var enabled = decision!.enabled
有关更详细的示例,请参阅以下内容。
- 安卓示例用法
- Go 示例用法
- C# 示例用法
- Flutter示例用法
- Java 示例用法
- Javascript示例用法
- 节点示例用法
- PHP 示例用法
- Python示例用法
- React示例用法
- Ruby示例用法
- Swift示例用法
云眼灰度发布(特性标帜)AB实验使用 Decide 方法调用来确定用户是否符合投放规则的条件以及他们收到的变体。云眼灰度发布(特性标帜)AB实验 SDK 允许为不同的标帜规则重用确切的标帜实现。
请记住,用户在被存储到规则的变体之前,会按顺序评估规则集中的所有规则。请参阅创建灰度发布(特性标帜)。