python机器学习 线性回归(LinearRegression)

为什么要学习线性模型

线性模型是机器学习与数据分析中最基础、也最重要的一类模型。

学习线性模型的意义在于:

  • 模型结构简单,数学含义清楚
  • 可解释性强,适合分析变量影响
  • 训练速度快,常作为基准模型
  • 是理解正则化、泛化能力和过拟合的起点

一句话总结:如果不理解线性模型,就很难真正理解机器学习模型在做什么。


线性回归(Linear Regression)

1. 基本概念

线性回归假设目标变量与特征之间存在线性关系:

\[y = w_1x_1 + w_2x_2 + \dots + w_nx_n + b\]

其中:

  • (x) 是特征
  • (y) 是预测目标
  • (w) 是权重,表示特征的重要性
  • (b) 是偏置或截距

模型的目标是找到一组参数,使预测值与真实值之间的误差最小。


2. sklearn 实现

from sklearn.linear_model import LinearRegression

model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

3. 优缺点

优点:

  • 结构清晰,结果容易解释
  • 计算效率高
  • 适合作为 baseline 模型

缺点:

  • 容易受到异常值影响
  • 当特征相关性强时,模型不稳定
  • 无法拟合复杂的非线性关系

岭回归(Ridge Regression)

1. 为什么需要岭回归

当特征数量较多或特征之间高度相关时,普通线性回归容易出现:

  • 权重数值过大
  • 对数据扰动非常敏感
  • 测试集表现下降

岭回归通过正则化来缓解这些问题。


2. 核心思想

岭回归在损失函数中加入 L2 正则项:

\[Loss = MSE + \lambda \sum w^2\]

作用是限制模型参数的大小,从而提高泛化能力。

岭回归的特点:

  • 所有特征都会被保留
  • 权重会被压缩,但不会变成 0

3. sklearn 实现

from sklearn.linear_model import Ridge

model = Ridge(alpha=1.0)
model.fit(X_train, y_train)

套索回归(Lasso Regression)

1. 核心思想

Lasso 回归在损失函数中加入 L1 正则项:

\[Loss = MSE + \lambda \sum |w|\]

与岭回归不同,Lasso 会将部分不重要特征的权重压缩为 0。


2. 主要特点

  • 可以自动进行特征选择
  • 模型更稀疏
  • 当特征很多时非常有用

3. sklearn 实现

from sklearn.linear_model import Lasso

model = Lasso(alpha=0.1)
model.fit(X_train, y_train)

模型评估指标

1. MSE(均方误差)

\[MSE = \frac{1}{n}\sum(y - \hat{y})^2\]

特点:

  • 越小越好
  • 对异常值非常敏感
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, y_pred)

2. RMSE(均方根误差)

\[RMSE = \sqrt{MSE}\]

特点:

  • 与原始数据单位一致
  • 更容易解释误差大小
rmse = mean_squared_error(y_test, y_pred, squared=False)

3. R²(决定系数)

\[R^2 = 1 - \frac{残差平方和}{总平方和}\]

含义:

  • 越接近 1,模型解释能力越强
  • 可能为负,表示模型表现很差
from sklearn.metrics import r2_score
r2 = r2_score(y_test, y_pred)

教学重点总结

  1. 线性回归是所有监督学习模型的基础
  2. 岭回归用于缓解过拟合和特征相关问题
  3. 套索回归可用于特征选择
  4. MSE 和 RMSE 衡量预测误差大小
  5. R² 衡量模型对数据的解释能力