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

线性回归学习笔记

一、线性回归简介

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.xdnf.cn/news/18580.html

相关文章:

  • JAVA-15 (2025.08.20学习记录)
  • 集成电路学习:什么是Template Matching模版匹配
  • week3-[循环嵌套]好数
  • 基于Python与Tkinter开发的微博多功能自动化助手
  • Android焦点窗口变化导致遥控键值监听失效问题分析
  • # 重磅发布 | onecode 3.0.1 Base 源码正式开源:AI赋能的企业级开发框架
  • XXL-Job REST API 工具类完全解析:简化分布式任务调度集成
  • (第二十期上)HTML 超链接标签 a
  • 【python与生活】如何从视频中提取关键帧?
  • FPGA DP1.4 With DSC解决方案
  • 【华为OD-C卷-019 对称字符串 100分(python、java、c++、js、c)】
  • Vitest 测试框架完全指南 – 极速单元测试解决方案
  • C++ 常见的排序算法详解
  • AI 产业落地:从 “实验室神话” 到 “车间烟火气” 的跨越
  • Spring Cloud Netflix学习笔记06-Zuul
  • 机器学习中的集成算法与 k 均值聚类算法概述
  • uniapp跨域怎么解决
  • Go 并发编程-channel
  • 详解开源关键信息提取方案PP-ChatOCRv4的设计与实现
  • AI客服系统架构与实现:大模型、知识库与多轮对话的最佳实践
  • Android为ijkplayer设置音频发音类型usage
  • 【C2000常见问题】JTAG仿真器类型和JTAG Debug定位方法
  • 机器学习核心算法笔记:集成学习与聚类算法
  • springboot人事管理系统源码和论文
  • c#语言的学习【02,函数重载】
  • GPT5 / 深度研究功能 无法触发
  • 网络流量分析——基础知识(二)(Tcpdump 基础知识)
  • HTTP/2 性能提升的核心原因
  • 笔记本电脑Windows+Ubuntu 双系统,Ubuntu无法挂载Windows的硬盘 报错问题解决
  • nginx-重定向-正则表达式-路由匹配优先级