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

手把手教你用MATLAB给回归模型打分:从SSE到R方的完整计算与解读

从零实现MATLAB回归模型评估:7大指标实战详解

刚接触预测建模时,我们常会陷入一个误区——认为只要模型能跑出结果就万事大吉。直到某次我用一组"看似不错"的预测值交作业时,导师反问:"这些数字偏离真实值多少?误差分布均匀吗?模型解释了多少变异?"这三个问题让我意识到,会计算评估指标比会建模型更重要。本文将用MATLAB带您亲手实现7个核心评估指标,让每个数字都变得有意义。

1. 环境准备与数据导入

首先在MATLAB命令窗口输入我们的示例数据,这组数据模拟了某种产品的销量增长:

y = [100 102 108 117 135 178 198 241 290 349]; % 真实销量 y_hat = [93 108 118 117 141 170 196 249 296 359]; % 预测销量 n = length(y); % 数据点数量

为直观理解数据差异,建议先绘制对比图:

figure plot(y, 'bo-', 'LineWidth', 2) % 蓝色实线表示真实值 hold on plot(y_hat, 'r*--', 'LineWidth', 1.5) % 红色虚线表示预测值 legend('真实值', '预测值') xlabel('时间点'); ylabel('销量') title('真实值与预测值对比')

通过图形我们就能直观发现:预测值在中期(第5-7点)较准确,而在两端偏差较大。这种视觉评估虽然直观,但我们需要量化指标来精确描述误差。

2. 基础误差指标计算

2.1 SSE:误差平方和

SSE(Sum of Squared Errors)是评估模型的起点,计算公式为所有预测误差的平方和:

SSE = sum((y - y_hat).^2) % 结果为489

业务解读:489这个绝对值本身意义有限,需结合数据规模判断。当销量单位是"万件"时,这个误差可以接受;若是"件"则偏差较大。SSE的主要价值在于比较不同模型的性能——SSE越小模型越好。

2.2 MSE与RMSE:标准化误差

MSE(Mean Squared Error)解决了SSE受样本量影响的问题:

MSE = SSE / n % 结果为48.9

而RMSE(Root Mean Squared Error)让量纲回归原始单位:

RMSE = sqrt(MSE) % 结果为6.9929

关键区别

指标计算公式量纲特点
MSESSE/n平方单位放大较大误差
RMSE√MSE原单位更符合直觉

提示:RMSE=6.99意味着平均每个预测偏差约7个单位。对比销量范围100-349,这个误差在可接受范围内。

3. 绝对误差指标体系

3.1 MAE:直接误差度量

MAE(Mean Absolute Error)计算绝对误差的平均值:

MAE = mean(abs(y - y_hat)) % 结果为6.3

与RMSE对比:

  • MAE对异常值不敏感
  • RMSE会放大较大误差的影响
  • 当MAE≈RMSE时,说明误差分布较均匀

3.2 百分比误差:MAPE与SMAPE

MAPE(Mean Absolute Percentage Error)将误差转换为百分比:

MAPE = 100 * mean(abs((y - y_hat)./y)) % 结果为4.03%

但MAPE在真实值为零时会出现除零错误,此时可用SMAPE(Symmetric MAPE):

SMAPE = 100 * mean(2*abs(y - y_hat)./(abs(y) + abs(y_hat))) % 结果为3.99%

应用场景对比

  • MAPE:适合评估同量级数据的预测
  • SMAPE:适合评估量级变化大的数据(如本案例)

4. 模型解释力:R²决定系数

R平方衡量模型解释的目标变量变异比例:

SS_total = sum((y - mean(y)).^2); SS_res = SSE; R2 = 1 - (SS_res / SS_total) % 结果为0.9928

解读指南

  • 0.99表示模型解释了99%的数据变异
  • 0.8通常认为拟合非常好

  • 但要注意:增加无关变量也会提高R²

为验证R²可靠性,可计算调整后R²:

p = 1; % 预测变量个数 adj_R2 = 1 - (1-R2)*(n-1)/(n-p-1) % 结果为0.9919

5. 综合应用与可视化

将所有指标整合成评估报告:

metrics = table(SSE, MSE, RMSE, MAE, MAPE, SMAPE, R2,... 'VariableNames', {'SSE','MSE','RMSE','MAE','MAPE','SMAPE','R2'})

输出结果:

metrics = 1×7 table SSE MSE RMSE MAE MAPE SMAPE R2 ___ ___ ______ ___ _____ _______ ______ 489 48.9 6.9929 6.3 4.0307 3.9939 0.99276

最后,通过残差图检查误差分布:

figure scatter(y_hat, y - y_hat, 'filled') hold on plot(xlim, [0 0], 'k--') % 参考线 xlabel('预测值'); ylabel('残差') title('残差分析图')

理想情况下,残差应随机分布在零线周围。若出现明显模式(如抛物线),说明模型可能遗漏了重要特征。

http://www.zskr.cn/news/1449791.html

相关文章:

  • AI通过图灵测试:技术实质、社会影响与未来应对策略
  • 基于Arduino与XOD可视化编程的智能植物监护系统设计与实现
  • 电子入门实践:从欧姆定律到并联电路,手把手搭建LED烽火台
  • Doherty功放设计进阶:从对称到非对称,再到多峰值的ADS仿真全攻略
  • 保姆级避坑指南:在Win11上搞定OMNeT++ 5.4.1、SUMO 0.30.0和Veins 4.7.1车联网仿真环境
  • 终极抖音下载指南:3分钟搞定无水印视频批量下载
  • DIY MIDI转CV接口:基于Arduino与MCP4728的模块合成器核心
  • 思科GRE隧道通了但业务不通?从抓包分析到故障排查的完整指南
  • 告别Xcode!用Homebrew在macOS上安装最新版GCC的保姆级教程(含环境变量配置)
  • 存储器层次结构——高速缓存存储器
  • 别再让电机乱转了!用Arduino Mega2560 + TB6612驱动MG513,手把手教你实现精准PWM调速与正反转控制
  • AI驱动网络安全实战:从威胁检测到自动化响应的架构与挑战
  • 语料蒸馏:从海量文档到结构化知识资产的工程实践
  • 从飞机上网到水下机器人:盘点LiFi(可见光通信)那些意想不到的硬核应用场景
  • 电阻式与电容式土壤湿度传感器对比:原理、校准与物联网应用实践
  • C/C++ 基础笔记(五)
  • SQL学习日志 Day_3 :(SELECT查询语句入门)
  • JWT令牌在多端跨域场景下的安全访问校验实践
  • mpv.net 终极指南:Windows平台高性能媒体播放器完整配置与实战技巧
  • IDEA装了LiteFlowX插件后,我写规则文件再也没翻过文档(智能提示+跳转真香)
  • 如何5分钟搭建个人音乐库:洛雪音乐聚合音源终极指南
  • 别再只看风速了!固定翼新手选飞行天气,这3个APP和2个关键数据更重要
  • IPXWrapper完整指南:让Windows 10/11完美运行经典游戏联机
  • 鸣潮模组终极指南:15+功能解锁,彻底改变你的游戏体验
  • 电路设计入门:从元器件到实战项目,零基础掌握电子制作核心技能
  • OmenSuperHub完整指南:解锁惠普游戏本隐藏性能的终极工具
  • 【浏览器智能体】Browser Use 与现有 pytest-bdd 框架的深度整合方案
  • Unity游戏开发避坑:用.NET 4.x和System.Data.SqlClient搞定SQL Server 2022连接(保姆级教程)
  • 从卓晴到稚晖君:盘点那些硬核技术大佬的“神仙”个人实验室
  • 告别手动画框!用SurgicalSAM实现手术器械的“一句话分割”:从类提示到精准掩码的保姆级解析