0

我有一个执行

函数 foo() {...}

每个用户会话多次。我可以将 2 种替代算法实现为“foo”函数,我的目标是使用 A/B 测试根据执行延迟来评估它们。

每个用户会话调用 foo() 的次数是可变的,但不会超过 10000。每个值的范围在 [1 - 400] 毫秒之间。说延迟值是:

Algo1: [ [12, 30, 20, 40, 280] , [13, 14, 15, 100, 10], [20, 40] , ... ]
Algo2: [ [1, 10, 5, 4, 150] , [14, 10, 20], [21, 33, 41, 79], ... ]

我的问题是选择获胜者的最佳指标是什么?

可能的选择

  1. 每个会话的平均值,然后评估 cdf

  2. 每个会话的中位数,然后评估 cdf

  3. 还要别的吗 ?

4

1 回答 1

0

一种同时捕获平均性能和波动性(可变性)的可能性是二次损失:ℓ = (Y - τ) 2,其中 Y 是单个结果,τ 是所需的目标值(在您的情况下为零)。计算每个算法的所有观测值的平均损失,估计预期损失 E[ℓ],然后选择平均损失最小的算法。

很容易证明,在期望下 E[ℓ] = (E[Y] - τ) 2 + σ 2 Y。换句话说,二次损失有两个组成部分:

  1. Y 的期望值与您的目标 τ 相差多远;和
  2. Y 的可变性如何。

通过始终接近目标来实现低损耗。目标为零,这意味着您获得的值平均接近于零并且不会出现大的差异。较大的均值或较大的方差都会夸大损失,因此最小损失需要两个方面同时表现良好。

于 2019-12-31T22:23:09.943 回答