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