Skip to content

Scikit Learn - 线性建模

本章提供了 Scikit-Learn 中各种线性模型的概述。线性模型是机器学习中一类基础模型,用于回归和分类任务。

线性模型基于输入特征的线性组合来预测目标值。对于回归,模型形式为 y_pred = w_1*x_1 + ... + w_p*x_p + b,其中 w 是系数,b 是截距。对于分类,类似的线性组合通常通过一个函数(如逻辑回归的 sigmoid 函数)传递,或用于定义决策边界(如在 SVMs 中)。

Scikit-Learn 提供了一套丰富的线性建模工具,通常位于 sklearn.linear_model 模块中。这里简要介绍一些常见的线性模型:

Model NameBrief Description & Use Case
1Linear Regression (LinearRegression)
拟合一个线性模型,以最小化数据集中观测目标值与线性近似预测目标值之间的残差平方和。用于假定特征与目标之间关系是线性的回归任务。
2Logistic Regression (LogisticRegression)
尽管名称如此,Logistic Regression 是一种用于分类(二分类或多分类)的线性模型。它使用一个 logistic (sigmoid) 函数来模拟类别的概率。它广泛用于二分类问题,并可扩展到多类别设置(例如,通过 one-vs-rest)。
3Ridge Regression (Ridge, RidgeCV)
一种包含 L2 正则化(对系数幅度的平方进行惩罚)的线性回归模型。这有助于通过收缩系数来防止过拟合,在处理多重共线性(高度相关的特征)时特别有用。RidgeCV 包含内置的交叉验证以找到最佳正则化强度 (alpha)。
4LASSO Regression (Lasso, LassoCV)
Least Absolute Shrinkage and Selection Operator。一种包含 L1 正则化(对系数的绝对值进行惩罚)的线性回归模型。LASSO 可以将一些系数收缩到恰好为零,有效地执行特征选择。LassoCV 包含用于选择 alpha 的交叉验证。
5Elastic-Net (ElasticNet, ElasticNetCV)
一种结合了 L1 和 L2 正则化的线性回归模型。当存在多个相关特征(LASSO 可能随意选择一个,而 Elastic-Net 倾向于选择一组)或当特征数量远大于样本数量时,它很有用。ElasticNetCV 包含用于选择 alpha 和 l1_ratio 的交叉验证。
6Bayesian Ridge Regression (BayesianRidge)
Ridge 回归的贝叶斯方法。它不是寻找系数的单一最佳值,而是估计它们的概率分布。它对病态问题具有鲁棒性,并可以提供对其预测的不确定性估计。
7Stochastic Gradient Descent (SGDClassifier, SGDRegressor)
优化算法,可以通过一次处理一个样本(或一个 mini-batch)并迭代更新系数来拟合各种线性模型(例如,线性 SVM、逻辑回归、线性回归)。对于大型数据集非常高效。
8Perceptron (Perceptron)
最简单的线性分类算法之一。它是一种在线学习算法,如果在训练样本上发生错误分类,它会更新其权重。
9Passive Aggressive Algorithms (PassiveAggressiveClassifier, PassiveAggressiveRegressor)
用于分类和回归的在线学习算法。如果预测正确,它们是“被动”的;如果发生错误分类或预测误差超过阈值,则在更新权重时是“积极”的。
10Huber Regressor (HuberRegressor)
一种对离群点具有鲁棒性的线性回归模型。它对被分类为离群点的样本使用线性损失,对内点使用平方损失。epsilon 参数控制这种转换。
11Multi-task Lasso (MultiTaskLasso)
一种 Lasso 模型,它联合估计多个回归问题的稀疏系数,强制跨所有任务选择相同的特征。当输出变量相关时有用。
12Multi-task Elastic-Net (MultiTaskElasticNet)
一种 Elastic-Net 模型,与 Multi-task Lasso 一样,它联合拟合多个回归问题,同时共享特征。结合了每个任务的 L1 和 L2 惩罚。

线性模型的主要考虑因素:

  • **Feature Scaling(特征缩放):**许多线性模型,特别是那些使用梯度下降(如 SGD)或正则化的模型,在特征缩放到相似范围(例如,使用 StandardScaler 或 MinMaxScaler)时表现更好。
  • Regularization(正则化): Ridge (L2)、Lasso (L1) 和 Elastic-Net 等技术有助于防止过拟合并可以提高模型的泛化能力,尤其是在处理高维数据或多重共线性时。
  • **Interpretability(可解释性):**线性模型通常比复杂的非线性模型更具可解释性,因为系数可以表明每个特征对目标的影响强度和方向。
  • **Assumptions(假设):**经典线性回归有一些假设,如线性性、误差独立性、同方差性(误差方差恒定)和误差正态性。虽然 Scikit-Learn 模型更侧重于预测能力,但理解这些假设对于诊断可能很有帮助。

这些模型中的每一个都有其特定的参数、用例和优势。后续章节或特定文档页面将深入探讨各个线性模型的细节。有关完整列表和详细信息,请参阅 Scikit-Learn 线性模型文档。