
1) 【一句话结论】:推荐系统A/B测试衡量模型效果的核心是通过对比实验组(新模型)与对照组的业务关键指标(如CTR、CVR),结合统计显著性判断模型优劣,需合理设计实验并控制偏差以避免结论偏差。
2) 【原理/概念讲解】:A/B测试是一种对比实验方法,用于验证新模型(实验组)是否优于旧模型(对照组)。关键指标是业务相关的,如点击率(用户点击推荐内容的比例,计算公式:点击数/曝光数)、转化率(点击后完成目标行为的比例,如购买、注册,公式:转化数/点击数)、用户停留时长(反映内容吸引力)。实验设计包括用户分组(随机或分层,确保两组用户特征分布一致)、样本量计算(根据指标变化幅度、置信水平、统计功效确定,如通过G*Power工具)、时间窗口(避免短期波动,通常几天到几周)。偏差控制方法:随机化(随机分配用户,减少选择偏差)、控制混杂变量(如用户活跃度、时间、推荐内容多样性)、统计检验(如卡方检验用于分类指标,t检验用于连续指标,判断差异是否显著)、多指标综合(避免单一指标误导,如同时看CTR和CVR)。类比:就像医学中的双盲试验,实验组吃新药,对照组吃安慰剂,通过患者恢复情况判断药效,需要控制其他变量(如饮食、病情)的影响,这里用户流中的其他因素(如用户行为变化、系统更新)就是混杂变量,需控制。
3) 【对比与适用场景】:
| 对比维度 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 关键指标 | 点击率(CTR) | 反映推荐内容被点击的概率 | 适用于内容推荐,关注用户点击行为 | 若曝光量低,CTR可能不稳定 |
| 转化率(CVR) | 反映点击后完成目标行为的比例 | 适用于电商、广告等业务,关注用户最终行为 | 需要较长时间积累数据,避免短期波动 | |
| 实验分组方式 | 随机分组 | 用户随机分配到实验组或对照组,无预设分组 | 适用于用户特征分布均匀的场景 | 需要足够样本量,避免小样本偏差 |
| 分层分组 | 按用户特征(如活跃度、历史行为)分层后随机分配 | 适用于用户特征差异大的场景,确保分层内特征一致 | 需要定义分层标准,计算复杂度较高 |
4) 【示例】:伪代码示例,计算实验组与对照组的CTR,并进行统计检验。
# 伪代码:A/B测试CTR计算与统计检验
# 假设用户流分为实验组(new_model)和对照组(old_model)
def calculate_ab_test_ctr():
# 数据结构:实验组数据:[曝光数, 点击数],对照组数据:[曝光数, 点击数]
exp_data = [(1000, 50), (2000, 120)] # 两天数据
ctrl_data = [(1000, 45), (2000, 110)]
# 计算CTR
exp_ctr = exp_data[0][1]/exp_data[0][0] + exp_data[1][1]/exp_data[1][0]
ctrl_ctr = ctrl_data[0][1]/ctrl_data[0][0] + ctrl_data[1][1]/ctrl_data[1][0]
# 统计检验(z检验,假设方差齐性)
n1, x1 = exp_data[0][0], exp_data[0][1]; n2, x2 = ctrl_data[0][0], ctrl_data[0][1]
p1 = x1/n1; p2 = x2/n2
p_pool = (x1+x2)/(n1+n2)
z = (p1-p2)/((p_pool*(1-p_pool)*(1/n1+1/n2))**0.5)
p_value = 2*(1 - stats.norm.cdf(abs(z)))
print(f"实验组CTR: {exp_ctr:.2%}, 对照组CTR: {ctrl_ctr:.2%}, p值: {p_value:.4f}")
if p_value < 0.05 and exp_ctr > ctrl_ctr:
print("结论:新模型CTR显著提升,效果有效")
else:
print("结论:未达到统计显著性,需继续测试或优化模型")
5) 【面试口播版答案】:面试官您好,关于推荐系统A/B测试衡量模型效果,核心是通过对比实验组(新模型)与对照组的业务关键指标,结合统计显著性判断模型优劣。首先,关键指标通常包括点击率(CTR)、转化率(CVR)、用户停留时长等,这些指标直接反映模型对用户行为的提升。实验设计上,需要随机或分层将用户流分为两组,确保样本量足够(可通过样本量计算工具确定),时间窗口通常持续几天到几周,避免短期波动。避免偏差的方法包括:随机化分配用户(避免用户特征偏差)、控制混杂变量(如用户活跃度、时间等)、使用统计检验(如卡方检验、t检验)判断结果是否显著,同时考虑多指标综合评估,比如用AUC或NDCG等排序指标。比如,假设我们测试一个新推荐模型,将10%的用户随机分配到实验组,对照组用旧模型,持续一周,计算两组的CTR,若实验组CTR提升5%且p值<0.05,则认为模型有效。
6) 【追问清单】:
7) 【常见坑/雷区】: