统计基础

第05课:相关与回归

相关系数、皮尔逊与斯皮尔曼、线性回归基础、残差分析、回归诊断

1. 相关分析

皮尔逊相关系数

r = Σ(xᵢ-x̄)(yᵢ-ȳ) / √(Σ(xᵢ-x̄)²·Σ(yᵢ-ȳ)²)

取值[-1,1],|r|=1完全线性相关,r=0无线性相关(≠无相关!)。对异常值敏感。

斯皮尔曼秩相关

基于秩次的非参数方法,捕捉单调关系(不限于线性),对异常值稳健。

相关≠因果

"相关性不等于因果性"是统计学最重要的教训。混淆变量(冰淇淋↔溺水,混淆:气温)。

2. 简单线性回归

Y = β₀ + β₁X + ε, ε ~ N(0, σ²)

最小二乘: β̂₁ = r·sᵧ/sₓ, β̂₀ = ȳ - β̂₁x̄

高斯-马尔可夫定理: OLS是BLUE(最佳线性无偏估计)。

R² = SSR/SST = 1-SSE/SST。调整R² = 1-(1-R²)(n-1)/(n-p-1)

3. 残差分析

残差图模式含义
随机散布模型合适
弯曲需要非线性项
漏斗形异方差
离群点强影响点

Cook距离: Dᵢ > 4/n → 强影响点

Python代码实现与验证

💡 代码说明:以下代码使用 Python / Scikit-learn 实现,已实机运行验证。

完整代码


import numpy as np
from scipy import stats
np.random.seed(42)

n = 100
x = np.random.normal(0, 1, n)
y = 0.7*x + np.random.normal(0, 0.7, n)

print("=== 相关分析 ===")
r_p, p_p = stats.pearsonr(x, y)
r_s, p_s = stats.spearmanr(x, y)
print("Pearson  r={:.4f}, p={:.6f}".format(r_p, p_p))
print("Spearman r={:.4f}, p={:.6f}".format(r_s, p_s))

print("\n=== 线性回归 ===")
slope, intercept, r, p, se = stats.linregress(x, y)
y_pred = intercept + slope*x
R2 = r**2
residuals = y - y_pred
print("slope={:.4f}, intercept={:.4f}, R2={:.4f}".format(slope, intercept, R2))
print("残差均值={:.6f}, 残差std={:.4f}".format(residuals.mean(), residuals.std()))
print("Shapiro正态性 p={:.4f}".format(stats.shapiro(residuals).pvalue))

运行结果

=== 相关分析 === Pearson r=0.6357, p=0.000000 Spearman r=0.5996, p=0.000000 === 线性回归 === slope=0.5997, intercept=0.0052, R2=0.4041 残差均值=-0.000000, 残差std=0.6580 Shapiro正态性 p=0.1648
✅ 验证通过

补充内容:关键概念深入

本节补充本课的核心概念、常见误区和实践建议,帮助建立更深入的理解。

实践案例与深入分析

统计思维在日常ML工作中的体现

统计思维不仅是理论工具,更是ML工程师的核心素养。以下是一些日常工作中的统计思维应用:

数据质量检查:在建模前,始终检查数据的分布、异常值和缺失模式。一个异常值可能导致模型完全失效。用箱线图和直方图做第一道关卡,用Z-score和IQR做第二道关卡,用业务逻辑做第三道关卡。
实验设计:每次模型改进都需要统计验证。仅看测试集指标是不够的——你需要置信区间和假设检验来确认改进不是随机波动。使用配对t检验比较两个模型的交叉验证分数,比单次比较更可靠。
结果解读:永远不要只报告点估计。R2=0.85和95%CI[0.82,0.88]比单独的0.85更有信息量。p值<0.05不意味着效果显著——还需要看效应量。

概率论的工程应用

在推荐系统中,贝叶斯平滑是处理冷启动问题的经典方法。例如,一个商品只有3个评分(5,5,4),均值4.67可能不可靠。贝叶斯平滑公式:smoothed = (n*mean + m*global_mean)/(n+m),其中m控制先验的强度。当m=10时,这个商品的平滑评分变为(3*4.67+10*4.0)/13=4.15,更接近全局均值,更稳健。

常见统计错误与防范

  1. p-hacking:反复尝试不同分析直到p<0.05。防范:预先注册分析计划,报告所有尝试的检验次数。
  2. 选择性报告:只报告显著结果,忽略不显著的。防范:报告所有分析结果,使用森林图展示完整画面。
  3. 忽略多重比较:20个特征中可能1个"显著"纯属偶然。防范:Bonferroni/BH校正。
  4. 样本量不足:小样本下的"显著"结果不可靠。防范:预先计算所需样本量。

统计学习理论概览

VC维是衡量模型复杂度的理论工具。VC维越高,模型能拟合的函数越复杂,但也越容易过拟合。结构风险最小化(SRM)在经验风险和模型复杂度之间取得平衡:SRM = 经验风险 + 复杂度惩罚。这解释了为什么正则化能防止过拟合——它在做结构风险最小化。

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

补充:关键概念与面试要点

核心直觉

常见面试问题

  1. L1正则化为什么产生稀疏解?(几何:菱形与等高线在角上相交)
  2. 逻辑回归为什么用交叉熵而不用MSE?(MSE导致梯度消失)
  3. 随机森林为什么不容易过拟合?(Bagging降方差,特征随机降相关性)
  4. K-Means为什么收敛到局部最优?(目标函数非凸)
  5. PCA为什么需要中心化?(否则第一主成分指向均值方向)

📝 课后练习

  1. 实现本课核心算法并用Scikit-learn验证
  2. 调优关键超参数并记录性能变化
  3. 用交叉验证评估模型稳定性
  4. 与之前学过的方法对比分析
  5. 分析本课方法的失效条件
🔗
相关与因果
理解了相关不等于因果的深刻含义