【发布时间】:2018-04-20 20:04:27
【问题描述】:
可以将用户分配到我网站上的一项实验。我有一个 API,开发人员使用它来触发每个实验的逻辑。他们调用 ExperimentEngine.run() 来触发实验的代码逻辑。
我想在用户可能接触到该实验的逻辑时,将流量分配给每个实验。我想分配流量,以便用户通常最后看到的实验不会被饿死。
例如,如果用户 A 在登录时接触到实验 A,然后转到页面 B 并接触到实验 B,则用户 A 应该在接触时被分配到实验 A 或 B。这意味着他们只会看到其中一个实验,而不是两者(A 或 B)或两者都看不到。我想找出正确的算法,以便实验 B(在下游并在用户看到实验 A 后显示给用户)不会因流量不足而感到饥饿。我不希望所有流量都用于实验 A。
所以流程如下
- 用户访问了实施实验 A 的页面 A
- 我们决定是否将用户分配给实验 A。如果将用户分配给 A,用户将能够看到实验 A。
- 用户访问实施了实验 B 的页面 B,我们决定是否将用户分配给实验 B
- 用户只能查看分配给他们的实验。
- 我想提出一种算法,允许我将流量分配给 实验,无论它们在哪里实施,这样流量分配是有效的,并且下游实施的实验不会被饿死(即使用户最后看到实验 B,他们仍然很有可能被分配给 B)
有人可以向我指出正确的方向,我可以使用该算法有效地将流量分配给实验,以便在实验在暴露点分配流量的系统中,实验达到样本量和统计数据及时显示,并且哪些实验在流程的不同点(早期或后期)“公开”给用户,并且以某种方式使以后公开的实验不会因流量不足而受到限制?
一种可能的算法:
- 对于每个实验,我们使用硬币翻转根据实验的位置决定是否分配。
- 如果我们得到了人头,则会选择一个符合用户标准并针对该位置实施的实验列表。
- 根据优先级系统从该列表中选择一个实验。 在每个地点,都有 % 的用户被分配到在该地点实施的一项实验。
- 当我们决定分配或不分配给该位置的任何实验时,不会再次为用户做出该决定。
我正在努力解决的是优先系统算法应该是什么? 这也是将用户分配到在流程的不同点实施的实验的最有效方式吗? 我们如何决定是否将用户分配到特定位置的实验?现在我们使用硬币翻转,但这意味着 50% 的用户将被分配到每个位置的实验,这是行不通的。
【问题讨论】:
-
多次交叉发布和重新发布:stats.stackexchange.com/q/341993/2921、stats.stackexchange.com/q/342292/2921、cs.stackexchange.com/q/90952/755、academia.stackexchange.com/q/108871/705、cs.stackexchange.com/q/91237/755、cs.stackexchange.com/q/90829/755、stackoverflow.com/q/50007609/781723、stackoverflow.com/q/49948982/781723、 math.stackexchange.com/q/2747962/14578, math.stackexchange.com/q/2756953/14578, math.stackexchange.com/q/2752292/14578.
-
请do not post the same question on multiple sites。每个社区都应该诚实地回答问题,而不会浪费任何人的时间。请不要重新发布您的问题;如果您想获得更多关注,可以提供赏金;如果人们不理解您的问题,您可以对其进行编辑。如果您想问一个相关但不同的后续问题,链接到前一个问题并解释这个问题有何不同是有帮助的。这样做时请不要使用多个帐户。感谢您的理解!
标签: algorithm statistics computer-science graph-algorithm