Python中的损失函数 – 简单实现

在Python中,损失函数是任何机器学习模型中不可或缺的一部分。这些函数告诉我们模型的预测输出与实际输出的差异程度有多大。

有多种计算这个差异的方法。在本教程中,我们将介绍一些较为常见的损失函数。

在本教程中,我们将讨论以下四种损失函数。

    均方差
    均方根误差
    平均绝对误差
    交叉熵损失

在这四种损失函数中,前三种适用于回归模型,而最后一种适用于分类模型。

在Python中实施损失函数

让我们来看看如何在Python中实现这些损失函数。

1. 均方误差(Mean Square Error,简称MSE)

均方误差(MSE)是通过预测值与实际观察值之差的平方的平均值来计算的。数学上可以表示如下:

Mean Square Error Loss Functions in Python

以下是用Python实现均方误差(MSE)的代码:

import numpy as np
def mean_squared_error(act, pred):

   diff = pred - act
   differences_squared = diff ** 2
   mean_diff = differences_squared.mean()
   
   return mean_diff

act = np.array([1.1,2,1.7])
pred = np.array([1,1.7,1.5])

print(mean_squared_error(act,pred))

输出:

0.04666666666666667

您还可以使用sklearn中的mean_squared_error来计算MSE。该函数的工作原理如下:

from sklearn.metrics import mean_squared_error
act = np.array([1.1,2,1.7])
pred = np.array([1,1.7,1.5])
mean_squared_error(act, pred)

输出结果:

0.04666666666666667

2. 均方根误差(Root Mean Square Error, RMSE)

均方根误差(RMSE)是以均方误差的平方根计算而得。从数学上讲,我们可以表示为以下形式:

RMSE Loss Functions in Python

RMSE的Python实现如下:

import numpy as np
def root_mean_squared_error(act, pred):

   diff = pred - act
   differences_squared = diff ** 2
   mean_diff = differences_squared.mean()
   rmse_val = np.sqrt(mean_diff)
   return rmse_val

act = np.array([1.1,2,1.7])
pred = np.array([1,1.7,1.5])

print(root_mean_squared_error(act,pred))

产出。

0.21602468994692867

你也可以使用sklearn中的mean_squared_error来计算均方根误差(RMSE)。让我们看看如何使用相同的函数来实现RMSE。

from sklearn.metrics import mean_squared_error
act = np.array([1.1,2,1.7])
pred = np.array([1,1.7,1.5])
mean_squared_error(act, pred, squared = False)

产出:-

结果:

0.21602468994692867

如果将参数‘squared’设置为True,则该函数返回MSE值。如果设置为False,则该函数返回RMSE值。

3. 平均绝对误差 (MAE)

平均绝对误差(MAE)被计算为预测值与实际观测值之间的绝对差异的平均值。数学上可表示如下:

MAE Loss Functions in Python

MAE的Python实现如下:

import numpy as np
def mean_absolute_error(act, pred):
    diff = pred - act
    abs_diff = np.absolute(diff)
    mean_diff = abs_diff.mean()
    return mean_diff

act = np.array([1.1,2,1.7])
pred = np.array([1,1.7,1.5])
mean_absolute_error(act,pred)

输出:

0.20000000000000004

您还可以使用sklearn中的mean_absolute_error函数来计算MAE。

from sklearn.metrics import mean_absolute_error
act = np.array([1.1,2,1.7])
pred = np.array([1,1.7,1.5])
mean_absolute_error(act, pred)

产出。

0.20000000000000004

4. Python 中的交叉熵损失函数

交叉熵损失函数也被称为负对数似然函数。它最常用于分类问题。分类问题是指将一个示例归类为两类以上之一的问题。

让我们来看看如何计算在二元分类问题中的错误率。

让我们考虑一个分类问题,模型试图对狗和猫进行分类。

以下是用Python编写的查找错误的代码。

from sklearn.metrics import log_loss
log_loss(["Dog", "Cat", "Cat", "Dog"],[[.1, .9], [.9, .1], [.8, .2], [.35, .65]])

输出:

0.21616187468057912

我们正在使用scikit-learn中的log_loss方法。

函数调用中的第一个参数是每个输入的正确类别标签列表。第二个参数是模型预测的概率列表。

概率以以下格式呈现:

[P(dog), P(cat)]

结论

这个教程是关于Python中的损失函数。我们介绍了用于回归和分类问题的不同损失函数。希望您在与我们学习时玩得开心!

发表回复 0

Your email address will not be published. Required fields are marked *