了解机器学习中的损失函数

152 阅读7分钟

了解机器学习中的损失函数

损失函数在任何统计模型中都发挥着重要作用--它们定义了一个目标,模型的性能是根据这个目标来评估的,模型学习的参数是通过最小化所选的损失函数来确定的。

损失函数定义了什么是好的预测,什么是不好的预测。简而言之,选择正确的损失函数决定了你的估计器会有多好。本文将探究损失函数,它们在验证预测方面的作用,以及所使用的各种损失函数。

前提条件

读者应该对机器学习的概念有一个模糊的概念,如回归和分类,以及制定一个可以产生预测的统计模型的基本构建块。

简介

损失函数把一个理论命题变成了一个实践命题。建立一个高度准确的预测器需要通过提问、用选定的方法对问题进行建模和测试来不断迭代。

审视一个统计模型的唯一标准是它的性能--模型的决策有多准确。这就需要一种方法来衡量模型的某次迭代与实际值有多远。这就是损失函数发挥作用的地方。

[损失函数]衡量一个估计值与它的真实值的距离。[损失函数将决策映射到其相关成本]。损失函数不是固定的,它们根据手中的任务和要达到的目标而变化。

回归的损失函数

回归涉及预测一个连续的特定值。估算房子的价格或预测股票价格都是回归的例子,因为人们致力于建立一个模型来预测一个实值的数量。

让我们看看一些可用于回归问题的损失函数,并尝试对它们进行比较。

平均绝对误差(MAE)

[平均绝对误差(也称为L1损失)]是用于回归模型的最简单而稳健的损失函数之一。

回归问题可能有一些变量,由于存在离群值(与其他数据非常不同的值),这些变量在本质上不是严格的高斯值。在这种情况下,平均绝对误差将是一个理想的选择,因为它不考虑离群值的方向(不现实的高正值或负值)。

顾名思义,MAE取的是实际值和预测值之间绝对差异的平均值。对于一个数据点xi和它的预测值yi,n是数据集中的数据点总数,平均绝对误差定义为。

MAE

平均平方误差(MSE)

当涉及到回归的损失函数时,平均平方误差(也称为L2损失)几乎是每个数据科学家的首选。这是因为大多数变量可以被建模为高斯分布。

平均平方误差是实际值和预测值之间的平方差的平均值。对于一个数据点Yi和它的预测值Ŷi,其中n是数据集中的数据点总数,平均平方误差定义为。

MSE

平均偏差误差(MBE)

平均偏差误差是用来计算模型的平均偏差的。偏差,简而言之,就是高估或低估了一个参数。使用MBE对模型进行评估后,可以采取纠正措施来减少偏差。

平均偏差误差是指目标值和预测值之间的实际差异,而不是绝对差异。我们必须谨慎行事,因为正负误差可能会相互抵消,这就是为什么它是一个较少使用的损失函数。

平均偏差误差的公式是。

MBE

其中yi是真实值,ŷi是预测值,'n'是数据集中的数据点总数。

平均对数误差(MSLE)

有时,人们可能不想对直接预测非标量的模型进行过多的惩罚。在平均平方对数误差的帮助下,可以放松对巨大差异的惩罚。

计算平均平方对数误差与平均平方误差相同,只是使用预测值的自然对数而不是实际值。

MSLE

其中yi是真实值,ŷi是预测值,'n'是数据集中的数据点总数。

Huber损失

L1和L2损失之间的比较产生了以下结果。

  1. L1损失比其对应的损失更稳健。

仔细观察这些公式,我们可以发现,如果预测值和实际值之间的差异很高,与L1相比,L2损失会放大其影响。由于L2会屈服于离群值,L1损失函数是更稳健的损失函数。

  1. L1损失比L2损失更不稳定。

由于L1损失处理的是距离的差异,一个小的水平变化就会导致回归线的大量跳动。这种影响发生在多次迭代中,会导致迭代之间斜率的显著变化。

另一方面,MSE确保回归线在数据点的小幅调整中轻巧地移动。

Huber损失结合了L1的稳健性和L2的稳定性,基本上是L1和L2损失中最好的。对于巨大的误差,它是线性的,对于小误差,它是二次性的。

Huber损失的特点是参数delta(𝛿)。对于数据点y的预测f(x),表征参数为𝛿,Huber损失被表述为。

Huber Loss

分类的损失函数

分类问题涉及预测一个离散的类的输出。它涉及到根据不同的参数将数据集划分为不同的、独特的类别,以便将一个新的、未见过的记录放入其中一个类别。

一封邮件可以被归类为垃圾邮件或不是垃圾邮件,一个人的饮食偏好可以被归为三类之一--素食、非素食和素食。让我们来看看可用于分类问题的损失函数。

二元交叉熵损失

这是用于有两个类别的分类问题的最常见的损失函数。熵 "这个词,看似不合时宜,其实有统计学的解释。

是对被处理信息中随机性的衡量,而交叉熵是对两个随机变量之间随机性差异的衡量。

如果预测的概率与实际标签的分歧增加,交叉熵损失就会增加。据此,当实际观察标签为1时,预测概率为0.011,将导致高的损失值。在理想情况下,一个 "完美 "的模型会有一个0的对数损失

Binary Cross Entropy Loss

其中yi是真实标签,hθ(xi)是假设后的预测值。

由于二元分类意味着类取0或1,如果yi=0,该项就不存在了,如果yi=1,(1-yi)项就变成0。

很聪明,不是吗?

分类交叉熵损失

分类交叉熵损失本质上是二进制交叉熵损失扩展到多个类别。使用分类交叉熵损失函数时的一个要求是,标签应该是单次编码的

这样,只有一个元素是非零的,因为向量中的其他元素会被乘以零。

铰链损失

另一个常用于分类的损失函数是铰链损失。铰链损失主要是为支持向量机开发的,用于计算从超平面到类的最大余量。

损失函数会对错误的预测进行惩罚,而对正确的预测则不会这样做。因此,目标标签的得分应该大于所有不正确标签的总和,其差值为(至少)1。

这个余量是超平面到数据点的最大余量,这就是为什么铰链损失是SVM的首选。下面的图片澄清了什么是超平面和最大余量的问题。

SVM

铰链损失的数学表述如下。

Hinge Loss

其中sj是真实值,syi是预测值。

铰链损失也被扩展为平方铰链损失误差分类铰链损失误差

Kullback Leibler Divergence Loss (KL Loss)

Kullback Leibler Divergence Loss是衡量一个分布与参考分布(或基线分布)的差异程度。Kullback Leibler Divergence Loss为零意味着两个概率分布是相同的。

预测分布中损失的信息数量被用作一种衡量标准。分布P(x)与Q(x)的KL背离由以下公式给出。

KL Divergence Loss

结语

这篇文章是对分类和回归问题中使用的损失函数的一个梳理。虽然选择损失函数并不被重视和忽视,但人们必须明白,没有放之四海而皆准的东西,选择一个损失函数与选择正确的机器学习模型对于手头的问题同样重要。