【机器学习300问】43、回归模型预测效果明明很好,为什么均方根误差很大?

本文主要是介绍【机器学习300问】43、回归模型预测效果明明很好,为什么均方根误差很大?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、案例描述        

        假设我们正在构建一个房地产价格预测模型,目标是预测某个城市各类住宅的售价。模型基于大量房屋的各种特征(如面积、地段、房龄、楼层等)进行训练。 回归模型在大部分情况下对于住宅价格预测非常精准,用户反馈也非常好,模型的实际预测能力在业界得到了认可。但RMSE指标却依旧很高这是为什么?

二、原因分析

        均方根误差(Root Mean Square Error, RMSE)是机器学习中广泛使用的衡量预测模型准确度的标准之一。它通过计算预测值与真实值之间差异的平方平均值的平方根来量化模型预测的平均偏差。通常情况下,较低的RMSE意味着模型有更好的预测性能。下面是他的计算公式:

RMSE = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}

符号解释
n真实值的总数
y_ii个真实值
\hat{y}_ii个预测值
(y_i - \hat{y}_i)^2i个真实值与预测值之间的误差的平方,用来消除误差的正负号影响
\sum_{i=1}^{n} (y_i - \hat{y}_i)^2所有残差平方的总和

        案例原因:大多数房屋的价格都在一个合理的区间内变动,但如果有少数几个极其昂贵或极其便宜的离群点(例如,异常低价的房源或超级豪宅),模型很可能对这些点的预测误差极大。将这些误差平方后纳入总误差的计算中,会明显增大总的误差平方和,而开平方是在计算完平方和之后才进行的,所以这会显著提高均方根误差。

三、解决方案 

 (1)离群值检测与处理

        可以采用诸如Z-score、IQR(四分位数范围)等方法检测离群值,并根据具体情况选择删除、替换(如使用邻近值填充、插值等方法)离群点或者保留(如果离群值是有意义的真实信息)。

(2)选择更合适的评估指标

        对于存在大量离群点且其重要性不如其他大部分数据的情况,可考虑使用MAPE(平均绝对百分比误差)等对离群值不那么敏感的评价指标。

MAPE = \frac{1}{n} \sum_{i=1}^{n} \left| \frac{y_i - \hat{y}_i}{y_i} \right| \times 100\%

符号解释
n真实值的总数
y_ii个真实值
\hat{y}_ii个预测值
|y_i - \hat{y}_i|i个真实值与预测值之间的误差的绝对值
\left| \frac{y_i - \hat{y}_i}{y_i} \right|计算每个点的百分比误差
\frac{1}{n} \sum计算所有百分比误差的平均值

【注】MAPE 的结果是一个百分比数值,它表示预测误差占实际值的比例平均值。MAPE 越小,说明预测精度越高。然而,需要注意的是,MAPE 对于真实值接近零的情况非常敏感,当有少量实际值接近或等于零时,会导致 MAPE 计算结果异常增大,引入一个小的常数以避免零分母的情况。

(3)分层建模

        根据数据特点,可以考虑为不同类型的房源(如普通住宅和豪华别墅)分别建立模型,或者在同一个模型中引入类别变量来调整对不同类型的响应。

这篇关于【机器学习300问】43、回归模型预测效果明明很好,为什么均方根误差很大?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/835945

相关文章

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操