预测评价指标

0. 假设

真实值: y = { y 1 , y 2 , . . . , y n } y=\lbrace y_1,y_2,...,y_n\rbrace y={y1,y2,...,yn}
预测值: y ^ = { y 1 ^ , y 2 ^ , . . . , y n ^ } \hat{y}=\lbrace\hat{y_1},\hat{y_2},...,\hat{y_n}\rbrace y^={y1^,y2^,...,yn^}

1. MSE: Mean Square Error 均方误差

M S E = 1 n ∑ i = 1 n ( y i ^ − y i ) 2 MSE = \frac{1}{n}\sum_{i=1}^n(\hat{y_i}-{y_i})^2 MSE=n1i=1n(yi^yi)2

  • M S E ≥ 0 MSE\geq0 MSE0
  • 当预测值与真实值完全吻合时等于0,即完美模型
  • 误差越大,该值越大

RMSE:Root Mean Square Error 均方根误差

  • MSE加上根号
    R M S E = M S E = 1 n ∑ i = 1 n ( y i ^ − y i ) 2 RMSE =\sqrt{MSE}= \sqrt{\frac{1}{n}\sum_{i=1}^n(\hat{y_i}-{y_i})^2} RMSE=MSE =n1i=1n(yi^yi)2
  • 数量级上比较直观,比如RMSE=10,可以认为回归效果相比真实值平均相差10。
  • R M S E ≥ 0 RMSE\geq0 RMSE0
  • 当预测值与真实值完全吻合时等于0,即完美模型
  • 误差越大,该值越大

NRMSE:Normalized RMSE 归一化均方根误差

N R M S E = R M S E y ˉ = 1 n ∑ i = 1 n ( y i ^ − y i ) 2 y ˉ NRMSE =\frac{RMSE}{\bar{y}}=\frac{ \sqrt{\frac{1}{n}\sum_{i=1}^n(\hat{y_i}-{y_i})^2}}{\bar{y}} NRMSE=yˉRMSE=yˉn1i=1n(yi^yi)2

MAE:Mean Absolute Error 平均绝对误差

M A E = 1 n ∑ i = 1 n ∣ y i ^ − y i ∣ MAE=\frac{1}{n}\sum_{i=1}^n|\hat{y_i}-{y_i}| MAE=n1i=1nyi^yi

  • M A E ≥ 0 MAE\geq0 MAE0
  • 当预测值与真实值完全吻合时等于0,即完美模型
  • 误差越大,该值越大

MAPE:Mean Absolute Percentage Error 平均绝对百分比误差

M A P E = 1 n ∑ i = 1 n ∣ y i ^ − y i y i ∣ × 100 % MAPE=\frac{1}{n}\sum_{i=1}^n|\frac{\hat{y_i}-{y_i}}{y_i}|\times100\% MAPE=n1i=1nyiyi^yi×100%

  • MAPE跟MAE很像,就是多了个分母
  • M A P E ≥ 0 MAPE\geq0 MAPE0
  • 当预测值与真实值完全吻合时等于0 % \% %,即完美模型
  • MAPE 大于 100 %则表示劣质模型
  • 误差越大,该值越大
  • 当真实值有数据等于0时,存在分母0除问题,该公式不可用

SMAPE:Symmetric Mean Absolute Percentage Error 对称平均绝对百分比误差

S M A P E = 1 n ∑ i = 1 n ∣ ∣ y i ^ − y i ∣ ( ∣ y i ^ ∣ + ∣ y i ∣ ) / 2 ∣ × 100 % SMAPE=\frac{1}{n}\sum_{i=1}^n|\frac{|\hat{y_i}-{y_i}|}{(|\hat{y_i}|+|y_i|)/2}|\times100\% SMAPE=n1i=1n(yi^+yi)/2yi^yi×100%

  • 当预测值与真实值完全吻合时等于0 % \% %,即完美模型
  • SMAPE 大于 100 %则表示劣质模型
  • 误差越大,该值越大
  • 当真实值有数据等于0时,存在分母0除问题,该公式不可用

MSE/RMSE/MAE/MAPE/SMAPE实现Python代码

# coding=utf-8
import numpy as np
from sklearn import metrics

# MAPE和SMAPE需要自己实现
def mape(y_true, y_pred):
    return np.mean(np.abs((y_pred - y_true) / y_true)) * 100

def smape(y_true, y_pred):
    return 2.0 * np.mean(np.abs(y_pred - y_true) / (np.abs(y_pred) + np.abs(y_true))) * 100

y_true = np.array([1.0, 5.0, 4.0, 3.0, 2.0, 5.0, -3.0])
y_pred = np.array([1.0, 4.5, 3.5, 5.0, 8.0, 4.5, 1.0])

# MSE
print(metrics.mean_squared_error(y_true, y_pred)) # 8.107142857142858
# RMSE
print(np.sqrt(metrics.mean_squared_error(y_true, y_pred))) # 2.847304489713536
# MAE
print(metrics.mean_absolute_error(y_true, y_pred)) # 1.9285714285714286
# MAPE
print(mape(y_true, y_pred)) # 76.07142857142858,即76%
# SMAPE
print(smape(y_true, y_pred)) # 57.76942355889724,即58%

决定系数(determinationcoefficient) R 2 R^2 R2

R 2 = S S R S S T = ∑ i = 1 N ( y ^ i − y ˉ ) 2 ∑ i = 1 N ( y i − y ˉ ) 2 R^2 = \frac{SSR}{SST}=\frac{\sum_{i=1}^{N}(\hat y_i-\bar y)^2}{\sum_{i=1}^{N}( y_i-\bar y)^2} R2=SSTSSR=i=1N(yiyˉ)2i=1N(y^iyˉ)2

  • 1 ≥ R 2 ≥ 0 1 \geq R^2 \geq0 1R20
  • 这个值越大,预测性能越好

参考链接

1、MSE/RMSE/MAE/MAPE/SMAPE
2、公式编写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭小儒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值