问题定义
线性模型假设输入特征与输出之间存在线性关系,通过学习权重参数来建模这种关系。核心问题包括:连续值预测(回归)、二分类问题、多分类问题,以及如何处理过拟合问题。
核心算法
线性回归
基本原理
通过最小化均方误差来学习线性模型参数,假设输出是输入特征的线性组合。
y = w₀ + w₁x₁ + w₂x₂ + ... + wₙxₙ + ε
求解方法
最小二乘法:直接求解正规方程;梯度下降:通过迭代优化损失函数。
逻辑回归
基本原理
通过 sigmoid 函数将线性组合映射到 [0,1] 区间,用于二分类问题。
P(y=1|x) = 1 / (1 + e^(-(w₀ + w₁x₁ + ... + wₙxₙ)))
损失函数
对数似然损失(交叉熵损失),通过梯度下降或牛顿法优化。
正则化方法
岭回归 (Ridge)
添加 L2 正则化项,防止过拟合,适用于特征高度相关的情况。
Loss = MSE + λ||w||²
LASSO
添加 L1 正则化项,不仅防止过拟合,还能实现特征选择(将不重要特征的权重置为0)。
Loss = MSE + λ||w||₁
Elastic Net
结合 L1 和 L2 正则化,平衡特征选择和稳定性。
Loss = MSE + λ₁||w||₁ + λ₂||w||²
开源实现
scikit-learn Linear Models
提供 LinearRegression、LogisticRegression、Ridge、Lasso、ElasticNet 等实现,支持多分类的 One-vs-Rest 和 Multinomial 策略。
statsmodels
提供更详细的统计信息和检验,适合需要统计推断的场景。
PyTorch nn.Linear
深度学习框架中的线性层,可用于构建更复杂的神经网络模型。
应用场景
- 线性回归:房价预测、销售预测、经济指标分析
- 逻辑回归:信用评分、 churn 预测、医疗诊断
- 岭回归:特征高相关的场景,如多重共线性问题
- LASSO:高维特征选择,如基因表达数据分析
- Elastic Net:结合两者优势,适用于特征数量大于样本数量的场景