用户可以被分配到我的网站上的一个实验。我有一个API,开发者用它来触发每个实验的逻辑。他们调用ExperimentEngine.run()来触发实验的代码逻辑。
我想在暴露时为每个实验分配通信量,此时用户可能会暴露于该实验的逻辑中。我想分配流量,这样用户通常最后看到的实验就不会挨饿。
例如,如果用户A在登录时暴露于实验A,然后转到B页并暴露于实验B,则应该将用户A分配给实验A或在点曝光时分配给B。这意味着他们只会看到其中的一个实验,而不是两者(A或B)或两者都看不到。我想找出正确的算法,使实验B(在用户看到实验A后向用户显示)不会缺乏流量。我不希望所有的交通都去实验A。
因此,流程如下
有人能给我指出一个正确的方向吗?我可以用这个算法有效地将流量分配给实验,以便在这样一个系统中,实验达到样本大小并及时地统计sig,在这个系统中,实验被分配到暴露点的流量,实验在流的不同点(早的或晚的)“暴露”给用户,并使其能够使稍后暴露的实验不缺乏流量?
一种可能的算法:
我在挣扎的是,优先级系统算法应该是什么呢?这也是分配给用户在不同的流点上进行实验的最有效的方法吗?我们如何决定是否在特定地点指定用户进行实验?现在我们使用硬币翻转,但这意味着50%的用户将被分配到每个地点的一个实验,这是行不通的。
发布于 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的值。最小化从这些值运行特定实验的概率与那些概率的任何目标值之间的平方差之和。
(实际上,如果你对运行各种实验的用户的概率的线性函数进行优化,那么数学可能会更好,可能会改变线性函数,直到得到对你有吸引力的结果。)
https://stackoverflow.com/questions/49948982
复制相似问题