当前位置:首页>python>统计学入门合集(基于Python)7——多元回归与正则化

统计学入门合集(基于Python)7——多元回归与正则化

  • 2026-10-11 21:42:24
统计学入门合集(基于Python)7——多元回归与正则化

在上一节中,我们研究了一元线性回归:

但现实问题中:

多个变量共同作用于结果


1多元线性模型

设:

写成矩阵形式:


其中:


2最小二乘问题

定义损失函数:


展开:


求导并令为 0:


👉 得到正规方程(Normal Equation):


若  可逆:


3几何解释

回归的本质是:

把  投影到  的列空间


👉 误差:

满足:


👉 含义:

残差与解释变量正交


4Python验证(投影性质)

# file: projection_property.pyimport numpy as npdefmain():    np.random.seed(0)    X = np.random.randn(100, 2)    X = np.hstack([np.ones((100,1)), X])    beta = np.array([1,2,3])    y = X @ beta + np.random.randn(100)    beta_hat = np.linalg.inv(X.T @ X) @ X.T @ y    residuals = y - X @ beta_hat    check = X.T @ residuals    print("X^T residuals (应接近0):")    print(check)if __name__ == "__main__":    main()

执行结果如下:

5统计性质

在假设:

下,有:


无偏性:


方差:


分布:


👉 结论:

回归系数可以做统计推断!


6多重共线性

如果:

奇异

则:

  •  不稳定
  • 方差爆炸

👉 现象:

系数极不稳定


7Python验证(共线性)

# file: multicollinearity.pyimport numpy as npdefmain():    np.random.seed(0)    x1 = np.random.randn(100)    x2 = x1 + np.random.normal(0, 0.01, 100)    X = np.column_stack([np.ones(100), x1, x2])    y = 2 + 3*x1 + np.random.randn(100)    beta_hat = np.linalg.inv(X.T @ X) @ X.T @ y    print("系数:", beta_hat)if __name__ == "__main__":    main()

执行结果如下:

8Ridge回归(稳定化)

为解决:

 不可逆 / 不稳定


引入惩罚项:


👉 解:


👉 关键作用:

  • 保证可逆
  • 减小方差

9Python验证(Ridge稳定性)

# file: ridge_stability.pyimport numpy as npdefmain():    np.random.seed(0)    x1 = np.random.randn(100)    x2 = x1 + np.random.normal(0, 0.01, 100)    X = np.column_stack([np.ones(100), x1, x2])    y = 2 + 3*x1 + np.random.randn(100)    ridge_beta = np.linalg.inv(X.T @ X + 1*np.eye(3)) @ X.T @ y    print("Ridge系数:", ridge_beta)if __name__ == "__main__":    main()

执行结果如下:

10Lasso回归(稀疏性)

定义:


👉 特性:

  • 产生稀疏解
  • 自动变量选择

11Python验证(Lasso稀疏)

# file: lasso_sparse.pyimport numpy as npfrom sklearn.linear_model import Lassodefmain():    np.random.seed(0)    X = np.random.randn(100, 5)    y = X @ np.array([1,0,3,0,5]) + np.random.randn(100)    model = Lasso(alpha=0.1)    model.fit(X, y)    print("系数:", model.coef_)if __name__ == "__main__":    main()

执行结果如下:

12偏差-方差权衡

引入正则化后:

  • 偏差 ↑
  • 方差 ↓

👉 核心:

用一点“偏差”换取“稳定性”


13工程意义

多元回归与正则化是:

  • 机器学习基础模型
  • 高维数据建模工具
  • 风险控制核心方法

14本节总结

内容
数学本质
OLS
投影
正规方程
最优化解
共线性
矩阵病态
Ridge
L2稳定化
Lasso
稀疏解

15下期预告

下一讲将深入:

  • 偏差-方差分解(完整推导)
  • 过拟合本质
  • 模型选择理论

📌 点赞 + 转发,持续更新《统计学入门》

最新文章

随机文章