这是一个非常好的调整。我们将这两部分内容(线性回归的硬核原理 + 模型评估的深度辨析)进行有机融合。
线性回归是“骨架”,模型评估(K折/Bootstrap)是“体检报告”。只有骨架正、体检过关,这个模型才能在 AB 实验(如 CUPED、归因分析、HTE)中真正落地。
以下是为你重新整合、深度撰写的文章。
—关注作者,送A/B实验实战工具包
在数据科学界,有一个怪圈:新人都在卷 XGBoost 和 Transformer,而真正的老手却在重新审视 线性回归 (Linear Regression)。
为什么?因为在 AB 实验和因果推断领域,可解释性 (Interpretability) 是压倒一切的。当我们试图回答“策略 A 到底带来了多少增量”、“哪些特征导致了效果差异”时,线性回归依然是上帝视角的工具。
但这就带来了一个更深层的问题:你训练出的回归模型,参数是可信的吗?如果训练数据稍微抖动一下,你的结论会不会直接反转?
这篇文章我们将从白板推导开始,把线性回归的“三大戒律”与模型评估的“稳定性陷阱”彻底讲透。
1. 回归模型的“骨架”:形态与编码
1.1 简单 vs 多元
- 简单线性回归 (Simple Linear Regression):y=β0+β1x+ϵy = \\beta_0 + \\beta_1 x + \\epsilony=β0+β1x+ϵ。
- 多元线性回归 (Multiple Linear Regression):y=β0+β1×1+⋯+βnxn+ϵy = \\beta_0 + \\beta_1 x_1 + \\dots + \\beta_n x_n + \\epsilony=β0+β1x1+⋯+βnxn+ϵ。
- 价值:AB 实验中,我们引入多元回归主要是为了控制变量 (Control Variates)。比如 CUPED 方法,本质上就是把“实验前的指标”作为 xxx 扔进回归里,从而降低方差。
1.2 类别变量:独热编码 (One-hot Encoding)
机器读不懂“北京/上海/广州”。
- 做法:将一个有 kkk 个级别的类别变量,拆解为 kkk(或 k−1k-1k−1,避开共线性)个 0/1 二元变量。
- 警示:严禁使用 Label Encoding(即把北京编为 1,上海编为 2)。因为回归模型会从数学上认为“上海 = 2 倍的北京”,这是严重的逻辑谬误。
1.3 交互项 (Interaction Term):异质性的灵魂
当你怀疑“策略的效果因人而异”时,必须引入交互项。
- 公式:y=β0+β1xtreat+β2xuser+β3(xtreat⋅xuser)+ϵy = \\beta_0 + \\beta_1 x_{treat} + \\beta_2 x_{user} + \\beta_3 (x_{treat} \\cdot x_{user}) + \\epsilony=β0+β1xtreat+β2xuser+β3(xtreat⋅xuser)+ϵ
- 解读:
- xtreatx_{treat}xtreat:是否实验组。
- xuserx_{user}xuser:用户等级。
- xtreat⋅xuserx_{treat} \\cdot x_{user}xtreat⋅xuser:交互项。如果 β3\\beta_3β3 显著,说明实验效果在不同等级用户身上是不同的。这是异质性分析 (HTE) 的数学基础。
2. 线性回归的“三大戒律”(核心假设)
如果这三条假设被打破,你的 PPP 值、置信区间和系数估计就是废纸。
① 无多重共线性 (No Multicollinearity)
- 定义:自变量之间不应存在高度相关性(如 x1x_1x1 和 x2x_2x2 相关系数 0.99)。
- 后果:
- 方差膨胀:系数估计变得极不稳定。
- 符号翻转:数据的一个微小扰动,可能导致正系数变成负系数,彻底破坏业务解释。
- 诊断:计算 VIF (Variance Inflation Factor)。
② 同方差性 (Homoscedasticity)
- 定义:残差(误差)的方差在所有 xxx 水平上应保持恒定。
- 违背(异方差):例如预测电商 GMV,高消费人群的预测误差往往比低消费人群大得多(喇叭口形状)。
- 后果:标准误差 (Standard Error) 计算错误,导致显著性检验失效。
③ 观测独立性 (Independent Observations)
- 定义:样本点之间互不影响。
- 违背场景:时间序列数据(自相关)、聚类数据(同一班级、同一门店)。
- 后果:样本有效信息量被高估,导致 PPP 值过小,产生“伪显著”。
3. 灵魂拷问:你的模型“稳”吗?(稳定性评估)
做完回归,很多人只看 R2R^2R2 或 PPP 值。但资深分析师会问:“如果我换一份合理的训练样本,这个模型的系数/预测值还得住吗?”
这就涉及到了模型波动的评估。这里有三种常见做法,其中包含一个巨大的误区。
3.1 训练数据扰动 (Training-set Uncertainty)
我们真正关心的是:模型对训练数据的采样有多敏感?
为了回答这个问题,我们需要重采样技术。
3.2 黄金标准:重复 K 折与 Bootstrap
- 重复 K 折 (Repeated K-fold CV):
- 做法:做 NNN 次不同随机种子的 K 折。最终得到 N×KN \\times KN×K 个模型结果。
- 优势:相比单次 K 折,它平滑了“切分随机性”,能更稳健地估计“在不同切分下模型的平均表现与波动”。
- 训练集 Bootstrap (Training-set Bootstrap):
- 做法:对训练集进行 BBB 次有放回重采样,训练 BBB 个模型,在固定 Test 集上预测。
- 产出:你会得到同一个 Test 样本点 xix_ixi 的 BBB 个预测值 y^i(1),…,y^i(B)\\hat{y}_i^{(1)}, \\dots, \\hat{y}_i^{(B)}y^i(1),…,y^i(B)。
- 价值:这是直接观察预测分布的最佳手段。如果某类用户的预测方差极大,说明回归模型没“看懂”这类人。
3.3 避坑:“方法4”为什么不够硬?
工程中常见一种做法(我们称之为“方法4”):
做法:做一次 K 折,得到 K 个模型。用这 K 个模型预测同一个外层 Test 集,计算 K 个 MAE 的方差。
结论:这只能做快速体感,不能作为正式的波动分布。因为它有两个致命弱点:
4. 进阶技法:模型选择与正则化
当 OLS(普通最小二乘法)因为共线性或过拟合失效时,我们需要引入“惩罚项”。
4.1 偏差与方差权衡 (Bias-Variance Tradeoff)
- 高偏差:模型太简单(欠拟合)。
- 高方差:模型太复杂(过拟合),对训练集噪声过度敏感。
- 评估指标:请看 调整后的 R2R^2R2 (Adjusted R-squared)。普通的 R2R^2R2 只要加变量就会涨,而 Adjusted R2R^2R2 会惩罚无用的变量,是模型选择的金标准。
4.2 正则化 (Regularization)
- Lasso 回归 (L1):min(SSE+λ∑∣βj∣)\\min (SSE + \\lambda \\sum |\\beta_j|)min(SSE+λ∑∣βj∣)
- 杀手锏:能把系数压缩到 0。
- 用途:特征选择。如果你有 100 个特征只想留 10 个,用 Lasso。
- Ridge 回归 (L2):min(SSE+λ∑βj2)\\min (SSE + \\lambda \\sum \\beta_j^2)min(SSE+λ∑βj2)
- 杀手锏:把系数压小,但不为 0。
- 用途:解决共线性。当 x1,x2x_1, x_2x1,x2 高度相关时,Ridge 能让它们的系数平摊,不再甚至乱跳,大幅提升模型稳定性。
- Elastic Net:L1 + L2 的混合体,兼顾稀疏性与稳定性。
5. 总结与落地清单
在 AB 实验场景下使用线性回归,请遵循以下 SOP:
- 不要迷信单次测试的 MAE。
- 使用 重复 K 折 或 训练集 Bootstrap 来量化“训练扰动”带来的不确定性。
- 警惕“方法4”(K 折模型 + 固定 Test)带来的方差低估风险。
线性回归看似简单,实则是统计学的基本功试金石。用好了,它就是最锋利、最透明的手术刀。
如果这篇文章帮你理清了思路,不妨点个关注,我会持续分享 AB 实验干货文章。




