回归损失函数

news/2024/5/19 9:50:08

目录

1 MAE

2 MSE

3 MAPE

4 Quantile Loss分位数损失


        回归损失函数也可以做为评价指标使用,但是有没有想过数据分布与损失函数之间的关系呢!

        使用特定损失函数的前提是我们对标签的分布进行了某种假设,在这种假设的前提下通过极大似然法推出所有样本构成的极大似然公式,然后再使用凸优化的方法比如常见的梯度下降法进行求解

我曾经遇到两个问题,类似正太分布与非正太分布损失函数。

     比如下面: 0的值异常多。可以采用非正太损失函数,使用tweedie loss、possion loss等损失函数替代mse。这些lgb、xgb都可调参数。

1 MAE

       平均绝对误差(L1 loss):Mean Absolute Error, MAE。指预测值 和真实值 之间距离的平均值,其公式如下:

         

        MAE是目标值和预测值之差的绝对值之和,可以用来衡量预测值和真实值的距离。但是它不能给出,模型的预测值是比真实值小还是大。        

综合来看,MAE适合对异常值敏感的数据集,或者在对模型的预测误差大小更为关注的情况下使用。但在优化过程和梯度信息方面存在一些不足,需要根据具体情况选择合适的损失函数。

2 MSE

 均方根误差(L2 loss)Mean Square Error,MSE是模型预测值 与真实样本之间差值的平方,其公式如下:

  1. 直观性好: MAE直接衡量了预测值与真实值之间的平均绝对差异,易于理解和解释。
  2. 不受量纲影响: 由于是绝对值求和,MAE不受量纲的影响,因此可以直接比较不同尺度下的模型性能。
  3. 不可微性: MAE在零点处不可微,这使得优化过程变得困难。梯度下降等需要可微的优化算法无法直接应用于MAE。
  4. 梯度信息不明显: 由于MAE的梯度在大部分区域都是常数,因此相对于MSE(均方误差)等损失函数,梯度信息不够明显,可能导致训练过程收敛速度较慢。
  5. 对离群值的处理不足: 尽管MAE对离群值不敏感,但它也没有专门考虑到离群值的影响,可能导致对离群值的处理不足。

        MSE函数曲线光滑、连续,处处可导,随着误差的减小,梯度也在减小,有利于收敛,当真实值和预测值的差值大于1时会放大误差,即给予较大的惩罚,而当差值小于1时会缩小误差,即给予较小的惩罚,对离群点比较敏感,受其影响较大。

       MSE计算简便,但MAE对异常点有更好的鲁棒性:当数据中存在异常点时,用MSE/RMSE计算损失的模型会以牺牲了其他样本的误差为代价,朝着减小异常点误差的方向更新。然而这就会降低模型的整体性能。

3 MAPE

缺点:

综上所述,MAPE 损失函数具有直观性和对异常值的鲁棒性等优点,但也存在一些缺点,如对离散值敏感和不可导性等问题。在选择损失函数时,需要根据具体问题的特点和需求来进行权衡和选择。

  1. 分母为0的问题: 当实际值 ( A_t ) 为0时,MAPE 的分母为0,可能导致无法计算或者出现无穷大的情况。
  2. 对离散值敏感: MAPE 对于实际值接近或等于0的情况下,可能会导致误差放大,不太适用于这种情况。
  3. 不可导性: MAPE 是一个非光滑的损失函数,不易于在优化算法中使用,特别是对于梯度下降等基于梯度的优化方法。
  4. 分母为0的问题: 当实际值 ( A_t ) 为0时,MAPE 的分母为0,可能导致无法计算或者出现无穷大的情况。
  5. 对离散值敏感: MAPE 对于实际值接近或等于0的情况下,可能会导致误差放大,不太适用于这种情况。
  6. 不可导性: MAPE 是一个非光滑的损失函数,不易于在优化算法中使用,特别是对于梯度下降等基于梯度的优化方法。

不可倒部分:

4 Quantile Loss分位数损失

分位数值的选择基于在实际中需要误差如何发挥作用 即在过程中误差为正时发挥更多作用还是在误差为负时发挥更大作用。

当我们需要对区间预测而不单是点预测时 分位数损失函数可以发挥很大作用。

ref:https://blog.csdn.net/Next_SummerAgain/article/details/135371892


http://www.mrgr.cn/p/48846671

相关文章

ECharts海量数据渲染解决卡顿的4种方式

场景 周五进行需求评审的时候; 出现了一个图表,本身一个图表本没有什么稀奇的; 可是产品经理在图表的上的备注,让我觉得这个事情并不简单; 那个图表的时间跨度可以是月,年,而且时间间隔很短; 这让我意识到事情并不是想的那样简单; 然后经过简单的询问:如果选择的范围是…

在Kali下安装w4af软件

教程 音乐FM:Paradise 一、简介 w4af是一款Web高级应用程序攻击和审计python 3框架。主要帮助开发人员和渗透测试人员识别和利用他们的web应用程序中的漏洞。 w4af最初基于w3af开发,由于w3af依赖于较为老旧的Python模块,kali系统在迭代版本的过程中逐渐移除了对老旧python模…

Qt实现XYModem协议(五)

1 概述 XMODEM协议是一种使用拨号调制解调器的个人计算机通信中广泛使用的异步文件运输协议。这种协议以128字节块的形式传输数据,并且每个块都使用一个校验和过程来进行错误检测。使用循环冗余校验的与XMODEM相应的一种协议称为XMODEM-CRC。还有一种是XMODEM-1K&am…

【软考经验分享】软考-中级-嵌入式备考

这里写目录标题 教辅用书嵌入式系统设计师考试大纲嵌入式系统设计师教程嵌入式系统设计师5天修炼嵌入式系统设计师考前冲刺100题 刷题软件希赛网软考真题 视频教程希赛网王道-计组计网 教辅用书 嵌入式系统设计师考试大纲 50页左右,内容为罗列一些考点&#xff0c…

构建安全高效的前端权限控制系统

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 ✨✨ 帅哥美女们,我们共同加油!一起进步&am…

学习Rust的第11天:模块系统

Rust的模块系统可以使用它来管理不断增长的项目,并跟踪 modules 存储在何处。 Rust的模块系统是将代码组织成逻辑片段的有效工具,因此可以实现代码维护和重用。模块支持分层组织、隐私管理和代码封装。Rust为开发人员提供了多功能和可扩展的方法来管理项…

Docker in Docker的原理与实战

Docker in Docker(简称DinD)是一种在Docker容器内部运行另一个Docker实例的技术。这种技术允许用户在一个隔离的Docker容器中创建、管理和运行其他Docker容器,从而提供了更灵活和可控的部署选项。以下是DinD的主要特点: 隔离性&am…

element plus:tree拖动节点交换位置和改变层级

图层list里有各种组件,用element plus的tree来渲染,可以把图片等组件到面板里,面板是容器,非容器组件,比如图片、文本等,就不能让其他组件拖进来。 主要在于allow-drop属性的回调函数编写,要理清…

Linux2.6内核进程调度队列

目录 运行队列runqueue 活跃队列&过期队列 queue[140]&优先级&队列数组下标 bitmap[5]&O(1)调度算法 nr_active active指针和expired指针 O(1)调度算法之调度过程 本篇是Linux进程概念篇的最后一篇,Linux2.6内核是一个具体的/可行的/实际的存…

深入理解Linux文件系统和日志分析

目录 一.inode与block 1.inode与block概述 1.1.文件数据包括元信息与实际数据 1.2.文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节 1.3.block(块) 1.4.inode(索引节点) 2.inode内…

军工单位安全内网文件导出,怎样做到严密的安全管控?

军工单位是指承担国家下达的军事装备、产品研制、生产计划任务的企、事业单位,主要包括电子工业部、航空工业总公司、航天工业总公司、兵器工业总公司、核工业总公司、船舶工业总公司、中国工程物理研究院及各省国防工业办公室等。 军工单位的特点主要体现在以下几个方面: 承…

Vue3中使用无缝滚动插件vue3-seamless-scroll

官网:https://www.npmjs.com/package/vue-seamless-scroll 1、实现效果文字描述: 表格中的列数据进行横向无缝滚动,某一列进行筛选的时候,重新请求后端的数据,进行刷新 2、安装:npm i vue3-seamless-scrol…

Keil和VSCode协同开发STM32程序

系列文章 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. 配置环境 2. 测试打开工程 3. 测试编译工程 随着项目的复杂度上升,开发者不仅需要强大的硬件支持,还需要一个高效和灵活的开发环境。 vscode是一款集成大量可以便携开发插件的代码…

爬虫js逆向(python调用js学习)

首先介绍pyexecjs的使用 PyExecJs 是一个python 库,用于在 Python 环境中执行javaScript代码。它实际上是对 Execs 库的 Python 封装,Execls 本身是一个通用的 JavaScript 运行环境的抽象层。使用PyExecJs,你可以在Python 中执行JavaScript代码,而无需启动一个完整的JavaSc…

维基百科、百度百科和搜狗百科词条的创建流程

随着网络的发展,百度百科、搜狗百科、维基百科等百科网站已经成为大众获取知识的重要途径。因为百科具有得天独厚的平台优势,百科上的信息可信度高,权威性强。所以百科平台也成为商家的必争之地。这里小马识途聊聊如何创建百度百科、搜狗百科…

贪吃蛇(C语言版)

在我们学习完C语言 和单链表知识点后 我们开始写个贪吃蛇的代码 目标:使用C语言在Windows环境的控制台模拟实现经典小游戏贪吃蛇 贪吃蛇代码实现的基本功能: 地图的绘制 蛇、食物的创建 蛇的状态(正常 撞墙 撞到自己 正常退出&#xf…

智能组网怎么样?

智能组网技术的出现,使得网络连接更加便捷和智能化。无论我们身处何地,只要有网络覆盖,就能轻松进行远程连接和访问。智能组网到底如何实现的呢?本文将就智能组网的优势进行探讨,以便更好地了解其特点和应用场景。 【天…

idle的下载和环境配置(python)

1.进入官网:https://www.python.org/ 2.downloads->windows选择对应版本(这里我选择3.10.0是因为听说10比较稳定) 3. 找到刚下载的Python程序安装包,双击打开,运行安装程序。 直接点击下一步,直至安装成功,点击完成就可以了。如果想切换安装目录,可以在那一步换一下安…

自己手动在Linux上实现一个简易的端口扫描器

背景 常常听到网络攻击有一个东西叫做端口扫描器,可以扫描指定服务器开放的端口,然后尝试连接,并寻找漏洞,最终攻破服务器。而那些使用的端口扫描器都是一个个现成的程序,看上去很厉害的样子。而实际上这些东西对于懂…

[dp 小计] SOSdp

复健 SOSdp(sum over subsets dynamic programming)。 引入 令 \(F(x)=\sum\limits_{u\subseteq x} A(u)\) 其中 \(A\) 为给定数组,求出 \(\forall x, F(x)\) 。 思路一 暴力枚举子集,时间复杂度 \(O(4^n)\)。 思路二 优化子集枚举,时间复杂度 \(O(3^n)\)。 思路三 考虑 SOS…