【机器学习】鲁棒(健壮)回归-Huber损失(Huber Loss)

Huber损失是一种对异常值(outliers)具有鲁棒性的损失函数,它在处理回归问题时常用,结合了均方误差(MSE)的平滑性和平均绝对误差(MAE)的鲁棒性。

Huber损失通过引入一个阈值 来定义,当误差小于 时采用 MSE,当误差大于 时采用 MAE。


定义公式

Huber损失的数学表达式如下:

其中:

  • a = y - f(x) 是预测值 f(x) 和真实值 y 的残差。
  • 是用户定义的超参数,控制 MSE 和 MAE 的切换点。
特点
  1. 对于 :Huber损失是二次函数,类似 MSE,强调小残差的平滑优化。
  2. 对于 :Huber损失是线性函数,类似 MAE,减轻了离群点对损失值的影响。

Huber损失的梯度

  1. 小误差( **)**梯度为:

  2. 大误差() 梯度为:


优缺点

优点
  1. 对小误差采用 MSE,确保了模型的平滑性和稳定性。
  2. 对大误差采用 MAE,降低了离群点对整体模型的影响。
缺点
  1. 超参数 δ\deltaδ 的选择对模型性能影响较大,需要调优。
  2. 计算复杂度比单纯的 MSE 和 MAE 略高。

Python实现:Huber损失

以下是 Huber 损失的简单实现:

python 复制代码
import numpy as np
import matplotlib.pyplot as plt

# Huber损失函数
def huber_loss(y_true, y_pred, delta):
    error = y_true - y_pred
    loss = np.where(np.abs(error) <= delta,
                    0.5 * error**2,
                    delta * (np.abs(error) - 0.5 * delta))
    return loss

# 示例数据
y_true = np.array([1, 2, 3, 4, 5])
y_pred = np.array([1.1, 1.9, 3.5, 2.5, 10])
delta = 1.0

# 计算Huber损失
loss = huber_loss(y_true, y_pred, delta)
print("Huber损失:", loss)
print("总损失:", np.sum(loss))

# 可视化损失函数
errors = np.linspace(-5, 5, 100)
losses = huber_loss(0, errors, delta)

plt.plot(errors, losses, label="Huber Loss")
plt.axvline(x=delta, color="red", linestyle="--", label=f"Delta = {delta}")
plt.axvline(x=-delta, color="red", linestyle="--")
plt.title("Huber Loss Function")
plt.xlabel("Error")
plt.ylabel("Loss")
plt.legend()
plt.show()

输出结果

  • 打印每个数据点的 Huber 损失值和总损失。

    Matlab 复制代码
    Huber损失: [0.005 0.005 0.125 1.    4.5  ]
    总损失: 5.635
  • 图形显示 Huber 损失函数的形状,包括在 δ\deltaδ 附近的平滑过渡。


Huber损失的应用

  1. 回归模型优化: Huber损失常用于带有异常值的回归问题,尤其在训练时数据中包含离群点。

  2. 鲁棒优化

    • 在神经网络中作为损失函数,用于对异常样本具有鲁棒性的训练。
    • 替代 MSE 或 MAE,平衡两者的优缺点。
  3. 机器学习框架: 诸如 TensorFlow 和 PyTorch 等深度学习框架中,都提供了 Huber 损失的实现。


Huber损失的变体

  1. Pseudo-Huber损失: 一种平滑的近似版本,用于优化过程中避免梯度不连续的问题。公式为:

  2. 自适应Huber损失 : 动态调整 值,根据数据特性自适应地减少离群点的影响。

相关推荐
搞科研的小刘选手17 分钟前
【早稻田大学主办】2026年第三届人工智能与未来教育国际学术会议(AIFE 2026)
人工智能·机器学习·数据挖掘·机器人·未来教育·远程教育·移动学习
数据与人工智能律师25 分钟前
解码Web3:DeFi、GameFi、SocialFi的法律风险警示与合规路径
大数据·网络·人工智能·云计算·区块链
Best_Me0727 分钟前
理解AUROC,AP,F1-scroe,PRO
人工智能·机器学习
IT_陈寒29 分钟前
React 性能优化:5个实战技巧让首屏加载提升50%,开发者亲测有效!
前端·人工智能·后端
久未35 分钟前
Pytorch autoload机制自动加载树外扩展(Autoload Device Extension)
人工智能·pytorch·python
Apifox.37 分钟前
如何在 Apifox 中通过 AI 一键生成几十个测试用例?
人工智能·程序人生·ai·测试用例·ai编程
Learn Beyond Limits1 小时前
TensorFlow Implementation of Content-Based Filtering|基于内容过滤的TensorFlow实现
人工智能·python·深度学习·机器学习·ai·tensorflow·吴恩达
是Yu欸1 小时前
【AI视频】从单模型,到AI Agent工作流
人工智能·ai·ai作画·aigc·音视频·实时音视频
AI人工智能+1 小时前
发票识别技术:结合OCR与AI技术,实现纸质票据高效数字化,推动企业智能化转型
人工智能·nlp·ocr·发票识别
用户5191495848451 小时前
Aniyomi扩展开发指南与Google Drive集成方案
人工智能·aigc