当前位置: 首页 > news >正文

线性回归的学习

一、线性回归核心定义与目标

线性回归是一种通过属性的线性组合实现预测的线性模型,核心目标是找到一条直线(二维)、一个平面(三维)或更高维的超平面,使模型预测值与真实值的误差最小化。

1. 基础形式(以二维为例)

针对 “房屋大小 - 价格” 这类单特征场景,模型表达式为:

f(x) = W₀ + W₁x

其中,x 为房屋大小(特征),W₀ 为截距,W₁ 为特征系数,f(x) 为预测价格。

2. 一般形式(多特征场景)

对于由 d 个属性描述的样本 x = (x₁; x₂; ⋅⋅⋅; x_d)(x_i 为样本在第 i 个属性的取值),线性模型的通用表达式为:

展开式:f(x) = w₁x₁ + w₂x₂ + ... + w_dx_d + b

向量形式:f(x) = w^T x + b

其中,w = (w₁; w₂; ⋅⋅⋅; w_d) 为特征系数向量,b 为截距,w^T 表示 w 的转置。

二、线性回归的求解方法:最小二乘法

1. 核心原理

均方误差对应 “欧氏距离”,基于均方误差最小化求解模型参数的方法称为 “最小二乘法”。其本质是找到一条直线(或超平面),使所有样本到该直线(或超平面)的欧氏距离之和最小。

2. 参数估计过程

定义损失函数 E(w,b):衡量预测值与真实值的误差,表达式为所有样本误差的平方和:

E(w,b) = Σ(从i=1到m)[y_i - (w x_i + b)]²

其中,m 为样本数量,y_i 为第 i 个样本的真实值,w x_i + b 为第 i 个样本的预测值。

参数求解目标:找到最优的 w(系数)和 b(截距),使 E(w,b) 最小化,即:

(w^, b^) = argmin(w,b)E(w,b)

求解方式:对 E(w,b) 分别关于 w 和 b 求导,令导数为 0,可得到最优参数的解析解:

系数 w:w = [Σ(从i=1到m)(x_i - x̄)(y_i - ȳ)] / [Σ(从i=1到m)(x_i - x̄)²](x̄ 为样本特征均值,ȳ 为样本真实值均值)

截距 b:b = ȳ - w x̄

三、线性回归的核心评估指标

PPT 中重点介绍了 3 类评估指标,用于衡量模型拟合效果,具体如下:

1. 误差平方和 / 残差平方和(SSE/RSS)

定义:所有样本 “真实值 - 预测值” 的平方总和,反映模型整体误差大小。

公式:SSE = Σ(从i=1到m)(y_i - ŷ_i)²(ŷ_i 为第 i 个样本的预测值)

特点:值越小,模型误差越小;但受样本数量影响,无法直接横向对比不同样本量的模型。

2. 平方损失 / 均方误差(MSE)

定义:SSE 的平均值,消除了样本数量对误差的影响,是回归任务中最常用的指标之一。

公式:MSE = (1/m) * Σ(从i=1到m)(y_i - ŷ_i)²

特点:值越小,模型拟合效果越好;单位为 “目标变量单位的平方”(如房价预测中,单位为 “美元 ²”)。

3. 决定系数(R²)

定义:衡量模型对数据变异的解释能力,取值范围为 (-∞, 1],越接近 1,模型拟合效果越好。

核心逻辑:通过对比 “模型误差” 与 “真实值自身波动” 的比例来评估拟合度,公式有两种等价形式:

形式 1(基于平方和):R² = 1 - (SSE / SST)

形式 2(基于 MSE 和方差):R² = 1 - (MSE / Var(y))

其中,SST = Σ(从i=1到m)(y_i - ȳ)²(真实值与均值的平方和,即总平方和),Var(y) 为真实值的方差。

示例:PPT 中给出的拟合案例(y = 1.595x + 0.2321),R² = 0.9322,说明模型能解释 93.22% 的数据变异,拟合效果优秀。

四、多元线性回归

当样本包含多个特征时,线性回归扩展为 “多元线性回归”,核心逻辑与单特征一致,但模型形式和参数维度更复杂。

1. 模型表达式

对于包含 n 个特征的样本,预测公式为:

ŷ = w₀ + w₁x₁ + w₂x₂ + ... + w_nx_n

其中,w₀ 为截距,w₁~w_n 为各特征的系数,x₁~x_n 为样本的各特征取值。

2. 矩阵形式(便于计算)

将 m 个样本的特征组织为特征矩阵 X(m 行 n 列,每行对应一个样本,每列对应一个特征),参数组织为系数向量 w(n+1 维,包含 w₀ 截距),则模型可表示为:

Ŷ = X w

其中,Ŷ 为 m 个样本的预测值向量(m 维)。

五、课堂练习:线性回归实践(波士顿房价预测)

PPT 以 “波士顿房价预测” 为例,给出了基于 scikit-learn 库的线性回归实践方向,核心内容如下:

1. 核心 API

使用 sklearn.linear_model.LinearRegression() 类实现线性回归,关键参数说明:

fit_intercept:布尔值,是否包含截距(b),默认 True(若设为 False,模型直线过原点)。

normalize:布尔值,是否对输入数据做归一化处理,默认 False(若需归一化,建议先使用 StandardScaler 预处理)。

2. 实践目标

通过加载波士顿房价数据集(注:因伦理问题,sklearn 1.2+ 版本已移除 load_boston,需用加州房价数据集等替代),构建线性回归模型,预测房价并通过 MSE、R² 等指标评估模型效果。

六、总结

本次主要围绕线性回归的 “定义 - 求解 - 评估 - 扩展 - 实践” 展开,核心逻辑可概括为:

  1. 线性回归通过线性组合特征实现预测,目标是最小化误差;
  1. 最小二乘法是求解线性回归参数的核心方法,通过求导得到最优解析解;
  1. 评估模型需结合 SSE(整体误差)、MSE(平均误差)、R²(解释能力),其中 R² 是最直观的拟合效果指标;
  1. 多元线性回归是单特征场景的扩展,通过矩阵形式简化多特征计算;
  1. 实践中可基于 scikit-learn 快速实现,需注意参数设置(如是否包含截距)和数据集选择。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_california_housing  # 替换为加州房价数据集
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.preprocessing import StandardScaler
import matplotlib
# 强制使用Tkinter后端,这是最稳定的选择之一
matplotlib.use('TkAgg', force=True)# 中文显示配置
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
plt.rcParams["axes.unicode_minus"] = False# 加载加州房价数据集
california = fetch_california_housing()
X = california.data  # 特征数据
y = california.target  # 房价数据(单位:10万美元)# 数据集划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42
)# 数据标准化
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)# 创建并训练线性回归模型
model = LinearRegression()
model.fit(X_train_scaled, y_train)# 模型预测
y_pred = model.predict(X_test_scaled)# 模型评估
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
r2 = r2_score(y_test, y_pred)print(f"均方误差 (MSE): {mse:.4f}")
print(f"均方根误差 (RMSE): {rmse:.4f}")  # 单位:10万美元
print(f"决定系数 (R²): {r2:.4f}")# 可视化预测结果
plt.figure(figsize=(10, 6))
plt.scatter(y_test, y_pred, alpha=0.6, label='预测值与实际值')
plt.plot([y.min(), y.max()], [y.min(), y.max()], 'r--', label='理想预测线')
plt.xlabel('实际房价(10万美元)')
plt.ylabel('预测房价(10万美元)')
plt.title('实际房价 vs 预测房价')
plt.legend()
plt.show()

因为波士顿与现在版本不兼容,所以用加州房价预测来代替波士顿。

http://www.dtcms.com/a/344744.html

相关文章:

  • C++ unistd.h库文件介绍(文件与目录操作, 进程管理, 系统环境访问, 底层I/O操作, 系统休眠/执行控制)
  • golang 非error错误分类
  • 【如何生成专业级 API 接口文档:从规范到实战】
  • 指针实现数组的逆序存放并输出
  • IKE 与 ISAKMP 核心笔记
  • JCTools Spmc 单生产者-多消费者的无锁并发有界队列
  • 支持轻量化部署的混元3D世界模型Lite版本上线魔乐社区,昇腾部署实践来啦
  • FCT/ATE/ICT通用测试上位机软件
  • Leetcode—595. 大的国家【简单】
  • JUC之Fork/Join
  • WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析9
  • 2-3.Python 编码基础 - 类型检测与类型转换
  • Vue 实现可拖拽分割布局(支持左右、上下拖拽调整)
  • Java 学习笔记(基础篇7)
  • 2025年游戏盾SDK动态加密技术全景解析:从防御破解到重塑游戏安全基石
  • CSM5110 5V/1A降压芯片 SOT23-5封装 可替代RY3408 带OVP保护
  • vim的使用
  • 牛客面经1 滴滴社招-002
  • JAVA国际版多商户运营版商城系统源码多商户社交电商系统源码支持Android+IOS+H5
  • 哈希和字符串哈希
  • STM32 外设驱动模块七:红外反射式光电模块
  • Centos 8 管理防火墙
  • 安装Tailscale
  • Maven初识到应用
  • 【AI应用】向量数据库Milvus详细命令
  • Jenkins + SonarQube 从原理到实战四:Jenkins 与 Gerrit 集成并实现自动任务
  • Linux爆音问题解决方法(隔一会会有奇怪噪音)
  • Go 基础解析
  • 逛越南本地菜市场学英语
  • 异质结3.0时代的降本提效革命:捷造科技设备技术创新与产业拐点分析