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

回归任务损失函数对比曲线

回归任务损失函数曲线可视化对比

本节将可视化对比均方误差(MSE)、平均绝对误差(MAE)、Huber损失函数三种常见回归任务损失函数的曲线,帮助理解它们在不同误差区间的表现差异。

1. 导入所需库

我们需要用到 numpy 进行数值计算,matplotlib 进行绘图。

import numpy as np
import matplotlib.pyplot as plt

2. 定义损失函数(MSE、MAE、Huber)

分别实现均方误差(MSE)、平均绝对误差(MAE)和Huber损失的Python函数。

def mse_loss(x):"""均方误差"""return x ** 2def mae_loss(x):"""平均绝对误差"""return np.abs(x)def huber_loss(x, delta=1.0): #delta阈值,控制损失函数从二次到线性切换的位置,常用1.0"""Huber损失"""return np.where(np.abs(x) <= delta,0.5 * x ** 2,delta * (np.abs(x) - 0.5 * delta))

3. 生成误差数据

生成一组对称分布的误差(如-5到5),用于损失函数的输入。

# 生成误差区间
errors = np.linspace(-5, 5, 200)

4. 计算各损失函数的取值

对每个误差值,分别计算MSE、MAE和Huber损失的结果。

mse_values = mse_loss(errors)
mae_values = mae_loss(errors)
huber_values = huber_loss(errors, delta=1.0) #delta设置为1.0是为了与其他损失函数对比

5. 绘制损失函数对比曲线

使用matplotlib将三种损失函数的曲线绘制在同一张图上,便于直观对比。

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS', 'Microsoft YaHei', 'PingFang SC']  # 支持中文
plt.rcParams['axes.unicode_minus'] = False  # 正常显示负号
plt.figure(figsize=(8, 5))
plt.plot(errors, mse_values, label='MSE (L2)', color='blue')
plt.plot(errors, mae_values, label='MAE (L1)', color='green')
plt.plot(errors, huber_values, label='Huber (δ=1.0)', color='red')
plt.xlabel('误差 (error)')
plt.ylabel('损失值 (loss)')
plt.title('MSE、MAE、Huber损失函数曲线对比')
plt.legend()
plt.grid(True)
plt.show()

在这里插入图片描述

总结

  • MSE 对大误差更敏感,曲线在远离0时增长更快。
  • MAE 对所有误差线性增长,对异常值不敏感,但在0点不可导。
  • Huber损失 在误差较小时与MSE一致,误差较大时与MAE一致,兼具二者优点,常用于鲁棒回归任务。
http://www.xdnf.cn/news/698041.html

相关文章:

  • vue3+Pinia+element-plus 后台管理系统项目实战记录
  • 2..3...4.... Wonderful! Wonderful!_cf1930E分析与解答
  • SpringBoot 验证码练习
  • GRASS GIS 生成斜坡单元
  • Opengl纹理采样
  • 【C语言练习】069. 使用goto语句实现复杂的跳转
  • XCTF-web-mfw
  • socket编程预备
  • 基于DFT码本的波束方向图生成MATLAB实现
  • 【AUTOSAR OS 】保护功能解析:从原理到应用与源代码解析(上篇)
  • MySQL复杂查询与Union操作
  • SQLite数据库取证分析
  • 用 Python 构建跨平台前端界面:深入解读 Flet 库
  • windows本地虚拟机上运行docker-compose案例
  • QT开发技术 【元对象系统反射机制 】三
  • 中阳视角:如何通过波动率识别市场节奏变化
  • Android Zygote通信协议深度解析
  • c++lambda表达式
  • Linux文件传输——curl命令详介
  • SAR ADC 比较器的offset 校正
  • 西门子SCL语言编写两台电机正反转控制程序,并涵盖从选型、安装到调试全过程的详细步骤指南(上)
  • vs中添加三方库的流程
  • 根据基因名称自动获取染色体上的位置
  • STM32 ADC工作原理与配置详解
  • 渐进够增强和优雅降级的区别
  • 8.5 Q1|中山大学CHARLS发文 | 甘油三酯葡萄糖-腰身高比指数与中国中老年人心血管疾病的关系
  • (8)python+ selenium自动化测试-获取当前页面的title
  • MCU与CPU时钟概念详解:从基础到面试高频问题
  • 第三届宁波技能大赛网络安全赛项样题
  • uniapp-商城-73-shop(6-商品列表,步进器添加数据到购物车,步进器数据同步(深度监听))