numpy-ml项目中的线性模型详解:从基础回归到贝叶斯方法
引言
线性模型是机器学习中最基础且重要的模型类别之一,在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先验(多变量)。
后验分布计算涉及:
- σ²的后验是逆Gamma分布
- b | σ²的后验是高斯分布
预测分布形式与已知方差情况类似。
优势:
- 提供参数的不确定性估计
- 自然地处理小样本情况
- 通过先验引入领域知识
4. 朴素贝叶斯分类器
基于特征条件独立假设: P(x_i | y_i) = ∏ P(x_{i,j} | y_i)
分类规则为: ŷ = argmax P(y) ∏ P(x_j | y)
特点:
- 计算高效
- 对缺失数据鲁棒
- 适合高维数据
5. 广义线性模型(GLM)
GLM扩展了线性模型,允许:
- 响应变量来自指数族分布
- 通过链接函数g连接均值和线性预测:
g(E[y_i | x_i]) = bᵀx_i
常见链接函数:
- 正态分布:恒等链接
- 二项分布:logit链接
- 泊松分布:log链接
实现细节
numpy-ml项目中的实现特点:
- 完全基于NumPy实现,无外部依赖
- 对关键运算进行了优化
- 提供了清晰的API文档
- 包含完整的数学推导
总结
本文详细介绍了numpy-ml项目中实现的各类线性模型,从基础的OLS到复杂的贝叶斯方法。理解这些模型的数学原理和实现细节,对于在实际问题中选择合适的模型至关重要。线性模型虽然简单,但在许多场景下仍能提供优秀的性能,特别是结合正则化或贝叶斯方法后。
建议读者可以:
- 从OLS开始,理解最小二乘原理
- 尝试添加正则化观察模型变化
- 比较频率派和贝叶斯方法的结果差异
- 在不同数据集上测试各模型表现