首页
/ numpy-ml项目中的线性模型详解:从基础回归到贝叶斯方法

numpy-ml项目中的线性模型详解:从基础回归到贝叶斯方法

2025-07-06 00:57:28作者:郁楠烈Hubert

引言

线性模型是机器学习中最基础且重要的模型类别之一,在numpy-ml项目中实现了多种经典的线性模型。本文将深入解析这些模型的数学原理、实现细节和应用场景,帮助读者全面理解线性模型家族。

1. 最小二乘线性回归

1.1 普通最小二乘法(OLS)

普通最小二乘法是最基础的线性回归方法,其模型形式为:

yᵢ = bᵀxᵢ + εᵢ

其中εᵢ ∼ N(0, σ²)是误差项,所有样本的误差方差相同。OLS通过最小化残差平方和来估计参数:

L = ||y - bX||₂²

参数b的闭式解(正规方程)为: b̂ = (XᵀX)⁻¹Xᵀy

1.2 加权最小二乘法(WLS)

WLS是OLS的扩展,允许不同样本有不同的权重。模型形式相同,但误差项变为εᵢ ∼ N(0, σᵢ²)。损失函数变为:

L = ||W⁰·⁵(y - bX)||₂²

其中W是对角权重矩阵。参数估计为: b̂ = (XᵀWX)⁻¹XᵀWy

应用场景:当不同样本的可靠性不同时,WLS能给予更可靠的样本更高权重。

2. 岭回归

岭回归在OLS基础上增加了L2正则化项,用于防止过拟合:

L = ||y - bX||₂² + α||b||₂²

参数估计调整为: b̂ = (XᵀX + αI)⁻¹Xᵀy

特点

  • α控制正则化强度
  • 特别适用于特征数接近样本数的情况
  • 能处理多重共线性问题

3. 贝叶斯线性回归

3.1 已知方差的情况

当误差方差σ²已知时,对参数b使用高斯先验: b | σ,V ∼ N(μ, σ²V)

后验分布也是高斯分布,参数为: μ_b = A(V⁻¹μ + Xᵀy) Σ_b = σ²A 其中A = (V⁻¹ + XᵀX)⁻¹

预测分布也是高斯分布: y* | X*,X,y ∼ N(Xμ_b, XΣ_bX*ᵀ + I)

3.2 未知方差的情况

当σ²也未知时,使用Normal-Gamma先验(单变量)或Normal-Inverse-Wishart先验(多变量)。

后验分布计算涉及:

  1. σ²的后验是逆Gamma分布
  2. b | σ²的后验是高斯分布

预测分布形式与已知方差情况类似。

优势

  • 提供参数的不确定性估计
  • 自然地处理小样本情况
  • 通过先验引入领域知识

4. 朴素贝叶斯分类器

基于特征条件独立假设: P(x_i | y_i) = ∏ P(x_{i,j} | y_i)

分类规则为: ŷ = argmax P(y) ∏ P(x_j | y)

特点

  • 计算高效
  • 对缺失数据鲁棒
  • 适合高维数据

5. 广义线性模型(GLM)

GLM扩展了线性模型,允许:

  1. 响应变量来自指数族分布
  2. 通过链接函数g连接均值和线性预测:

g(E[y_i | x_i]) = bᵀx_i

常见链接函数

  • 正态分布:恒等链接
  • 二项分布:logit链接
  • 泊松分布:log链接

实现细节

numpy-ml项目中的实现特点:

  1. 完全基于NumPy实现,无外部依赖
  2. 对关键运算进行了优化
  3. 提供了清晰的API文档
  4. 包含完整的数学推导

总结

本文详细介绍了numpy-ml项目中实现的各类线性模型,从基础的OLS到复杂的贝叶斯方法。理解这些模型的数学原理和实现细节,对于在实际问题中选择合适的模型至关重要。线性模型虽然简单,但在许多场景下仍能提供优秀的性能,特别是结合正则化或贝叶斯方法后。

建议读者可以:

  1. 从OLS开始,理解最小二乘原理
  2. 尝试添加正则化观察模型变化
  3. 比较频率派和贝叶斯方法的结果差异
  4. 在不同数据集上测试各模型表现