了解机器学习回归的3种最常见的损失函数

Tyson空间 2019-05-23

点击上方关注,All in AI中国

机器学习中的损失函数是衡量你的ML模型的预测结果准确性的一个指标。

损失函数将以两项作为输入:模型的输出值和标准答案的期望值。损失函数的输出称为损失,它是衡量我们的模型在预测结果方面做得有多好。

损失的高值意味着我们的模型性能很差。较低的损耗值意味着我们的模型表现非常好。

选择适当的损失函数对于训练精确模型至关重要。某些损失函数将具有某些特定的属性,并帮助您的模型以特定方式学习。有些人可能会更多地关注异常值,其他人则更多。

在本文中,我们将介绍机器学习回归的3种最常见的损失函数。我将解释它们的工作原理、它们的优点和缺点,以及在训练回归模型时如何最有效地应用它们。

均方误差(MSE)

均方误差(MSE)可能是最简单和最常见的损失函数,通常在入门机器学习课程中讲授。要计算MSE,您可以获取模型预测与标准答案之间的差异,对其求平方,并在整个数据集中对其进行平均。

MSE永远不会是负面的,因为我们总是把误差进行平方。 MSE由以下等式正式定义:

了解机器学习回归的3种最常见的损失函数

其中N是我们测试的样本数。代码很简单,我们可以用简单的numpy来编写它,并使用matplotlib绘制它:

了解机器学习回归的3种最常见的损失函数

了解机器学习回归的3种最常见的损失函数

MSE损失函数

优点:MSE非常适合确保我们训练有素的模型没有具有巨大错误的离群值预测,因为MSE会因为函数的平方部分而对这些错误施加更大的权重。

缺点:如果我们的模型做出一个非常糟糕的预测,函数的平方部分会放大误差。然而在许多实际情况中,我们并不关心这些异常值,而是针对更多全面的模型,这些模型在大多数情况下都表现得足够好。

平均绝对误差(MAE)

平均绝对误差(MAE)在定义上与MSE略有不同,但有趣地提供了几乎完全相反的属性!要计算MAE,您可以获取模型预测与基础事实之间的差异,将绝对值应用于该差异,然后在整个数据集中对其进行平均。

与MSE一样,MAE永远不会消极,因为在这种情况下,我们总是采用误差的绝对值。 MAE由以下等式正式定义:

了解机器学习回归的3种最常见的损失函数

再一次,我们的代码在Python中非常简单!我们可以用简单的numpy编写它并使用matplotlib绘制它。这次我们将在MSE顶部用红色绘制它,看看它们之间的比较。

了解机器学习回归的3种最常见的损失函数

了解机器学习回归的3种最常见的损失函数

MAE(红色)和MSE(蓝色)损失函数

优势:MAE的优点在于其优势直接涵盖了MSE的劣势。由于我们采用绝对值,所有误差将将在相同的线性尺度上加权。因此,与MSE不同,我们不会过分强调我们的异常值,我们的损失函数提供了一个通用的,甚至是衡量我们模型执行情况的方法。

缺点:如果我们确实关心模型的异常预测,那么MAE将不会那么有效。来自异常值的大误差最终将与较低误差的权重完全相同。这可能会导致我们的模型在大多数情况下变得很好,但偶尔也会做一些非常糟糕的预测。

Huber损失

现在我们知道MSE非常适合学习异常值,而MAE非常适合忽略它们。但是中间的呢?

考虑一个示例,其中我们有一个包含100个值的数据集,我们希望我们的模型能够被训练来预测。在所有数据中,25%的预期值为5,而其他75%的期望值为10。

MSE的损失并不能解决问题,因为我们并没有真正的“异常值”; 25%绝不是一个小比例。另一方面,我们不一定要用MAE将25%的权重定得太低。那些5的值不接近中位数(10 - 因为75%的点的值为10),但它们也不是真正的异常值。

我们的解决方案?

Huber损失函数。

通过平衡MSE和MAE,Huber 损失提供了两全其美的优势。我们可以使用以下分段函数来定义它:

了解机器学习回归的3种最常见的损失函数

这个等式基本上说的是:对于小于delta的损失值,使用MSE;如果损失值大于delta,请使用MAE。这有效地结合了两个损失函数的两个方面的优点!

使用MAE获得更大的损失值可以减轻我们对异常值上增加的权重,这样我们仍然可以得到一个全面的模型。同时,我们利用最小二乘熵对较小的损耗值保持二次函数在中心附近。

只要损失值大于1,就会产生放大损耗值的效果。一旦这些数据点的损失低于1,则二次函数就会对对它们进行加权,以将训练集中在较高误差的数据点上。

查看下面的Huber 损失函数代码。我们还绘制了MSE和MAE旁边的Huber Loss,以比较差异。

了解机器学习回归的3种最常见的损失函数

了解机器学习回归的3种最常见的损失函数

MAE(红色),MSE(蓝色)和Huber(绿色)损失函数

请注意我们如何能够在MSE和MAE之间获得Huber损失。

两全其美!

当你觉得你需要在给予异常值一些权重之间取得平衡时,你会想要使用Huber损失,但不要太多。对于异常值对您非常重要的情况,请使用MSE!对于您根本不关心异常值的情况,请使用MAE!

了解机器学习回归的3种最常见的损失函数

编译出品

相关推荐