Title: 分流策略 Locale: zh URL: https://sensorswave.com/docs/experiments/targeting-and-allocation/ Description: 深入理解分流机制和策略选择 分流策略决定了如何将用户分配到不同的实验变体,是 A/B 实验的核心机制。本文将深入介绍分流 ID 选择、分流算法原理、基于用户属性的定向分流,以及流量分配的最佳实践。 ## 分流 ID 选择 ### Login ID(登录 ID) **定义**:用户登录后的唯一标识符,通常是业务系统中的用户主键。 **使用场景**: - 电商平台:用户 ID、会员编号 - SaaS 产品:账号 ID、企业 ID - 社交产品:用户 ID、昵称 **优点**: - **跨设备一致**:用户在手机、电脑、平板上看到相同的实验变体 - **长期稳定**:用户注销再登录,依然看到相同的变体 - **用户体验好**:避免用户困惑 **缺点**: - **覆盖范围有限**:只能对已登录用户进行实验 **推荐使用**: - 需要用户登录的产品 - 重要的实验(如结账流程、定价策略) - 跨设备体验要求高的场景 详见 [数据模型](../data-integration/data-model.mdx)。 ### Anonymous ID(匿名 ID) **定义**:标识用户设备或浏览器的唯一 ID,由 SDK 在用户首次访问时自动生成。 **生成与存储**: | 平台 | 生成规则 | 存储方式 | |------|---------|---------| | **Web** | SDK 自动生成 UUID | 存储在 Cookie 中 | | **Android** | SDK 自动生成 UUID | 存储在应用本地存储中 | | **iOS** | SDK 自动生成 UUID | 存储在应用本地存储中 | **优点**: - **覆盖范围广**:包括未登录用户 - **自动管理**:SDK 自动生成和维护 - **无需用户操作**:不需要用户登录 **缺点**: - **设备级别**:同一用户在不同设备上可能看到不同的变体 - **易丢失**:用户清除 Cookie 或应用数据后,会生成新的 Anonymous ID **适用场景**: - 公开网站或内容平台 - 落地页测试 - 未登录用户的体验优化 ### 双 ID 并行机制 用户同时拥有两种 ID,各自独立命中对应 ID 类型的实验,互不干涉: - **Anonymous ID**:从用户首次访问起始终存在,由 SDK 自动生成和维护 - **Login ID**:用户登录后才存在,由业务系统提供 ``` 用户访问(未登录) → 拥有 Anonymous ID (anon_12345) → 可命中所有以 Anonymous ID 为分流 ID 的实验 用户登录 → 同时拥有 Anonymous ID (anon_12345) 和 Login ID (user_67890) → Anonymous ID 实验:继续使用 anon_12345 分流,变体不变 → Login ID 实验:使用 user_67890 分流,命中对应变体 ``` **关键要点**: - 创建实验时需选择分流 ID 类型(Anonymous ID 或 Login ID) - Anonymous ID 类型的实验:所有用户(含未登录)均可命中,登录前后变体一致 - Login ID 类型的实验:仅登录用户可命中,保证跨设备体验一致 - 两种 ID 类型的实验独立分流,同一用户可同时参与两类实验 --- ## 分流算法详解 ### 哈希分流算法 Sensors Wave 使用哈希算法,根据用户的分流 ID 和实验的随机盐值计算哈希值,将用户映射到 10000 个桶(编号 0-9999)中的某一个,再依据流量百分比判定是否命中实验。 **核心特性**: - **确定性**:相同的用户 ID + 实验盐值,始终映射到同一个桶,保证同一用户每次访问看到的变体不变 - **均匀性**:用户在桶中均匀分布,流量分配准确 - **隔离性**:每个实验使用独立的盐值,不同实验之间的分流互不影响 ### 均匀性保证 **流量均匀分布**: - 哈希函数的随机性保证了流量均匀分布 - 50/50 分配时,约 50% 的用户分配到对照组,50% 分配到实验组 **验证方法**: 在实验运行初期,通过实验详情页查看各变体的流量数据,确认进组人数分布符合预期: | 变体 | 进组人数 | 占比 | |------|----------|------| | 对照组 | 5,023 | 50.1% | | 实验组 | 4,977 | 49.9% | 如果分布严重不均(偏差 > 5%),需排查分流条件配置是否正确。 --- ## 基于用户属性的定向分流 定向分流允许您只对特定用户群体进行实验,缩小实验范围。 ### 可用属性 Sensors Wave 支持基于以下属性进行定向分流: #### 用户标识 - **Login ID**:用户登录 ID - **Anonymous ID**:匿名 ID #### 设备属性 - **Operating System**:操作系统(iOS、Android、Windows、macOS) - **OS Version**:操作系统版本(如 iOS 17.2) - **Browser Name**:浏览器名称(Chrome、Safari、Firefox) - **Browser Version**:浏览器版本 - **Device Model**:设备型号(iPhone 15 Pro、Samsung Galaxy S23) #### 地理位置 - **Country**:国家(中国、美国) - **Province**:省份(北京、上海) - **City**:城市(北京、深圳) - **IP Address**:IP 地址 #### 应用属性 - **App Version**:应用版本(1.2.3) #### 功能开关依赖 - **Passes Target Gate**:通过指定功能开关的用户(即该功能开关判定为 true 的用户) - **Fails Target Gate**:未通过指定功能开关的用户(即该功能开关判定为 false 的用户) 通过 Gate 依赖,可以组合功能开关与 A/B 实验,实现更精细的定向。例如:仅对某个功能开关判定为 VIP 用户的人群进行实验。 #### 自定义属性 除以上预置属性外,还支持使用业务自定义属性进行定向。自定义属性需在客户端通过 SDK 上报后方可使用。 完整列表请参考 [预置事件和预置属性](../data-integration/preset-events-and-properties.mdx)。 ### 定向示例 **示例 1:只对 iOS 用户实验** 在控制台配置实验时,添加定向条件: ``` Operating System = "iOS" ``` **示例 2:只对北京的用户实验** ``` City = "北京" ``` **示例 3:只对通过 VIP 功能开关的用户实验** ``` Passes Target Gate = "vip_users_gate" ``` 通过功能开关依赖,可以灵活地将服务端判定逻辑与实验定向结合,无需在客户端硬编码用户属性判断。 --- ## 流量分配最佳实践 ### 双变体实验 **50/50 分配**(推荐): ``` 对照组:50% 实验组:50% ``` **优点**: - 样本量平衡 - 统计功效最高 - 结果最可靠 **适用场景**:大多数 A/B 实验 --- **70/30 分配**(保守策略): ``` 对照组:70% 实验组:30% ``` **优点**: - 降低风险,多数用户使用稳定方案 - 适合高风险实验 **缺点**: - 实验组样本量小,需要更长周期 **适用场景**: - 新功能验证(风险较高) - 核心流程优化(影响面大) ### 多变体实验 **均匀分配**: ``` 对照组:34% 实验组 A:33% 实验组 B:33% ``` **优点**: - 样本量平衡 - 公平对比 **缺点**: - 每组样本量减少,需要更长周期 --- **对照组占多数**: ``` 对照组:50% 实验组 A:25% 实验组 B:25% ``` **优点**: - 降低风险 - 对照组样本量充足 **缺点**: - 实验组样本量小 --- ## 分流常见问题 ### Q:用户看到的变体会变化吗? **A**:不会。Sensors Wave 使用稳定哈希算法,确保同一用户在同一实验中始终看到相同的变体。 ### Q:如何确保分流均匀? **A**: 1. 使用稳定哈希算法,确保流量均匀分布 2. 实验运行初期,检查各变体的用户分布 3. 如果分布不均(偏差 > 5%),检查配置是否正确 ### Q:同一用户参与多个实验会冲突吗? **A**:不会。不同实验的分流是独立的,同一用户可以同时参与多个实验,分别分配到不同的变体。 ### Q:实验运行期间可以修改流量分配吗? **A**:不建议。修改流量分配会破坏流量粘性,影响实验结果。如果必须修改,建议停止当前实验,创建新实验。 --- ## 相关文档 - [核心概念](core-concepts.mdx):理解分流机制的原理 - [实验设计](experiment-design.mdx):选择合适的分流策略 - [数据模型](../data-integration/data-model.mdx):理解 Login ID 和 Anonymous ID --- **最后更新时间**:2026 年 1 月 29 日