您的位置:首页 > 其它

算法效果AB测试中的PV-UV不对称性

2014-11-03 10:01 162 查看
算法效果的AB测试,是指在相同的应用场景下,对比不同算法的效果。通常的做法是,按照PV或UV随机分配流量到算法上,计算算法的CTR或转化率进行对比。为了表述简单,我们假设参与对比的算法有两个,比较的指标是CTR。这里面的关键细节有两个:1. 如何划分浏览?2. 如何计算CTR。下面从这两个角度讨论可能出现的问题。

定义1:按PV划分流量,是指对任意一个访问,按照预先设定的比例,随机分配到一个算法中。需要注意的是,在这种情况下,每个用户会被随机分配到一个算法中。

定义2:按UV划分流量,是指对任意一个访问,按照预先设定的比例,对用户ID进行哈希和取模等操作,将流量划分到一个算法中。在这种情况下,每个用户有一个确定的算法与之对应。

定义3:按PV计算CTR,CTRPV(A)=A算法下用户点击的PV数A算法下总的PV数

定义4:按UV计算CTR,CTRUV(A)=A算法下有点击的用户数A算法下总的用户数

场景1:按PV划分流量,按PV计算CTR。

这种情况比较简单,在忽略用户对算法疲劳度(通常是合理的)的情况下,这种测量对比方案比较合理。

场景2:按PV划分流量,按UV计算CTR。

这个方案可能一些有经验的同学会觉得不行,另一些同学会觉得问题也不大。事实上,这会导致严重的测量误差,我们用AA测试的效果来分析一下。假定流量分成两个桶,第1个桶占比是p1,第2个桶占比为p2,且p1+p2=1。设该算法的PV的转化率(CTR)为r。

这里需要分为两种情况来讨论:

第1种情况:假设产生无论实际的转化在哪个桶中产生,将转化率计算到该用户到达的每个桶中。

对一个访问次数为K=k的用户,其整体转化率为rk=1−(1−r)k,而他出现在第i个桶的概率为P(bi∈B|K=k)=1−(1−pi)k,i=1,2。其中bi∈B表示用户出现在第i个桶中。

从而第i个桶按UV计算的CTR为:E[R|bi∈B]=∑∞k=1rkP(K=k|bi∈B)=∑∞k=1rkP(bi∈B|K=k)P(K=k)P(bi∈B)=∑∞k=1rkP(bi∈B|K=k)P(K=k)∑∞k=1P(bi∈B|K=k)P(K=k)

设P(K=k)=αk,那么E[R|bi∈B]=∑∞k=1(1−(1−r)k)(1−(1−pi)k)αk∑∞k=1(1−(1−pi)k)αk

由于f(x,k)=1−(1−x)k在0<x<1和1≤k<∞上关于x和k单调递增,那么对于较大的pi,
其转化率为1−(1−r)k的用户的份额(1−(1−pi)k)αk随着k的增大,转化率升高,且小pi的份额(1−(1−pi)k)αk相对大桶也增大。因此,pi>pj⟹E[R|bi∈B]<E[R|bj∈B]。

距离来说明这一点,设p1=0.1,p2=0.9,α1=0.5,α2=0.35,α3=0.15,r=0.015,即流量比为1:9,访问次数分别为1,2,3的人比例为10:7:3,按PV算的CTR是0.015。

这种情况下,第1个桶按UV算的转化率为

E[R|b1∈B]=0.0288

第2个桶按UV算的转化率为:

E[R|b2∈B]=0.0251

即第1个桶比第2个桶AA测试下按UV统计到的效果好15.11%。也就是说,大桶在该场景下的测试指标比较亏。

由AA测试的结果对比不难得到AB测试的结论:如果按PV划分流量,按UV计算转化率,无论交易发生在哪个桶中,将转化率计算入该用户到达的每个桶中,大桶在该场景下的测试指标比较亏。直观的理解是,这种情况下,小桶从大桶的推荐效果中“沾光”要大于大桶从小桶的推荐效果中“沾光”。

第2种情况:转化发生在哪个桶,就将转化率算入该桶中。

相对第1种情况,这种情况会更普遍一些。仍然借用第1种情况下的符号:

E[R|bi∈B]=∑∞k=1∑kl=1(1−(1−r)l)(kl)pli(1−pi)k−lαk∑∞k=1∑kl=1(kl)pli(1−pi)k−lαk

沿用情况1的各种数据,这种情况下,第1个桶按UV算的转化率为

E[R|b1∈B]=0.0157

第2个桶按UV算的转化率为:

E[R|b2∈B]=0.0234

即第2个桶比第1个桶AA测试下按UV统计到的效果好48.59%。也就是说,小桶在该场景下的测试指标比较亏。

结论是,如果按PV划分流量,按UV计算转化率,交易发生在哪个桶中,就将转化率计算入该桶中,小桶在该场景下的测试指标比较亏。直观的理解是,这种情况下,小桶中用户行为次数比大桶中少,因此转化率低。

场景3:按UV划分流量,按PV计算CTR。

这种情况下每个用户会被划分到确定的算法处理,如果算法分配到的用户比较少,而用户行为差异比较大的情况下,小流量算法的指标会受到一定干扰。但对于大多数情况下也可以合理的忽略这种因素,方案比较合理。

场景4:按UV划分流量,按UV计算CTR。

这种情况下每个用户被划分到确定的算法处理,参考场景3的结论,方案比较合理。

算法效果的AB测试,是指在相同的应用场景下,对比不同算法的效果。通常的做法是,按照PV或UV随机分配流量到算法上,计算算法的CTR或转化率进行对比。为了表述简单,我们假设参与对比的算法有两个,比较的指标是CTR。这里面的关键细节有两个:1. 如何划分浏览?2. 如何计算CTR。下面从这两个角度讨论可能出现的问题。

定义1:按PV划分流量,是指对任意一个访问,按照预先设定的比例,随机分配到一个算法中。需要注意的是,在这种情况下,每个用户会被随机分配到一个算法中。

定义2:按UV划分流量,是指对任意一个访问,按照预先设定的比例,对用户ID进行哈希和取模等操作,将流量划分到一个算法中。在这种情况下,每个用户有一个确定的算法与之对应。

定义3:按PV计算CTR,CTRPV(A)=A算法下用户点击的PV数A算法下总的PV数

定义4:按UV计算CTR,CTRUV(A)=A算法下有点击的用户数A算法下总的用户数

场景1:按PV划分流量,按PV计算CTR。

这种情况比较简单,在忽略用户对算法疲劳度(通常是合理的)的情况下,这种测量对比方案比较合理。

场景2:按PV划分流量,按UV计算CTR。

这个方案可能一些有经验的同学会觉得不行,另一些同学会觉得问题也不大。事实上,这会导致严重的测量误差,我们用AA测试的效果来分析一下。假定流量分成两个桶,第1个桶占比是p1,第2个桶占比为p2,且p1+p2=1。设该算法的PV的转化率(CTR)为r。

这里需要分为两种情况来讨论:

第1种情况:假设产生无论实际的转化在哪个桶中产生,将转化率计算到该用户到达的每个桶中。

对一个访问次数为K=k的用户,其整体转化率为rk=1−(1−r)k,而他出现在第i个桶的概率为P(bi∈B|K=k)=1−(1−pi)k,i=1,2。其中bi∈B表示用户出现在第i个桶中。

从而第i个桶按UV计算的CTR为:E[R|bi∈B]=∑∞k=1rkP(K=k|bi∈B)=∑∞k=1rkP(bi∈B|K=k)P(K=k)P(bi∈B)=∑∞k=1rkP(bi∈B|K=k)P(K=k)∑∞k=1P(bi∈B|K=k)P(K=k)

设P(K=k)=αk,那么E[R|bi∈B]=∑∞k=1(1−(1−r)k)(1−(1−pi)k)αk∑∞k=1(1−(1−pi)k)αk

由于f(x,k)=1−(1−x)k在0<x<1和1≤k<∞上关于x和k单调递增,那么对于较大的pi,
其转化率为1−(1−r)k的用户的份额(1−(1−pi)k)αk随着k的增大,转化率升高,且小pi的份额(1−(1−pi)k)αk相对大桶也增大。因此,pi>pj⟹E[R|bi∈B]<E[R|bj∈B]。

距离来说明这一点,设p1=0.1,p2=0.9,α1=0.5,α2=0.35,α3=0.15,r=0.015,即流量比为1:9,访问次数分别为1,2,3的人比例为10:7:3,按PV算的CTR是0.015。

这种情况下,第1个桶按UV算的转化率为

E[R|b1∈B]=0.0288

第2个桶按UV算的转化率为:

E[R|b2∈B]=0.0251

即第1个桶比第2个桶AA测试下按UV统计到的效果好15.11%。也就是说,大桶在该场景下的测试指标比较亏。

由AA测试的结果对比不难得到AB测试的结论:如果按PV划分流量,按UV计算转化率,无论交易发生在哪个桶中,将转化率计算入该用户到达的每个桶中,大桶在该场景下的测试指标比较亏。直观的理解是,这种情况下,小桶从大桶的推荐效果中“沾光”要大于大桶从小桶的推荐效果中“沾光”。

第2种情况:转化发生在哪个桶,就将转化率算入该桶中。

相对第1种情况,这种情况会更普遍一些。仍然借用第1种情况下的符号:

E[R|bi∈B]=∑∞k=1∑kl=1(1−(1−r)l)(kl)pli(1−pi)k−lαk∑∞k=1∑kl=1(kl)pli(1−pi)k−lαk

沿用情况1的各种数据,这种情况下,第1个桶按UV算的转化率为

E[R|b1∈B]=0.0157

第2个桶按UV算的转化率为:

E[R|b2∈B]=0.0234

即第2个桶比第1个桶AA测试下按UV统计到的效果好48.59%。也就是说,小桶在该场景下的测试指标比较亏。

结论是,如果按PV划分流量,按UV计算转化率,交易发生在哪个桶中,就将转化率计算入该桶中,小桶在该场景下的测试指标比较亏。直观的理解是,这种情况下,小桶中用户行为次数比大桶中少,因此转化率低。

场景3:按UV划分流量,按PV计算CTR。

这种情况下每个用户会被划分到确定的算法处理,如果算法分配到的用户比较少,而用户行为差异比较大的情况下,小流量算法的指标会受到一定干扰。但对于大多数情况下也可以合理的忽略这种因素,方案比较合理。

场景4:按UV划分流量,按UV计算CTR。

这种情况下每个用户被划分到确定的算法处理,参考场景3的结论,方案比较合理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: