Mean Relative Error#
MRE(Mean Relative Error,平均相对误差)是评估回归模型性能的指标。它表示预测值与真实值之间差异的平均值,相对于真实值的比例。其数学表达式如下:
\[
\text{MRE} = \frac{1}{n} \sum_{i=1}^{n} \left| \frac{y_i - \hat{y}_i}{y_i} \right|
\]
其中:
\(n\) 是样本的数量。
\(y_i\) 是第 \(i\) 个样本的真实值。
\(\hat{y}_i\) 是第 \(i\) 个样本的预测值。
\(\frac{y_i - \hat{y}_i}{y_i}\) 是第 \(i\) 个样本的相对误差。
这个公式计算了所有样本的相对误差的绝对值的平均值,从而得到整体的平均相对误差。
import numpy as np
def mean_relative_error(y_true: np.ndarray | list, y_pred: np.ndarray | list) -> float:
"""
Calculate the Mean Relative Error (MRE) between true values and predicted values.
Parameters:
y_true (np.ndarray | list): Array or list of true values.
y_pred (np.ndarray | list): Array or list of predicted values.
Returns:
float: The mean relative error.
"""
# Convert inputs to numpy arrays if they are not already
y_true = np.asarray(y_true, dtype=np.float64)
y_pred = np.asarray(y_pred, dtype=np.float64)
# Calculate the absolute differences
d = np.abs(y_true - y_pred)
# Avoid division by zero by adding a small epsilon value
epsilon = np.finfo(float).eps
denominator = np.abs(y_true) + epsilon
# Calculate the relative errors
relative_error = d / denominator
# Return the mean of the relative errors
return np.mean(relative_error)