时间序列预测(四)——损失函数(Lossfunction)

目录

1、回归任务常用的损失函数

均方误差(Mean Squared Error, MSE)

平均绝对误差(Mean Absolute Error, MAE)

均方对数误差(Mean Squared Logarithmic Error, MSLE)

Huber Loss(MSE和 MAE结合,又称 Smooth L1 损失)    

均方对数误差损失(Mean Squared Logarithmic Error, MSLE)

2. 分类任务常用的损失函数

交叉熵损失(Cross-Entropy Loss)

负对数似然损失(Negative Log-Likelihood, NLL Loss)

Hinge Loss(合页损失)

二元交叉熵损失(Binary Cross Entropy Loss, BCE)

带 Logits 的二元交叉熵损失(Binary Cross Entropy with Logits, BCEWithLogits)

3. 使用方法


损失函数是衡量模型预测值与真实值之间差异的函数,指导模型在训练过程中不断优化。根据任务类型和数据分布不同,常用的损失函数分为回归损失函数(如线性回归模型用到的)和分类损失函数两大类。

1、回归任务常用的损失函数

  • 均方误差(Mean Squared Error, MSE)
  • 定义:
    适用场景:用于回归问题,尤其在预测目标值为连续变量时。 优点:对大误差敏感,能够惩罚较大的偏差,有助于收敛。 缺点:对异常值过于敏感,容易造成过拟合。PyTorch 实现

    import torch.nn as nn
    
    criterion = nn.MSELoss()#定义
    loss = criterion(predicted_outputs, true_outputs)#使用前面定义的损失函数来计predicted_outputs(预测输出)和true_outputs(真实输出)之间的损失值
    
  • 平均绝对误差(Mean Absolute Error, MAE)
  • 定义:
    适用场景:用于回归问题,尤其是存在异常值的情况下。 优点:对异常值不敏感,较为稳健。 缺点:对较小误差不够敏感,不容易收敛到全局最优。PyTorch 实现

    import torch.nn as nn
    criterion = nn.L1Loss()
    loss = criterion(predicted_outputs, true_outputs)
    
  • 均方对数误差(Mean Squared Logarithmic Error, MSLE)
  • 定义:
    适用场景:适用于预测值呈指数增长的数据(如用户增长、销量增长等)。 优点:能够降低预测值较小的数据误差,关注相对误差。 缺点:对负值不适用,对数据平滑性要求高。PyTorch 实现

    import torch.nn as nn
    
    criterion = nn.MSELoss()
    loss = criterion(predicted_outputs, true_outputs)
    

  • Huber Loss(MSE和 MAE结合,又称 Smooth L1 损失    

        定义:当误差小于阈值 δ 时,使用 MSE,否则使用 MAE。

        适用场景:适用于对异常值较为敏感的回归问题。 优点:综合了 MSE 和 MAE 的优点,对小误差使用平方惩罚,对大误差使用线性惩罚。 缺点:需选择合适的阈值 δ。PyTorch 实现:        

import torch.nn as nn
criterion = nn.SmoothL1Loss()
loss = criterion(predicted_outputs, true_outputs)
  • 均方对数误差损失(Mean Squared Logarithmic Error, MSLE)

        定 义:         适用场景:主要用于回归任务,尤其是预测值和真实值都为正且数据尺度差距较大的场景。优点:对异常值的惩罚较小,更关注小于 1 的误差,适合衡量增长率或指数变化的预测。缺点:要求预测值和真实值都为非负值。PyTorch 没有内置的 MSLE,但可以通过自定义公式来实现。PyTorch 实现:  

def msle_loss(pred, true):
    return torch.mean((torch.log(1 + pred) - torch.log(1 + true)) ** 2)

loss = msle_loss(predicted_outputs, true_outputs)

2. 分类任务常用的损失函数

  • 交叉熵损失(Cross-Entropy Loss)
  • 定义:
    适用场景:适用于二分类和多分类任务,常与 Softmax 一起使用。 优点:对概率分布差异敏感,能够有效提高分类准确率。 缺点:对预测概率非常小的数据较为敏感。PyTorch 实现:  

    import torch.nn as nn
    criterion = nn.CrossEntropyLoss()
    loss = criterion(predicted_outputs, true_labels)
    
  • 负对数似然损失(Negative Log-Likelihood, NLL Loss)
  • 定义:
    适用场景:用于多分类任务,特别是在概率分布已知或 Softmax 输出时。 优点:能够直接计算概率分布,提高模型的概率表达能力。 缺点:通常需要配合 Softmax 函数使用。PyTorch 实现:  

    import torch.nn as nn
    criterion = nn.NLLLoss()
    log_probs = nn.LogSoftmax(dim=1)(predicted_outputs)#需要先将输出经过 nn.LogSoftmax
    loss = criterion(log_probs, true_labels)
    
  • Hinge Loss(合页损失)
  • 定义:
    适用场景:常用于支持向量机(SVM)等二分类任务。 优点:对分类边界敏感,能够强化边界分类效果。 缺点:仅适用于二分类,且可能导致不可微的问题。PyTorch 没有直接的 Hinge Loss,但可以通过以下公式自定义。PyTorch 实现:  

    def hinge_loss(pred, true):
        return torch.mean(torch.clamp(1 - pred * true, min=0))
    
    loss = hinge_loss(predicted_outputs, true_labels)
    
  • 二元交叉熵损失(Binary Cross Entropy Loss, BCE)

  • 定义:

     

    适用场景:用于二分类任务,尤其适合 Sigmoid 输出的概率值。优点:标准的二分类损失函数,易于理解和实现。缺点:对偏斜数据敏感(类别不均衡时效果不佳),通常需要通过采样或调整权重来应对不平衡问题。PyTorch 实现:  

    import torch.nn as nn
    
    criterion = nn.BCELoss()
    loss = criterion(sigmoid_outputs, true_labels)  # 假设 sigmoid_outputs 已经经过 Sigmoid
    

  • 带 Logits 的二元交叉熵损失(Binary Cross Entropy with Logits, BCEWithLogits)
  • 定义:在 BCE 的基础上直接对模型输出进行 Sigmoid 操作,适合未经 Sigmoid 的原始输出(logits)。

    适用场景:二分类任务,适合直接使用模型的输出值(未经过 Sigmoid 激活的 logits)。优点:将 Sigmoid 和 BCE 结合在一个函数中,计算更稳定,避免了数值精度问题。缺点:仅适用于二分类任务。PyTorch 实现:  

    import torch.nn as nn
    criterion = nn.BCEWithLogitsLoss()
    loss = criterion(predicted_outputs, true_labels)  # predicted_outputs 为 logits
    

3. 使用方法

  • 根据任务类型选择适合的损失函数。回归任务通常使用 MSE 或 MAE,分类任务则多使用交叉熵损失。对于一些复杂任务,可以通过组合多个损失函数来平衡模型效果。
  • 在 PyTorch 中,定义损失函数后,只需将模型的预测输出和真实值输入损失函数即可计算损失。

涉及到过拟合、正则化请看这篇文章:

时间序列预测(八)——过拟合、欠拟合、正则化-CSDN博客

 别忘了给这篇文章点个赞哦,非常感谢。我也正处于学习的过程,可能会有错,如果有问题,欢迎在评论区留言讨论,一起学习!

a89ae1f052204243ad7682a9c9d8732f.png

猜你喜欢

转载自blog.csdn.net/qq_47885795/article/details/142923194