二分类问题中的性能指标【python,机器学习,算法】

发布于:2024-06-26 ⋅ 阅读:(31) ⋅ 点赞:(0)

平均绝对误差(MAE)

平均绝对误差(Mean Absolute Error, MAE)是衡量模型预测误差的一种方法,通常用于回归分析。它表示的是预测值与真实值之间差的绝对值的平均数。计算公式如下:
M A E = 1 N ∑ i = 1 N ∣ y i − y ^ ∣ MAE=\frac{1}{N}\sum\limits_{i=1}^{N}|y_i-\hat{y}| MAE=N1i=1Nyiy^,
其中 y i y_i yi表示第 i i i个数据的预测值, y ^ \hat{y} y^表示第 i i i个数据的真实值。

平均绝对误差的特点是:

  1. 它是一个非负数,且MAE值越小,说明预测模型的效果越好。
  2. MAE 使用的是绝对值,因此它不会因为异常值而受到影响,这一点比均方误差(Mean Squared Error, MSE)更有优势。
  3. MAE的单位与原数据的单位相同,这使得它具有更好的解释性。

MAE通常用于评估模型在预测连续值时的性能,例如在天气预报、股票价格预测等领域。

均方误差(MSE)

均方误差(Mean Squared Error, MSE)是另一种衡量模型预测误差的方法,常用于回归分析。它是预测值与真实值之间差的平方的平均数。计算公式如下:
M S E = 1 N ∑ i = 1 N ( y i − y ^ ) 2 MSE=\frac{1}{N}\sum\limits_{i=1}^{N}(y_i-\hat{y})^2 MSE=N1i=1N(yiy^)2
均方误差的特点是:

  1. 它是一个非负数,且MSE值越小,说明预测模型的效果越好。
  2. MSE 使用的是平方,因此它会对较大的误差给予较大的权重,这意味着大的误差会对MSE产生较大的影响。
  3. MSE的单位是原数据单位的平方,这使得它在解释上不如平均绝对误差直观。
  4. MSE通常用于评估模型在预测连续值时的性能,特别是在关注较大误差的情况下。与MAE相比,MSE对异常值更为敏感,因此在异常值较多的情况下,使用MSE可能会导致模型性能评估的不准确。

在实际应用中,MSE的一个优点是它在数学上更容易处理,特别是当涉及到梯度下降等优化算法时。此外,MSE是最小二乘法的基础,这是一种常用的参数估计方法。

R 平方( R 2 R^2 R2

R平方(R²或R2),也称为决定系数,是衡量回归模型拟合优度的一个统计量。它表示因变量的变异中有多少可以被自变量解释。R平方的值范围从0到1,或者以百分比形式表示从0%到100%。

R平方的计算通常基于均方误差(MSE):
R 2 = 1 − M S E m o d e l M S E n u l l R^2=1-\frac{MSE_{model}}{MSE_{null}} R2=1MSEnullMSEmodel,
其中 M S E m o d e l MSE_{model} MSEmodel表示模型的均方误差, M S E n u l l MSE_{null} MSEnull表示以实际值的均值作为 y ˉ \bar{y} yˉ来计算的 MSE 值。

R平方的解释如下:

  • 𝑅^2=0:表示模型没有任何解释能力,因变量的变异不能由自变量解释。
  • 0<𝑅^{2}<1:表示模型可以解释因变量的一部分变异,R平方越接近1,模型的解释能力越强。
  • 𝑅^2=1:表示模型完美地解释了因变量的所有变异。

虽然R平方是一个常用的统计量,但它也有一些局限性:

  1. R平方不告诉我们在实践中模型的表现如何,它只是衡量了模型对数据的拟合程度。
  2. R平方不说明因果关系,即使R平方很高,也不能断定自变量导致了因变量的变化。
  3. R平方对数据中的异常值非常敏感,因为异常值会增加模型的 MSE。
  4. R平方随着自变量的增加而增加,即使这些自变量对模型没有实际贡献,因此可能会产生误导。

在实际应用中,我们应该谨慎地使用R平方,并结合其他统计量和模型诊断工具来全面评估模型的性能。

可以借助sklearn库计算这些指标:

from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score

X_actual = [5, -1, 2, 10]
Y_predict = [3.5, -0.9, 2, 9.9]
print('R Squared =', r2_score(X_actual, Y_predict))
print('MAE =', mean_absolute_error(X_actual, Y_predict))
print('MSE =', mean_squared_error(X_actual, Y_predict))

网站公告

今日签到

点亮在社区的每一天
去签到