首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有效节点流量分配

有效节点流量分配
EN

Stack Overflow用户
提问于 2018-04-20 20:04:27
回答 1查看 82关注 0票数 3

用户可以被分配到我的网站上的一个实验。我有一个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)。

有人能给我指出一个正确的方向吗?我可以用这个算法有效地将流量分配给实验,以便在这样一个系统中,实验达到样本大小并及时地统计sig,在这个系统中,实验被分配到暴露点的流量,实验在流的不同点(早的或晚的)“暴露”给用户,并使其能够使稍后暴露的实验不缺乏流量?

一种可能的算法:

  • 对于每个实验,我们根据实验的位置来决定是否使用硬币翻转来分配。
  • 如果我们得到了头部,就会选择一个符合用户标准的实验列表,并为该位置实现这些实验。
  • 从该列表中选择了一个基于优先级系统的实验。在每个位置,有1%的用户被分配到在该位置执行的实验中的一个。
  • 当我们决定分配或不分配给在该位置的任何实验时,该决定将不再为用户做出。

我在挣扎的是,优先级系统算法应该是什么呢?这也是分配给用户在不同的流点上进行实验的最有效的方法吗?我们如何决定是否在特定地点指定用户进行实验?现在我们使用硬币翻转,但这意味着50%的用户将被分配到每个地点的一个实验,这是行不通的。

EN

回答 1

Stack Overflow用户

发布于 2018-04-21 05:32:27

如果您可以收集每个用户访问页面的列表,那么您就可以为用户访问其页面时运行实验的每个概率计算出每个实验运行的概率。

在此情况下,您需要计算出概率设置的集合将达到预期的结果。如果你有一个用户轨迹,访问页面A,B,C,每个人运行不同的实验,概率p,q,r,那么运行A的概率是p,运行B的概率是q(1-p),运行C的概率是r(1-q)(1-p),总的概率是所有用户轨迹的之和,所以您不仅可以计算出p,q,r的概率函数,还可以计算出这些概率的有关p,q,r的导数。

这意味着您应该能够找到一些数值分析优化程序,它将找到p,q,r的值。最小化从这些值运行特定实验的概率与那些概率的任何目标值之间的平方差之和。

(实际上,如果你对运行各种实验的用户的概率的线性函数进行优化,那么数学可能会更好,可能会改变线性函数,直到得到对你有吸引力的结果。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49948982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档