在人工智能算法大数据时代,会有各种各样的预测模型,怎么来评判一个预测模型的准确度呢?
所谓的预测准确度其实就是预测值和实际值之间的相近程度,预测值和实际值之间越接近,说明预测准确度越高。用y_{hat}表示模型的预测值,y表示模型的真实值。

1.MSE

MSE是Mean Square Error的缩写,表示均方误差,具体公式如下:
模型预测结果好坏的评价指标 - 图1
该公式表示每个预测值与实际值之间距离的平方和,值越大,表示误差越大。

2.RMSE

RMSE表示均方根误差,是对MSE的开根号,有点类似方差与标准差的区别。人们对均方差和方差一样没有直观的理解,不知道均方差=100时到底是准确度高还是低。所以就有了均方根误差,可以将均方根误差和实际值之间去比较,就可以对预测准确度有个直观的理解。
比如实际值基本在10左右,均方根误差是5,那么就可以感受到,预测值差不多会有一半的误差。而如果要是看均方误差25的话,可能就不太好理解。

3.MAE

MAE是Mean Absolute Error的缩写,表示平均绝对误差,公式如下:
模型预测结果好坏的评价指标 - 图2
平均绝对误差就是把均方误差中对预测值与实际值之间的差值求平方改成了求绝对值。与RMSE有点类似。

4.MAPE

MAPE是Mean Absolute Percentage Error的缩写,表示平均绝对百分比误差,公式如下:
模型预测结果好坏的评价指标 - 图3
MAPE对预测的准确度表示就更直观了,有点类似于增幅的概念。用预测值与实际值之间的差去与实际值相比,看其中的占比有多大。

5.Python实现

上面这些指标用Python的计算呢方式
MSE的计算在Sklearn中有现成的函数可以调用,代码如下:

  1. from sklearn import metrics
  2. mse = metrics.mean_squared_error(y_test, y_pre)

RMSE直接对MSE的结果开根号即可,代码如下:

  1. import numpy as np
  2. rmse = np.sqrt(mse)

MAE的计算在Sklearn中也有现成的函数可以调用,代码如下:

  1. from sklearn import metrics
  2. mae = metrics.mean_absolute_error(y_test, y_pre)

MAPE的计算需要自己写代码来实现,不过也比较简单,具体代码如下:

  1. def mape(y_true, y_pred):
  2. return np.mean(np.abs((y_pred - y_true) / y_true)) * 100
  3. mape = mape(y_true, y_pred)

以上就是关于模型准确度常用的评价指标以及Python实现代码。