回归问题的性能度量标准

我们以$Y = \{ y_1, y_2,...,y_n \}$ 表示真实的数据,以$\hat Y = \{  \hat{y}_1, \hat{y}_2,...,\hat{y}_n\}$表示预测出来的数据

 

1:均方误差 (mean square error)MSE

$MSE = \frac{1}{n} \sum \limits_{i=1}^{n} (y_i – \hat{y}_i)^2$

 

2:均方根误差 (root mean squared error)RMSE

均方根误差是均方误差开根号得到的结果

$RMSE =  \sqrt{ \frac{1}{n} \sum \limits_{i=1}^{n} (y_i – \hat{y}_i)^2 }$

 

3:平均绝对误差 (mean absolute error) MAE

$MAE = \frac{1}{n} \sum \limits_{i=1}^{n} \lvert y_i – \hat{y}_i \rvert$

 

4:均方根对数误差 (root mean squared logarithmic error) RMSLE

$RMSLE =  \sqrt{ \frac{1}{n} \sum \limits_{i=1}^{n} (log(\hat{y}_i  + 1) – log(y_i + 1) )^2 }$

 

使用RMSLE的好处一:

  假如真实值为1000,若果预测值是600,那么RMSE=400, RMSLE=0.510

  假如真实值为1000,若预测结果为1400, 那么RMSE=400, RMSLE=0.336

  可以看出来在均方根误差相同的情况下,预测值比真实值小这种情况的错误比较大,即对于预测值小这种情况惩罚较大。

使用RMSLE的好处二:

  直观的经验是这样的,当数据当中有少量的值和真实值差值较大的时候,使用log函数能够减少这些值对于整体误差的影响。

 

使用sklearn.metrics 来进行计算:

from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_squared_log_error
from sklearn.metrics import mean_absolute_error

x = [1,2,3,4,5]
y = [2,4,3,2,6]

MSE = mean_squared_error(x, y)
RMSE = MSE ** 0.5
MAE = mean_absolute_error(x, y)
MSLE = mean_squared_log_error(x, y)
RMSLE = MSLE ** 0.5
print(MSE, RMSE, MAE, RMSLE)

结果为:

2.0 1.4142135623730951 1.2 0.3768421477956514

 

参考:

  检测模型结果的时候,除了最常用的MSE,RMSE,Accuracy,AUC等,还有什么吗?

  What is the difference between an RMSE and RMSLE

posted @ 2018-05-04 12:22  小舔哥  阅读(3975)  评论(0编辑  收藏  举报