本文详细介绍了线性回归算法,这是一种基础且重要的预测建模技术。它阐述了线性回归的核心思想——通过建立自变量与因变量的线性关系进行预测,并给出了数学表达式。文章深入探讨了最小二乘法在估计模型参数中的应用,以及正规方程的数学原理。此外,还分析了scikit-learn库中线性回归模型的核心参数和时间复杂度,并通过示例代码展示了如何使用该算法进行预测和评估。
🧠 线性回归的核心在于建立自变量与因变量之间的线性关系,用于预测或解释因变量的变化。模型假设因变量是自变量的线性组合,并包含一个误差项。
🧮 线性回归的目标是通过数据估计参数,使得模型能够最小化预测值与实际值之间的误差。最常用的方法是最小二乘法,即最小化残差平方和。
🛠️ 正规方程是线性回归的闭式解,可以直接求得最优参数。其核心公式为:β^=(XTX)−1XTy,其中X是特征矩阵,y是目标向量,β^是最优参数向量。该公式仅在XᵀX是满秩矩阵时有效。
⏱️ 线性回归的计算复杂度取决于求解参数的方法。最小二乘法的训练时间复杂度为O(f²n + f³),预测时间复杂度为O(f),其中f是特征数,n是样本数。
✅ 使用Python的scikit-learn库可以轻松实现线性回归。通过LinearRegression类,可以设置是否计算截距项和并行计算使用的处理器数量。示例代码展示了模型的训练、预测和评估过程。
线性回归算法详解
🧠 算法思想
线性回归 是统计学和机器学习中最基础的预测建模技术之一,其核心思想是通过建立自变量(特征)与因变量(目标)之间的线性关系,来预测或解释因变量的变化。线性回归模型假设因变量是自变量的线性组合,再加上一个误差项。
数学表达式
线性回归模型的一般形式为:
Y=β0+β1X1+β2X2+⋯+βnXn+ϵ 其中:
Y 是因变量(目标值)X1,X2,…,Xn 是自变量(特征)β0,β1,…,βn 是模型参数(系数)ϵ 是误差项(无法通过自变量解释的部分)
目标
线性回归的目标是通过数据估计参数 β,使得模型能够最小化预测值与实际值之间的误差。最常用的方法是 最小二乘法(Ordinary Least Squares, OLS),即最小化残差平方和:
Loss=i=1∑m(y(i)−(β0+β1x1(i)+⋯+βnxn(i)))2 其中 m 是样本数量,x(i) 是第 i 个样本的特征向量,y(i) 是实际输出值。
🧮 数学原理:正规方程
核心公式
线性回归的闭式解(闭合解)通过 正规方程 直接求得最优参数 β:
β^=(XTX)−1XTy 其中:
X 是特征矩阵(形状为 n×f,n 为样本数,f 为特征数)y 是目标向量(形状为 n×1)β^ 是最优参数向量(形状为 f×1)
该公式仅在 XᵀX
是满秩矩阵(即特征之间不存在完美的多重共线性)时才有效。如果 XᵀX
不可逆(奇异),通常意味着存在线性相关的特征或特征数量大于样本数量,此时需要使用岭回归等正则化方法或伪逆。
🛠️ 参数详解
在 scikit-learn
的 LinearRegression
中,核心参数如下:
参数名 | 说明 | 默认值/示例值 | 值的含义 |
---|
fit_intercept | 是否计算截距项 β0。 | True | - True :模型包含截距项(推荐) - False :模型不包含截距项 |
n_jobs | 并行计算使用的处理器数量。 | None | - 1 :单线程 - -1 :使用所有处理器(推荐) |
⏱️ 时间复杂度分析
线性回归的计算复杂度主要取决于求解参数的方法(如最小二乘法或梯度下降)。以下是不同方法的复杂度分析:
1. 最小二乘法(Normal Equation)
训练时间复杂度:O(f2n+f3)f 是特征数,n 是样本数。f2n:矩阵乘法 XTX 的复杂度。f3:矩阵求逆 (XTX)−1 的复杂度。
预测时间复杂度:O(f)每次预测只需计算 wTx+b,复杂度与特征数成正比。
✅ 示例代码
from sklearn.linear_model import LinearRegressionmodel = LinearRegression( n_jobs=-1)model.fit(X_train, y_train)score = model.score(X_test, y_test)print(f"模型 R² 分数: {score:.4f}")