平均绝对误差(Mean Absolute Error, MAE)是一种衡量回归模型预测准确度的指标,它通过计算预测值与真实值之间的绝对差的平均值来评估模型性能。在机器学习领域,MAE是一个常用的损失函数,用于训练过程中的误差反馈。
在计算平均绝对误差时,需要指定以下参数:
y_true
:真实目标值,可以是一维数组,也可以是二维数组,形状为(n_samples,)或(n_samples, n_outputs)。y_pred
:预测目标值,与真实目标值具有相同的形状。sample_weight
:可选参数,样本权重,用于调整每个样本在误差计算中的权重。multioutput
:多输出处理方式,可以是'raw_values'、'uniform_average'或形状为(n_outputs,)的数组。其中,multioutput
参数定义了如何处理多输出值的聚合。如果设置为'raw_values',则返回每个输出的单独误差;如果设置为'uniform_average',则所有输出的误差将被均匀加权平均;如果提供数组,则使用数组中的权重来平均误差。
计算结果为一个浮点数或浮点数数组。如果multioutput
参数设置为'raw_values',则返回每个输出的平均绝对误差;如果设置为'uniform_average'或权重数组,则返回加权平均误差。MAE的输出是一个非负浮点数,最佳值为0.0。
以下是使用Python的scikit-learn库计算平均绝对误差的示例代码:
from sklearn.metrics import mean_absolute_error
# 单输出示例
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
print(mean_absolute_error(y_true, y_pred)) # 输出: 0.5
# 多输出示例
y_true = [[0.5, 1], [-1, 1], [7, -6]]
y_pred = [[0, 2], [-1, 2], [8, -5]]
print(mean_absolute_error(y_true, y_pred)) # 输出: 0.75
# 使用raw_values
print(mean_absolute_error(y_true, y_pred, multioutput='raw_values')) # 输出: [0.5, 1. ]
# 使用自定义权重
print(mean_absolute_error(y_true, y_pred, multioutput=[0.3, 0.7])) # 输出: 0.85
平均绝对误差回归损失在多个领域有广泛的应用,包括但不限于: