损失函数总结(十三):RSELoss、MAPELoss
- 1 引言
- 2 损失函数
- 2.1 RSELoss
- 2.2 MAPELoss
- 3 总结
1 引言
在前面的文章中已经介绍了介绍了一系列损失函数 (L1Loss
、MSELoss
、BCELoss
、CrossEntropyLoss
、NLLLoss
、CTCLoss
、PoissonNLLLoss
、GaussianNLLLoss
、KLDivLoss
、BCEWithLogitsLoss
、MarginRankingLoss
、HingeEmbeddingLoss
、MultiMarginLoss
、MultiLabelMarginLoss
、SoftMarginLoss
、MultiLabelSoftMarginLoss
、TripletMarginLoss
、TripletMarginWithDistanceLoss
、Huber Loss
、SmoothL1Loss
、MBELoss
、RAELoss
)。在这篇文章中,会接着上文提到的众多损失函数继续进行介绍,给大家带来更多不常见的损失函数的介绍。这里放一张损失函数的机理图:
2 损失函数
2.1 RSELoss
Relative Squared Error (RSE) 衡量结果的不准确程度。RSELoss 将总平方误差
除以简单预测变量
的总平方误差以对其进行归一化
。其中,这个简单的预测变量仅代表实际值的平均值
。RSELoss 的数学表达式如下:
L ( Y , Y ′ ) = ∑ i = 1 n ( y i − y i ′ ) 2 ∑ i = 1 n ( y i − y ‾ ) 2 L(Y, Y') = \frac{ \sum_{i=1}^{n} (y_i - y_i')^2}{ \sum_{i=1}^{n} (y_i - \overline y)^2} L(Y,Y′)=∑i=1n(yi−y)2∑i=1n(yi−yi′)2
其中:
y ‾ = 1 N ∑ i = 1 N ( y i ) \overline y = \frac{1}{N}\sum_{i=1}^{N}(y_i) y=N1i=1∑N(yi)
代码实现(Pytorch):
import torch# 创建模型的预测值和真实观测值
predicted = torch.tensor([2.0, 4.0, 6.0, 8.0, 10.0], dtype=torch.float32)
observed = torch.tensor([1.5, 4.2, 5.8, 7.9, 9.8], dtype=torch.float32)# 计算 RSE
squared_error = (predicted - observed)**2
squared_sum_observed = torch.sum((observed - torch.mean(observed))**2)
rse = torch.sum(squared_error) / squared_sum_observed# 打印 RSE
print("Relative Squared Error (RSE):", rse.item())
RSELoss 不受预测的平均值或大小的影响。
2.2 MAPELoss
平均绝对百分比误差 (MAPE),是用于评估预测系统准确性
的指标。它通过从实际值减去预测值的绝对值除以实际值来计算每个时间段的平均绝对百分比误差百分比
。由于变量的单位缩放为百分比单位,因此平均绝对百分比误差 (MAPE) 广泛用于预测误差
。当数据中没有异常值
时,它效果很好
,常用于回归分析和模型评估。MAPELoss 的数学表达式如下:
L ( Y , Y ′ ) = 1 N ∑ i = 1 N ∣ y i − y i ′ y i ∣ ∗ 100 % L(Y, Y') = \frac{1}{N}\sum_{i=1}^{N} |\frac{ y_i - y_i'}{ y_i }|*100\% L(Y,Y′)=N1i=1∑N∣yiyi−yi′∣∗100%
代码实现(Pytorch):
import torch# 创建模型的预测值和真实观测值
predicted = torch.tensor([2.0, 4.0, 6.0, 8.0, 10.0], dtype=torch.float32)
observed = torch.tensor([1.5, 4.2, 5.8, 7.9, 9.8], dtype=torch.float32)# 计算 MAPE
absolute_percentage_error = torch.abs((predicted - observed) / observed) * 100
mape = torch.mean(absolute_percentage_error)# 打印 MAPE
print("Mean Absolute Percentage Error (MAPE):", mape.item())
MAPELoss 容易收到异常值影响,还是MSELoss更为常用。。。。
3 总结
到此,使用 损失函数总结(十三) 已经介绍完毕了!!! 如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。如果存在没有提及的损失函数
也可以在评论区提出,后续会对其进行添加!!!!
如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。