线性回归超详细讲解(附完整实战代码)
线性回归(Linear Regression)是机器学习中最基础、最核心 的数值预测算法,也是回归问题的入门必修课。它通过建立特征与目标值之间的线性数学关系,实现对连续值的预测,原理简单、解释性强、计算高效,是本科生和研究生入门机器学习的首要掌握内容,也是后续学习复杂算法的基础。
本文将从通俗原理 、核心数学推导 、算法流程 、完整实战 、优缺点与算法对比五个维度展开,内容通俗易懂,公式做详细拆解,附带可直接运行的Python代码,适配本科课程学习和研究生入门实践。
一、什么是线性回归?(通俗理解)
线性回归的核心是找一条最贴合数据的直线,用直线公式描述特征和目标值的线性关系,从而实现对未知数据的预测。
举个最经典的房价预测 例子:
房子的面积 (x)是已知特征,价格 (y)是要预测的目标值,收集多组面积和价格的对应数据后,线性回归会找到一条直线,让所有数据点尽可能贴近这条直线,最终得到一个类似 y=mx+by = mx + by=mx+b 的公式,其中:
- yyy:预测值(如房价)
- xxx:特征值(如房屋面积)
- mmm:斜率,表示特征每增加1个单位,目标值的变化量(如面积每增加1㎡,房价涨2万元)
- bbb:截距,表示特征值为0时的目标值(数学上的必要值,实际场景中可能无实际意义,如面积为0时房价为0)
简单来说,线性回归就是用「直线公式」拟合数据规律,用规律做预测。
单特征vs多特征线性回归
- 一元线性回归 :只有1个特征,对应二维平面的一条直线,公式为 y=β0+β1xy = \beta_0 + \beta_1xy=β0+β1x(β0\beta_0β0为截距,β1\beta_1β1为斜率);
- 多元线性回归 :有多个特征,对应高维空间的一个超平面,公式为 y=β0+β1x1+β2x2+...+βnxny = \beta_0 + \beta_1x_1 + \beta_2x_2 + ... + \beta_nx_ny=β0+β1x1+β2x2+...+βnxn(x1,x2...xnx_1,x_2...x_nx1,x2...xn为多个特征,β1,β2...βn\beta_1,\beta_2...\beta_nβ1,β2...βn为各特征的系数)。
实战中多元线性回归更常用(如房价受面积、地段、楼层等多个特征影响),但核心原理和一元线性回归一致。
二、为什么要用线性回归?
作为机器学习的入门算法,线性回归的优势非常突出,也是它被广泛应用的原因:
- 简单易懂:核心是直线/超平面拟合,公式直观,零基础也能快速理解,结果易解释;
- 计算高效:模型参数求解仅需简单的数学计算,训练速度极快,适配大规模数据集;
- 可解释性强 :通过特征系数能直接看出每个特征对目标值的影响大小和方向 (正系数为正相关,负系数为负相关),适合金融、医疗等需要因果分析的场景;
- 基础通用性:是岭回归、Lasso回归、多项式回归等进阶算法的基础,掌握线性回归能快速上手其他回归算法;
- 应用广泛:适用于各种线性关系的预测场景,如房价预测、销售额预估、温度变化预测、股票趋势初步分析等。
三、线性回归的核心理论与数学推导
线性回归的数学核心是最小化误差平方和(SSE) ,找到能让预测值和真实值误差最小的模型参数(截距β0\beta_0β0和斜率/系数β1,β2...\beta_1,\beta_2...β1,β2...)。以下从一元线性回归展开推导,多元线性回归是其直接延伸,原理完全一致。
3.1 假设模型
首先假设特征xxx和目标值yyy之间存在线性关系,引入误差项ϵ\epsilonϵ (表示真实值与模型预测值的偏差,由随机因素、未考虑的特征等导致),得到线性回归的基本假设模型:
y=β0+β1x+ϵy = \beta_0 + \beta_1x + \epsilony=β0+β1x+ϵ
- β0\beta_0β0:截距(模型参数)
- β1\beta_1β1:斜率(模型参数)
- ϵ\epsilonϵ:误差项,满足均值为0、方差恒定的正态分布
模型的预测值 为去掉误差项的估计值:
y^=β0+β1x\hat{y} = \beta_0 + \beta_1xy^=β0+β1x
3.2 损失函数:误差平方和(SSE)
为了衡量模型的拟合效果,我们定义损失函数 来表示所有样本的预测误差总和,线性回归中最常用的是误差平方和(SSE) ,即所有样本真实值yiy_iyi与预测值y^i\hat{y}iy^i的差的平方和:
SSE=∑i=1n(yi−y^i)2=∑i=1n(yi−(β0+β1xi))2SSE = \sum{i=1}^{n}\left(y_{i} - \hat{y}{i}\right)^{2} = \sum{i=1}^{n}\left(y_{i} - (\beta_0 + \beta_1x_i)\right)^{2}SSE=i=1∑n(yi−y^i)2=i=1∑n(yi−(β0+β1xi))2
- nnn:样本数量
- yiy_iyi:第iii个样本的真实值
- xix_ixi:第iii个样本的特征值
为什么用平方和?
- 消除误差的正负号(正误差和负误差不会相互抵消);
- 放大较大误差的影响,让模型更关注偏差大的样本;
- 数学性质友好,可通过求导快速找到最小值(凸函数,只有一个全局最优解)。
3.3 最小化损失函数:求解模型参数
线性回归的目标是找到最优的β0\beta_0β0和β1\beta_1β1,让误差平方和(SSE)最小。
由于SSE是关于β0\beta_0β0和β1\beta_1β1的二次函数,我们可以通过对β0\beta_0β0和β1\beta_1β1求偏导数,并令偏导数为0,求解出使得SSE最小的参数值(极值点即为最小值点)。
步骤1:对β0\beta_0β0和β1\beta_1β1求偏导并令其为0
∂SSE∂β0=−2∑i=1n(yi−(β0+β1xi))=0\frac{\partial SSE}{\partial \beta_0} = -2 \sum_{i=1}^{n}\left(y_{i} - (\beta_0 + \beta_1x_i)\right) = 0∂β0∂SSE=−2i=1∑n(yi−(β0+β1xi))=0
∂SSE∂β1=−2∑i=1nxi(yi−(β0+β1xi))=0\frac{\partial SSE}{\partial \beta_1} = -2 \sum_{i=1}^{n}x_i\left(y_{i} - (\beta_0 + \beta_1x_i)\right) = 0∂β1∂SSE=−2i=1∑nxi(yi−(β0+β1xi))=0
步骤2:化简方程,得到线性方程组
消去常数-2,展开后整理得到关于β0\beta_0β0和β1\beta_1β1的线性方程组:
β0⋅n+β1⋅∑i=1nxi=∑i=1nyi(1)\beta_0 \cdot n + \beta_1 \cdot \sum_{i=1}^{n}x_i = \sum_{i=1}^{n}y_i \tag{1}β0⋅n+β1⋅i=1∑nxi=i=1∑nyi(1)
β0⋅∑i=1nxi+β1⋅∑i=1nxi2=∑i=1nxiyi(2)\beta_0 \cdot \sum_{i=1}^{n}x_i + \beta_1 \cdot \sum_{i=1}^{n}x_i^2 = \sum_{i=1}^{n}x_iy_i \tag{2}β0⋅i=1∑nxi+β1⋅i=1∑nxi2=i=1∑nxiyi(2)
步骤3:求解斜率β1\beta_1β1
通过解线性方程组,先求出斜率β1\beta_1β1的计算公式:
β1=n∑i=1nxiyi−∑i=1nxi∑i=1nyin∑i=1nxi2−(∑i=1nxi)2\beta_1 = \frac{n \sum_{i=1}^{n}x_iy_i - \sum_{i=1}^{n}x_i \sum_{i=1}^{n}y_i}{n \sum_{i=1}^{n}x_i^2 - \left(\sum_{i=1}^{n}x_i\right)^2}β1=n∑i=1nxi2−(∑i=1nxi)2n∑i=1nxiyi−∑i=1nxi∑i=1nyi
为了更易理解和计算,β1\beta_1β1也可以表示为特征与目标值的协方差 除以特征的方差 ,形式更简洁:
β1=∑i=1n(xi−xˉ)(yi−yˉ)∑i=1n(xi−xˉ)2\beta_1 = \frac{\sum_{i=1}^{n}(x_i - \bar{x})(y_i - \bar{y})}{\sum_{i=1}^{n}(x_i - \bar{x})^2}β1=∑i=1n(xi−xˉ)2∑i=1n(xi−xˉ)(yi−yˉ)
其中xˉ=1n∑i=1nxi\bar{x} = \frac{1}{n}\sum_{i=1}^{n}x_ixˉ=n1∑i=1nxi,yˉ=1n∑i=1nyi\bar{y} = \frac{1}{n}\sum_{i=1}^{n}y_iyˉ=n1∑i=1nyi,分别为特征xxx和目标值yyy的均值。
步骤4:求解截距β0\beta_0β0
将β1\beta_1β1代入方程(1),化简后得到截距β0\beta_0β0的计算公式:
β0=yˉ−β1⋅xˉ\beta_0 = \bar{y} - \beta_1 \cdot \bar{x}β0=yˉ−β1⋅xˉ
3.4 多元线性回归的参数求解
对于有kkk个特征的多元线性回归,模型公式为:
y^=β0+β1x1+β2x2+...+βkxk\hat{y} = \beta_0 + \beta_1x_1 + \beta_2x_2 + ... + \beta_kx_ky^=β0+β1x1+β2x2+...+βkxk
其参数求解可通过矩阵运算 实现,公式为:
β^=(XTX)−1XTy\hat{\beta} = (X^TX)^{-1}X^Tyβ^=(XTX)−1XTy
- XXX:特征矩阵(nnn行k+1k+1k+1列,第一列为全1,对应截距β0\beta_0β0)
- yyy:目标值向量(nnn行1列)
- β^\hat{\beta}β^:参数向量(β0,β1...βk\beta_0,\beta_1...\beta_kβ0,β1...βk,k+1k+1k+1行1列)
- (XTX)−1(X^TX)^{-1}(XTX)−1:矩阵XTXX^TXXTX的逆矩阵
sklearn中的线性回归模型就是通过矩阵运算实现的,无需手动计算,了解原理即可。
四、线性回归的完整算法流程
线性回归的训练流程非常清晰,从数据准备到模型评估,共6个核心步骤,单特征和多特征均适用:
- 收集数据 :获取包含特征xxx(单/多个)和目标值yyy的样本数据;
- 计算均值 :计算特征的均值xˉ\bar{x}xˉ和目标值的均值yˉ\bar{y}yˉ(多元则计算每个特征的均值);
- 求解参数 :根据公式计算斜率/系数β1\beta_1β1(多元则β1,β2...\beta_1,\beta_2...β1,β2...)和截距β0\beta_0β0;
- 构建模型 :得到线性回归方程y^=β0+β1x\hat{y} = \beta_0 + \beta_1xy^=β0+β1x(多元则扩展特征项);
- 模型预测 :将新样本的特征值代入方程,得到预测值y^\hat{y}y^;
- 模型评估 :通过均方误差(MSE) 、决定系数 (R2R^2R2)等指标判断模型拟合效果。
核心评估指标
1. 均方误差(MSE)
表示预测值与真实值的平均平方误差 ,值越小,模型拟合效果越好:
MSE=1n∑i=1n(yi−y^i)2MSE = \frac{1}{n} \sum_{i=1}^{n}(y_i - \hat{y}_i)^2MSE=n1i=1∑n(yi−y^i)2
2. 决定系数(R2R^2R2)
表示模型能解释的目标值变异的比例 ,取值范围为(−∞,1](-\infty,1](−∞,1],越接近1,模型拟合效果越好:
R2=1−∑i=1n(yi−y^i)2∑i=1n(yi−yˉ)2R^2 = 1 - \frac{\sum_{i=1}^{n}(y_i - \hat{y}i)^2}{\sum{i=1}^{n}(y_i - \bar{y})^2}R2=1−∑i=1n(yi−yˉ)2∑i=1n(yi−y^i)2
- 分子:模型的预测误差平方和(SSE);
- 分母:目标值的总变异平方和(总误差);
- 物理意义:R2=0.8R^2=0.8R2=0.8表示模型能解释80%的目标值变化,剩余20%由随机因素或未考虑的特征导致。
理想情况 :R2=1R^2=1R2=1,表示预测值完全等于真实值;R2=0R^2=0R2=0,表示模型预测效果和直接取目标值均值一样。
五、线性回归完整实战(Python+加州房价数据集)
本次实战使用加州房价数据集 (sklearn内置公开数据集),实现多元线性回归 的全流程,包括数据加载→模型训练→可视化→评估→优化 ,使用sklearn的LinearRegression实现,代码可直接复制运行,注释详细,适配Python3.7+、sklearn1.0+。
5.1 实战目标
通过房屋的平均收入、房间数、房屋年龄、经纬度等8个特征,预测房屋的中位数价格,掌握线性回归的实战应用、模型评估和优化方法。
5.2 完整代码与步骤解释
步骤1:导入所需库
python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 数据划分
from sklearn.model_selection import train_test_split
# 线性回归模型
from sklearn.linear_model import LinearRegression
# 模型评估指标
from sklearn.metrics import mean_squared_error, r2_score
# 加载数据集
from sklearn.datasets import fetch_california_housing
# 数据预处理:标准化、特征选择
from sklearn.preprocessing import StandardScaler
from sklearn.feature_selection import SelectKBest, f_regression
# 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
步骤2:加载并查看数据集
数据集无缺失值,直接添加目标值列,查看数据基本信息:
python
# 加载加州房价数据集
california = fetch_california_housing()
# 转换为DataFrame,添加特征名
data = pd.DataFrame(california.data, columns=california.feature_names)
# 添加目标值:房屋中位数价格(单位:10万美元)
data['MedHouseVal'] = california.target
# 查看数据集前5行和基本信息
print("数据集前5行:")
print(data.head())
print("\n数据集基本信息:")
print(data.info())
print(f"\n数据集形状(样本数×特征数):{data.shape}")
步骤3:构建多元线性回归模型
拆分训练集(80%)和测试集(20%),训练线性回归模型并进行预测:
python
# 分离特征矩阵X和目标值向量y
X = data.drop('MedHouseVal', axis=1)
y = data['MedHouseVal']
# 拆分训练集和测试集,random_state=42保证结果可复现
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
print(f"训练集样本数:{X_train.shape[0]},测试集样本数:{X_test.shape[0]}")
# 初始化并训练线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)
# 对训练集和测试集进行预测
y_train_pred = model.predict(X_train)
y_test_pred = model.predict(X_test)
# 打印模型参数:截距和各特征系数
print(f"\n模型截距(β0):{model.intercept_:.4f}")
print("各特征系数(β1~β8):")
for feat, coef in zip(X.columns, model.coef_):
print(f"{feat}: {coef:.4f}")
系数解读 :系数为正表示该特征与房价正相关(如MedInc(平均收入)系数为正,收入越高房价越高),系数为负表示负相关(如Latitude(纬度)系数为负,纬度越高房价越低)。
步骤4:模型结果可视化
通过真实值vs预测值散点图 和残差分布直方图,直观判断模型拟合效果:
python
# 可视化1:真实值 vs 预测值
plt.figure(figsize=(10, 5))
# 训练集(蓝色)、测试集(红色)
plt.scatter(y_train, y_train_pred, color='blue', alpha=0.6, label='训练集')
plt.scatter(y_test, y_test_pred, color='red', alpha=0.6, label='测试集')
# 理想预测线(预测值=真实值)
plt.plot([y.min(), y.max()], [y.min(), y.max()], '--black', linewidth=2)
plt.xlabel('真实房价(10万美元)')
plt.ylabel('预测房价(10万美元)')
plt.title('线性回归-真实值 vs 预测值')
plt.legend()
plt.show()
# 可视化2:残差分布(真实值-预测值)
plt.figure(figsize=(10, 5))
sns.histplot(y_train - y_train_pred, bins=50, kde=True, color='blue', label='训练集')
sns.histplot(y_test - y_test_pred, bins=50, kde=True, color='red', label='测试集')
plt.xlabel('残差(真实值-预测值)')
plt.ylabel('样本数量')
plt.title('线性回归-残差分布')
plt.legend()
plt.show()
可视化解读:
- 散点越贴近黑色理想线,模型预测效果越好;
- 残差分布接近均值为0的正态分布,说明模型的误差是随机的,拟合效果较好;若残差分布有明显偏态,说明模型未捕捉到数据的部分规律。
步骤5:模型性能评估
通过均方误差(MSE)和决定系数 (R2R^2R2)量化评估模型在训练集和测试集上的表现:
python
# 评估训练集性能
mse_train = mean_squared_error(y_train, y_train_pred)
r2_train = r2_score(y_train, y_train_pred)
# 评估测试集性能
mse_test = mean_squared_error(y_test, y_test_pred)
r2_test = r2_score(y_test, y_test_pred)
# 打印评估结果
print("=== 基础模型性能评估 ===")
print(f"训练集 MSE:{mse_train:.4f},训练集 R²:{r2_train:.4f}")
print(f"测试集 MSE:{mse_test:.4f},测试集 R²:{r2_test:.4f}")
基础模型结果 :测试集R2R^2R2约0.58,说明线性回归能解释58%的房价变化,由于房价与特征存在部分非线性关系,该结果符合预期。
步骤6:模型优化(特征选择+标准化)
线性回归对特征冗余、量纲差异敏感,通过特征选择 (筛选重要特征)和标准化(统一特征量纲)优化模型,提升预测性能:
python
# 1. 特征选择:选择K个与目标值相关性最高的特征(此处K=6)
selector = SelectKBest(f_regression, k=6)
X_new = selector.fit_transform(X, y)
# 查看选中的特征
selected_feats = [X.columns[i] for i in selector.get_support(indices=True)]
print(f"\n选中的6个特征:{selected_feats}")
# 2. 重新划分训练集和测试集
X_train_new, X_test_new, y_train_new, y_test_new = train_test_split(
X_new, y, test_size=0.2, random_state=42
)
# 3. 数据标准化:统一特征量纲,消除量纲差异的影响
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train_new)
X_test_scaled = scaler.transform(X_test_new)
# 4. 训练优化后的线性回归模型
model_new = LinearRegression()
model_new.fit(X_train_scaled, y_train_new)
# 5. 预测并评估优化后模型
y_train_pred_new = model_new.predict(X_train_scaled)
y_test_pred_new = model_new.predict(X_test_scaled)
mse_train_new = mean_squared_error(y_train_new, y_train_pred_new)
r2_train_new = r2_score(y_train_new, y_train_pred_new)
mse_test_new = mean_squared_error(y_test_new, y_test_pred_new)
r2_test_new = r2_score(y_test_new, y_test_pred_new)
# 打印优化后结果
print("\n=== 优化后模型性能评估 ===")
print(f"训练集 MSE:{mse_train_new:.4f},训练集 R²:{r2_train_new:.4f}")
print(f"测试集 MSE:{mse_test_new:.4f},测试集 R²:{r2_test_new:.4f}")
优化结果解读 :优化后测试集R2R^2R2会小幅提升,MSE降低,说明特征选择和标准化能有效提升线性回归的预测性能。
六、线性回归的优缺点
线性回归作为基础算法,优势突出,但也存在明显的局限性,优缺点总结如下,适配本科/研究生课程考点和实战选型参考:
6.1 核心优点
- 简单易懂,易解释 :模型是直观的线性公式,参数(系数)能直接反映特征对目标值的影响,适合需要模型解释性的场景(如金融风控、医疗诊断);
- 计算高效,训练速度快:参数求解仅需矩阵运算或简单的数学计算,无需迭代训练,适配大规模数据集的快速建模;
- 无超参数,无需调参:模型没有需要手动设置的超参数,开箱即用,降低了使用门槛;
- 可扩展性强:是岭回归、Lasso回归、弹性网络等正则化回归算法的基础,也可扩展为多项式回归处理简单非线性关系;
- 对小数据集友好:即使样本量较少,也能训练出稳定的模型,而复杂算法(如随机森林、GBDT)在小数据集上易过拟合。
6.2 核心缺点
- 严格的线性假设 :假设特征与目标值之间存在线性关系 ,但实际场景中大多数数据是非线性的,此时线性回归拟合效果差;
- 对异常值极其敏感:异常值会极大地影响模型参数的求解(尤其是斜率),少量异常值就可能导致模型偏差严重,训练前需做异常值处理;
- 存在多重共线性问题 :当特征之间存在强相关性(如身高和体重、面积和房间数)时,模型系数会变得不稳定,解释性降低,甚至出现系数符号异常;
- 对特征预处理要求高 :需要做特征选择、标准化、缺失值补全、异常值处理等预处理,否则会严重影响模型性能;
- 无法捕捉复杂规律:只能拟合线性关系,对于特征之间的交互作用、非线性关系无法捕捉,此时需要使用决策树、随机森林等复杂算法。
七、线性回归与相似回归算法的对比
为了让大家在实战中精准选算法 ,以下对比线性回归与多项式回归、决策树回归、随机森林回归、SVR、梯度提升回归(GBDT)的适用场景、优点、缺点,表格简洁明了,适配本科课程考核和研究生实战选型:
| 算法 | 适用场景 | 核心优点 | 核心缺点 |
|---|---|---|---|
| 线性回归 | 特征与目标值呈线性关系、需要高解释性、大规模数据快速建模 | 简单易懂、计算高效、可解释性强、无超参数 | 仅处理线性关系、对异常值敏感、多重共线性问题 |
| 多项式回归 | 特征与目标值存在简单非线性关系(如二次/三次关系) | 基于线性回归扩展、能拟合简单非线性、易解释 | 高次多项式易过拟合、对异常值仍敏感 |
| 决策树回归 | 数据有分段特征、非线性关系且不连续、需要一定解释性 | 对异常值不敏感、无需特征缩放、能处理非线性 | 易过拟合、模型不稳定 |
| 随机森林回归 | 复杂非线性关系、高维数据、追求模型稳定性 | 抗过拟合、鲁棒性高、无需特征缩放、自动特征选择 | 计算量大、可解释性差、对高维稀疏数据不友好 |
| 支持向量机回归(SVR) | 小数据集、高维特征、复杂非线性边界 | 泛化能力强、能处理非线性、适合高维数据 | 参数调优复杂、计算成本高、不适用于大数据集 |
| 梯度提升回归(GBDT) | 高精度预测需求、中等规模数据、复杂非线性关系 | 预测精度极高、能捕捉复杂规律、自动特征选择 | 计算成本高、串行训练慢、超参数调优复杂 |
关键选型结论
优先选线性回归的情况
- 特征与目标值之间存在明显的线性关系(可通过相关性分析验证);
- 任务对模型解释性要求高,需要明确分析每个特征对目标值的影响;
- 数据集规模大,需要快速建模和预测,对计算效率要求高;
- 数据集样本量小,复杂算法易过拟合;
- 作为基础建模,快速验证数据规律,为后续复杂算法提供参考。
考虑其他算法的情况
- 特征与目标值存在非线性关系 :简单非线性选多项式回归 ,复杂非线性选随机森林/GBDT;
- 数据中异常值较多 :选决策树回归/随机森林回归(对异常值鲁棒);
- 特征之间多重共线性严重 :选岭回归/Lasso回归(线性回归的正则化版本);
- 对预测精度要求极高 ,对解释性无要求:选随机森林/GBDT/XGBoost;
- 高维稀疏数据(如文本、推荐系统):选SVR/LightGBM。
八、线性回归的进阶扩展
线性回归的局限性可通过一系列进阶算法解决,这些算法均基于线性回归的核心思想,是本科和研究生阶段的延伸学习内容,重点推荐3个:
1. 正则化回归:解决过拟合和多重共线性
- 岭回归(Ridge Regression) :加入L2正则化,惩罚系数的平方和,让系数更稳定,解决多重共线性问题;
- Lasso回归(L1正则化) :加入L1正则化 ,惩罚系数的绝对值和,能将不重要的特征系数置为0,实现特征选择;
- 弹性网络(Elastic Net):结合L1和L2正则化,兼顾特征选择和系数稳定性,适用于高维数据。
2. 多项式回归:解决简单非线性关系
在线性回归的基础上,引入特征的高次项(如x2x^2x2、x1x2x_1x_2x1x2) ,将非线性关系转换为线性关系,拟合简单的非线性数据,公式为:
y^=β0+β1x+β2x2+...+βnxn\hat{y} = \beta_0 + \beta_1x + \beta_2x^2 + ... + \beta_nx^ny^=β0+β1x+β2x2+...+βnxn
3. 广义线性模型(GLM):扩展至非连续目标值
将线性回归的思想扩展到分类问题 (如逻辑回归)、计数问题 (如泊松回归),通过链接函数将线性预测值映射到目标值的取值范围,是线性回归的重要延伸。
九、总结
- 线性回归是机器学习回归问题的入门算法 ,核心是用线性公式拟合特征与目标值的关系 ,通过最小化误差平方和求解模型参数;
- 线性回归的最大优势是简单易懂、可解释性强、计算高效,适合线性关系明显、需要高解释性的场景,也是后续学习复杂算法的基础;
- 线性回归的最大局限性是严格的线性假设,对异常值、多重共线性敏感,无法处理复杂非线性关系,实战中需做好数据预处理;
- 线性回归的局限性可通过正则化回归(岭/Lasso) 、多项式回归 、广义线性模型解决,这些是线性回归的直接延伸;
- 实战选型时,若数据为线性关系且需要解释性,优先选线性回归;若为非线性关系且追求精度,选随机森林、GBDT等集成学习算法。
拓展学习 :掌握线性回归后,可依次学习岭回归/Lasso回归 (解决多重共线性)、多项式回归 (处理简单非线性)、逻辑回归(线性回归扩展至分类),再过渡到决策树、随机森林等复杂算法,形成完整的机器学习知识体系。