损失函数

又称为 目标函数,优化评分函数。
模型传参的两个重要指标之一:
一个是优化器
另一个就是 损失函数

损失函数需要对比的两个参数

y_true: 真实标签。
y_pred: 预测值。

损失函数包括

mean_squared_error

MSE 均方误差

Mean Square Error (MSE)
最基本的损失函数
神经网络计算值(预测值)与标签值的平方误差和
该值越小,模型越准确。

代码:
mean_squared_error(y_true, y_pred)
数学公式:

论文中深度学习的准确率和损失函数图怎么美化 损失函数和精度_损失函数


定义:mean_squared_error:均方误差函数,又称mse,最基本的损失函数

用途:神经网络计算值(预测值)与标签值的平方误差和。

mean_absolute_error

MAE 平均绝对误差

Mean Absolute Error (MAE)
目的:主要用于显著性目标检测。
显著性目标: 当你看到一副图像的时候,重点潜意识关注的对象,而通过该方法可以检测到。
值越小,模型越准确。

代码:
mean_absolute_error(y_true, y_pred)
数学公式:

论文中深度学习的准确率和损失函数图怎么美化 损失函数和精度_算法_02

mean_absolute_percentage_error

MAPE 平均绝对误差百分比

又称mape
样本中不能有0值。
当mape=0时,表示模型完美,而当mape=100时,则表示模型很差,不能使用。

代码:
mean_absolute_percentage_error(y_true, y_pred)
数学公式:

论文中深度学习的准确率和损失函数图怎么美化 损失函数和精度_人工智能_03


适用 : 对于补货计划来说,我们计算预测时间段

n代表n天。

Symmetric Mean Absolute Percentage Error

SMAPE 对称平均绝对百分比误差

Symmetric Mean Absolute Percentage Error
当真实值有数据等于0,而预测值也等于0时,存在分母0除问题,该公式不可用。

数学公式:

论文中深度学习的准确率和损失函数图怎么美化 损失函数和精度_数学公式_04

mean_squared_logarithmic_error

代码:
mean_squared_logarithmic_error(y_true, y_pred)
数学公式:

论文中深度学习的准确率和损失函数图怎么美化 损失函数和精度_人工智能_05

交叉熵损失函数

适合 分类问题

当使用 categorical_crossentropy 损失时,你的目标值应该是分类格式 (即,如果你有 10 个类,每个样本的目标值应该是一个 10 维的向量,这个向量除了表示类别的那个索引为 1,其他均为 0)。

categorical_crossentropy

CE

CE用于多分类

代码
categorical_crossentropy(y_true, y_pred)
数学公式:

论文中深度学习的准确率和损失函数图怎么美化 损失函数和精度_人工智能_06


CE是一个数值

sparse_categorical_crossentropy

sparse_categorical_crossentropy(y_true, y_pred)

binary_crossentropy

BCE

BCE适用于二分类

代码:
binary_crossentropy(y_true, y_pred)
数学公式:

论文中深度学习的准确率和损失函数图怎么美化 损失函数和精度_人工智能_07


BCE是一个向量

举例子:

下面是手动配置binart_crossentropy

model.compile(optimizer=optimizers.Adam(lr=args.lr),
               loss=['binary_crossentropy'],
               metrics=["categorical_accuracy"]
                  )

hinge

hinge loss

折页损失函数或者铰链损失函数,最著名的应用是作为SVM的目标函数。

代码
hinge(y_true, y_pred)
数学公式

论文中深度学习的准确率和损失函数图怎么美化 损失函数和精度_算法_08


ypred的值在 -1到1之间即可

不鼓励 |y|>1,即让某个样本能够正确分类就可

当样本与分割线的距离超过1时并不会有任何奖励,目的在于使分类器更专注于整体的分类误差。

squared_hinge

squared_hinge:平方铰链损失函数

代码
squared_hinge(y_true, y_pred)
数学公式

论文中深度学习的准确率和损失函数图怎么美化 损失函数和精度_机器学习_09

categorical_hinge

squared_hinge:平方铰链损失函数

categorical_hinge(y_true, y_pred)
数学公式

logcosh

logcosh(y_true, y_pred)

预测误差的双曲余弦的对数。

kullback_leibler_divergence

kullback_leibler_divergence(y_true, y_pred)

poisson

poisson(y_true, y_pred)

cosine_proximity

cosine_proximity(y_true, y_pred)

准确率

常用准确率

accuracy

论文中深度学习的准确率和损失函数图怎么美化 损失函数和精度_人工智能_10

weighted accuracy

论文中深度学习的准确率和损失函数图怎么美化 损失函数和精度_机器学习_11

SMAPE 权重 据对平方误差百分比

论文中深度学习的准确率和损失函数图怎么美化 损失函数和精度_机器学习_12

Yt是 t 时间步的真实值,Y 尖是[公式]时间步的预测值,N序列总长度。

不常见指标

MASE

Mean Absolute Scaled Error

论文中深度学习的准确率和损失函数图怎么美化 损失函数和精度_算法_13


m就是季节性的天数

如果是季节性,就可以看作 预测的季节 和 真实季节的差距。

通俗讲,就是之前是1天的实际数据 和 预测数据做差,
现在是 一个 季度 的 实际 和 预测数据,对比上一个季度的百分比。

import numpy as np 
def naive_forecast(y:np.array, season:int=1):
  "naive forecast: season-ahead step forecast, shift by season step ahead"
  return y[:-season]
def mae(y:np.array, ypred:np.array):
  "mean absolute error"
  return np.mean(np.abs(y - ypred))
def mase(y:np.array, ypred:np.array, season:int=1):
  # Mean Absolute Value 
  return mae(y, ypred) / mae(y[season:], naive_forecast(y, season))

RMSSE

Root Mean Square Scaled Error

论文中深度学习的准确率和损失函数图怎么美化 损失函数和精度_算法_14


h 是预测外推期,

N 是历史时间序列总长度。

通俗讲,就是 100个历史数据做预测,要预测出10个。
这10个真实值 和 预测值 做差 的平方
比上
100个历史数据 和 预测值 做差 的平方。

def mse(y:np.array, ypred:np.array):
  return np.mean(np.square(y - ypred))
def rmsse(y:np.array, ypred:np.array, season: int=1):
  return np.sqrt(mse(y, ypred) / mse(y[season:], naive_forecast(y, season)))

参考链接:

https://zhuanlan.zhihu.com/p/355530331

https://keras.io/zh/losses/#mean_squared_logarithmic_error

https://zhuanlan.zhihu.com/p/48078990