在机器学习领域,损失函数扮演着至关重要的角色,它类似于学生学习过程中的指导者。正如指导者帮助学生提高表现和效率一样,损失函数用于改善模型的输出结果,以提高预测的准确性。损失函数是现代机器学习的基础,它衡量模型在确定x和y之间关系时的不准确性。任何统计模型都使用损失函数,作为评估模型性能的标准。模型学习的参数是通过最小化选定的损失函数来计算的。损失函数计算算法输出与指定目标值之间的误差(或简单地称为“损失”)。损失函数评估机器学习算法对特征数据集的预测能力。
损失函数的分类
损失函数可以分为两大类:回归问题和分类问题。在回归问题中,目标是预测一个连续值,例如估计房价或预测股票价格,因为它们旨在创建能够预测实数值的模型。在分类问题中,任务是确定离散类别的输出,这涉及到根据各种因素将数据集分类到不同的类别中,以便新记录可以被添加到其中一个类别中。
回归问题的损失函数
回归问题涉及特定连续值的预测。以下是一些常用的回归损失函数:
平均绝对误差(MAE)通过计算实际值和预测值之间的总绝对差来衡量。它测量一组预测值中错误大小的平均值。虽然绝对误差对异常值更加稳健,但均方误差更容易处理。如果预测值和真实值完全相同,MAE将为零,但实际上它永远不会是零。由于希望减少预测中的不准确度,回归问题可能会从使用这种简单的损失函数作为衡量标准中受益。
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)
均方误差(MSE,也称为L2误差)通过测量实际值和模型预测值之间的平均平方差来衡量。它输出一个对应于一系列值的单一数字。目标是降低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))
均值偏差误差使用实际值,而不是绝对值,来计算模型的平均偏差。简而言之,偏差是对参数的高估或低估。
def mbe(y, y_pred):
return np.sum(y - y_pred) / np.size(y)
分类问题的损失函数
在分类问题中,任务是预测每个类别的相应概率。以下是一些用于分类的损失函数:
这种损失函数是二元分类问题的默认选择。使用交叉熵损失来计算分类模型的有效性,它输出一个介于0和1之间的概率值。随着预期概率值与实际标签的偏离,交叉熵损失会增加。
def binary_cross_entropy(actual, predicted):
sum_score = 0.0
for i in range(len(actual)):
sum_score += actual[i] * np.log(1e-15 + predicted[i])
mean_sum_score = 1.0 / len(actual) * sum_score
return -mean_sum_score
合页损失最初是为支持向量机算法设计的,可以替代交叉熵损失。当目标值落在-1到1的范围内时,合页损失对分类问题最有益。如果实际和预期数字之间的符号发生变化,它能够分配更大的错误。因此,它比交叉熵表现得更好。
def hinge(y, y_pred):
l = 0
size = np.size(y)
for i in range(size):
l = l + max(0, 1 - y[i] * y_pred[i])
return l / size
Kullback-Leibler散度损失衡量一个分布与标准分布的差异。当Kullback-Leibler散度损失为0时,两种情况下的概率分布是相同的。
除了合页损失外,它只计算合页损失分数的平方。这使得它在数值上更容易处理,并减少了误差函数。它确定了分类边界,建立了不同类别数据点之间可能的最大差异。
对数损失评估模型为不同结果提供概率的准确性,特别是在分类任务中。
多类分类的损失函数
多类分类是预测模型,其中被分配的类别超过两个。以下是一些用于多类分类的损失函数:
在这种情况下,目标值是0到n,或者0到1、2、3和n。为了实现最高水平的准确性,通过平均实际和预期概率值之间的差异来计算得分。
多类交叉熵在处理大量数据点时遇到困难,因为进行了独热编码操作。这个问题通过稀疏交叉熵得到了解决,它在不使用独热编码的情况下计算错误。
- 研究了损失函数及其在机器学习中的重要性
- 研究了损失函数的工作方式及其在从相应的机器学习模型中获得优化输出中的作用
- 研究了回归问题中使用的各类损失函数
- 研究了分类问题以及多类分类问题中使用的各类损失函数
- 涵盖了一些常用损失函数的Python实现,包括回归和分类问题
- 研究了均方误差及其Python实现和数学公式
- 基本上,涵盖了回归和分类(二元和多类)的常见损失函数,包括它们的解释和Python实现
- 解释模型如何进行猜测。
- 了解正确答案。
- 为差异制定数学规则。
- 累加所有差异。
- 选择是否希望使总差异变小或变大。
- 使用像Python这样的编程语言编写代码。
- 调整模型在训练期间的学习方式。
- 为模型提供更好的规则。
- 用更多的例子教导模型。
- 改进提供给模型的信息。
- 添加特殊规则以避免过度自信。
- 测试不同的学习速度。
- 找到模型复杂性的合适平衡点。
- 如果训练没有改进,则停止训练。