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

线性回归学习笔记

一、线性回归简介

1. 核心定义

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

2. 适用场景

适用于回归任务(预测连续型输出,如房价、销售额、温度等),例如通过“房屋大小”预测“房屋价格”,通过“房间数量”“面积”等多特征预测“波士顿房价”。

3. 模型数学形式

(1)单特征线性回归(简单线性回归)

仅含1个输入特征(如房屋大小),模型形式为:
f(x) = w_0 + w_1x
x:输入特征(如房屋大小);

        w_0:截距(直线与y轴交点,也可写作b);

        w_1:特征权重(直线斜率,反映特征对预测结果的影响程度);

        f(x):模型预测值(如预测房价)。

(2)多特征线性回归(多元线性回归)

含d个输入特征(如房间数、面积、楼层等),模型的一般形式为:
f(x) = w_1x_1 + w_2x_2 + ... + w_dx_d + b
x_1, x_2, ..., x_d:d个输入特征的取值;

        w_1, w_2, ..., w_d:对应特征的权重;

        b:截距;

        向量形式(简化表达):f(x) = \boldsymbol{w}^T\boldsymbol{x} + b(\boldsymbol{w}为权重向量,\boldsymbol{x}为特征向量,\boldsymbol{w}^T表示\boldsymbol{w}的转置)。

二、模型求解:最小二乘法

1. 核心思想

线性回归通过最小二乘法求解最优参数(w和b),其本质是最小化“均方误差”——均方误差对应“欧氏距离”,即找到一条直线/超平面,使所有样本到该直线/超平面的欧氏距离之和最小。

2. 误差函数(损失函数)

需最小化的误差函数(均方误差对应的总损失)为:
E(w,b) = \sum_{i=1}^{m} (y_i - f(x_i))^2 = \sum_{i=1}^{m} (y_i - (wx_i + b))^2
m:样本数量;

        y_i:第i个样本的真实值;

        f(x_i) = wx_i + b:第i个样本的预测值;

        E(w,b):所有样本的“残差平方和”(预测值与真实值差值的平方和)。

3. 参数求解过程

求解w和b的过程称为“参数估计”,步骤如下:

    1.    求导:对E(w,b)分别关于w和b求偏导数,得到误差随参数变化的趋势;

    2.    令导数为0:偏导数为0时,误差函数E(w,b)取得最小值,据此解出最优参数:

        最优权重w:w = \frac{\sum_{i=1}^{m} (x_i - \bar{x})(y_i - \bar{y})}{\sum_{i=1}^{m} (x_i - \bar{x})^2}(\bar{x}为特征x的均值,\bar{y}为真实值y的均值);

        最优截距b:b = \bar{y} - w\bar{x}。

三、线性回归的评估指标

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

        定义:所有样本预测值与真实值差值的平方和,反映模型预测的总误差。

        公式:SSE = \sum_{i=1}^{m} (y_i - \hat{y}_i)^2(\hat{y}_i为第i个样本的预测值);

        特点:值越小,模型拟合效果越好;但受样本数量影响(样本越多,SSE可能越大),无法直接横向对比不同数据集的模型。

2. 均方误差(MSE)

        定义:SSE的平均值,消除了样本数量的影响,更适合对比不同模型。

        公式:MSE = \frac{1}{m} \sum_{i=1}^{m} (y_i - \hat{y}_i)^2;

        特点:值越小,模型拟合效果越好;单位是“真实值单位的平方”(如房价预测中,单位为“元²”),不够直观。

3. 决定系数(R^2)

        定义:衡量模型对数据的解释能力,反映“模型能解释的变异占总变异的比例”,是最常用的评估指标。

        公式:
R^2 = 1 - \frac{SSE}{SST} = 1 - \frac{\sum_{i=1}^{m} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{m} (y_i - \bar{y})^2}
SST:总平方和(真实值与真实值均值的差值平方和,反映数据本身的总变异);

        简化形式:R^2 = 1 - \frac{MSE}{Var(y)}(Var(y)为真实值y的方差)。

        特点:

        取值范围:(-\infty, 1];

        越接近1:模型拟合效果越好(模型能解释大部分数据变异);

        等于1:模型完全拟合所有样本;

        小于0:模型效果差于“直接用真实值均值预测”(此时模型无意义)。

四、线性回归代码实现(Python sklearn)

1. 核心类

sklearn.linear_model.LinearRegression():用于构建线性回归模型(支持单特征和多特征)。

2. 关键参数
参数 含义与取值 
fit_intercept 是否计算模型截距():- True(默认):模型包含截距;- False:模型不包含截距(直线过原点),需确保数据已中心化。 
normalize 是否在训练前对数据进行归一化:- False(默认):不归一化;- True:对特征进行归一化(均值为0、标准差为1),仅当fit_intercept=True时生效。 

3. 课堂练习:波士顿房价预测

核心步骤(示例思路):

    1.    加载数据:导入波士顿房价数据集(或类似房价数据集,含特征如房间数、距离市中心距离等,目标为房价);

    2.    数据预处理:处理缺失值、标准化特征(可选,若特征量纲差异大);

    3.    划分数据集:将数据分为训练集(用于训练模型)和测试集(用于评估模型);

    4.    训练模型:用LinearRegression()拟合训练数据;

    5.    模型评估:计算测试集的MSE、R^2等指标,判断模型效果。

示例代码框架:
from sklearn import linear_model
from sklearn.datasets import load_boston  # 加载波士顿房价数据集(注意:部分版本需手动安装)
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score

1. 加载数据
boston = load_boston()
X = boston.data  # 特征(如房间数、面积等)
y = boston.target  # 目标(房价)

2. 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

 3. 初始化并训练模型
model = linear_model.LinearRegression(fit_intercept=True, normalize=False)
model.fit(X_train, y_train)

4. 预测与评估
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)  # 计算MSE
r2 = r2_score(y_test, y_pred)  # 计算R²

print(f"均方误差(MSE):{mse:.2f}")
print(f"决定系数(R²):{r2:.2f}")
print(f"模型截距(b):{model.intercept_:.2f}")
print(f"特征权重(w):{model.coef_}")

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

相关文章:

  • k8s——持久化存储 PVC
  • 自定义rabbitmq的ConnectionFactory配置
  • uniapp轮播 轮播图内有定位样式
  • uniappx鸿蒙适配
  • 2025年视频大模型汇总、各自优势及视频大模型竞争焦点
  • 2025年5月架构设计师综合知识真题回顾,附参考答案、解析及所涉知识点(七)
  • 蓝牙学习--连接蓝牙播放音乐无声的分析步骤
  • Matplotlib 可视化大师系列(六):plt.imshow() - 绘制矩阵与图像的强大工具
  • 【大语言模型 13】Dropout与正则化技术全景:深度网络过拟合防御的终极武器
  • 什么是短视频矩阵系统企业立项功能源码开发,支持OEM
  • Flask 之 Cookie Session 详解:用户状态管理
  • 了解 PostgreSQL 的 MVCC 可见性基本检查规则
  • Apache Flink集群架构:核心角色与协同机制
  • 【ElasticSearch】使用docker compose,通过编写yml安装es8.15和kibana可视化界面操作,go连接es
  • 为什么需要关注Flink并行度?
  • 使用 Apache Flink CDC 3.0 实现 MySQL 到 Elasticsearch 的数据同步
  • 回归测试的重要性与实践指南
  • 十年磨一剑!Apache Hive 性能优化演进全史(2013 - )
  • Ubuntu部署K8S集群
  • unistd.h 常用函数速查表
  • 论文精读(三)|智能合约漏洞检测技术综述
  • 《WINDOWS 环境下32位汇编语言程序设计》第7章 图形操作(1)
  • Redis内存架构解析与性能优化实战
  • 通用的嵌入式 Linux 系统镜像制作流程
  • STM32F103RC的USB上拉电阻1.5K
  • MongoDB 从入门到实践:全面掌握文档型 NoSQL 数据库核心操作
  • 基于Node.js服务端的社区报修管理系统/基于express的在线报修管理系统
  • (论文速读)RandAR:突破传统限制的随机顺序图像自回归生成模型
  • 基于C#的宠物医院管理系统/基于asp.net的宠物医院管理系统
  • 开源 python 应用 开发(十)音频压缩