首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >称重平均为比例

称重平均为比例
EN

Stack Overflow用户
提问于 2017-01-21 17:29:01
回答 1查看 60关注 0票数 0

我有一个系统,根据实验优先级分配用户进行实验。每个实验都有一个权重,它决定了选择给用户的频率。例如,用户可以被分配到优先级为100的实验1,而实验2的优先级为80。一旦我们根据实验的权重选择了一个实验,我们就会检查实验的流量分配数,从而为该实验分配用户。

因此,即使实验1具有优先级100,如果它的流量分配数是80%,那么为该实验设置的用户只会被分配80%的时间。其余20%将分配给一个控制组。然而,将用户分配给该实验的实验或控制是基于实验优先级的决定。其他低优先级的实验不经常向用户展示。

如何将用户分配给基于优先级的实验,从而使低优先级的实验也能频繁地被分配,而不会被饿死。

我可以使用什么算法来确保所有的实验都被分配,而不考虑优先级;尽管高优先级的实验会更频繁地分配给用户。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-21 19:53:42

你的问题说得不清楚。让我们把它弄清楚,然后你说它是否是有用的分类。

首先,使用优先级数来分配实验的权重。让P_e成为实验e的重点。将R_e设为用户分配给实验e的概率(0 : 1)。假设n实验按任意顺序排列,e_0e_1. e_(n-1)R_e的一个合理公式是

代码语言:javascript
复制
R_e = P_e / sum(P_(e_i) for all i)

为了决定用户被分配给哪个实验,在[0..1)中生成一个伪随机数[0..1),并选择e_k,使k是最小的整数,比如Z < sum(R_j, j = 0..k)。如果实验的数量很大,您会希望通过二进制搜索来完成这一任务。

现在您已经知道用户是哪个实验的一部分了,使用[0..1)中的第二个伪随机数[0..1)作为“掷硬币”来决定她是控制还是测试。如果T_e是流量分配,那么选择测试如果Y < T_e,否则控制。

这是一个公平的分享计划。没有饥饿。

示例

首先,如果你不能理解上面的内容,你需要学习一些数学才能成为一名有效的程序员。这是相当简单的东西。

假设实验有重量

代码语言:javascript
复制
e_0 = 20, e_1 = 100, e_2 = 80

他们的总数是200,因此选择的可能性应该是:

代码语言:javascript
复制
R_0 = 20/200 = 0.1, R_1 = 0.5, R_2 = 0.4

这些概率的计算结果如下:

代码语言:javascript
复制
sum(0..0) = 0.1,   sum(0..1)= 0.6,   sum(0..2) = 1.0

这些是必须搜索的和(可能是二进制搜索)才能确定k

如果伪随机数Z小于0.1,请选择实验e_k,其中k=0;在0.1至0.6之间,选择k=1;0.6及以上选择k=2。

现在投硬币。如果流量分配为0.75,则抛出小于0.75意味着测试用户。否则,由用户控制。

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

https://stackoverflow.com/questions/41782354

复制
相关文章

相似问题

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