回归评价指标---MSE、RMSE、MAE、R-Squared

2019/02/21 22:41
阅读数 89

  分类问题的评价指标是准确率,那么回归算法的评价指标就是MSE,RMSE,MAE、R-Squared

  MSE和MAE适用于误差相对明显的时候,大的误差也有比较高的权重,RMSE则是针对误差不是很明显的时候;MAE是一个线性的指标,所有个体差异在平均值上均等加权,所以它更加凸显出异常值,相比MSE;

  RMSLE: 主要针对数据集中有一个特别大的异常值,这种情况下,data会被skew,RMSE会被明显拉大,这时候就需要先对数据log下,再求RMSE,这个过程就是RMSLE。对低估值(under-predicted)的判罚明显多于估值过高(over-predicted)的情况(RMSE则相反)

1、MSE(Mean Squared Error)均方误差

用 真实值-预测值 然后平方之后求和平均。线性回归用MSE作为损失函数

y_preditc=reg.predict(x_test) #reg是训练好的模型
mse_test=np.sum((y_preditc-y_test)**2)/len(y_test) #跟数学公式一样的

2、RMSE(Root Mean Squared Error)均方根误差

这不就是MSE开个根号么。有意义么?其实实质是一样的。只不过用于数据更好的描述。
例如:要做房价预测,每平方是万元(真贵),我们预测结果也是万元。那么差值的平方单位应该是 千万级别的。那我们不太好描述自己做的模型效果。怎么说呢?我们的模型误差是 多少千万?。。。。。。于是干脆就开个根号就好了。我们误差的结果就跟我们数据是一个级别的,在描述模型的时候就说,我们模型的误差是多少万元。

rmse_test=mse_test ** 0.5

3、MAE (Mean absolute Error)平均绝对误差

mae_test=np.sum(np.absolute(y_preditc-y_test))/len(y_test)

4、R-Squared

  对于回归类算法而言,只探索数据预测是否准确是不足够的。除了数据本身的数值大小之外,我们还希望我们的模型能够捕捉到数据的”规律“,比如数据的分布规律,单调性等等,而是否捕获了这些信息并无法使用MSE来衡量。

  来看这张图,其中红色线是我们的真实标签,而蓝色线是我们的拟合模型。这是一种比较极端,但的确可能发生的 情况。这张图像上,前半部分的拟合非常成功,看上去我们的真实标签和我们的预测结果几乎重合,但后半部分的 拟合却非常糟糕,模型向着与真实标签完全相反的方向去了。对于这样的一个拟合模型,如果我们使用MSE来对它 进行判断,它的MSE会很小,因为大部分样本其实都被完美拟合了,少数样本的真实值和预测值的巨大差异在被均 分到每个样本上之后,MSE就会很小。但这样的拟合结果必然不是一个好结果,因为一旦我的新样本是处于拟合曲 线的后半段的,我的预测结果必然会有巨大的偏差,而这不是我们希望看到的。所以,我们希望找到新的指标,除 了判断预测的数值是否正确之外,还能够判断我们的模型是否拟合了足够多的,数值之外的信息。

  方差的本质是任意一个值和样本均值的差异,差异越大,这些值所带的信息越多。在R2和EVS中,分子是真实值和预测值之差的差值,也就是我们的模型没有捕获到的信息总量,分母是真实标签所带的信息量,所以两者都衡量 1 - 我们的模型没有捕获到的信息量占真实标签中所带的信息量的比例,所以,两者都是越接近1越好

化简上面的公式 ,分子分母同时除以m,那么分子就变成了我们的均方误差MSE,下面分母就变成了方差

  在R2中,分子是真实值和预测值之差的差值,也就是我们的模型没有捕获到的信息总量,分母是真实标签所带的信息量,所以两者都衡量 1 - 我们的模型没有捕获到的信息量占真实标签中所带的信息量的比例,所以,两者都是越接近1越好。

 

如果结果是 0,说明模型拟合效果很差;

如果结果是 1,说明模型无错误

 

三种调用方式:

  •   第一种是直接从metrics中导入r2_score,输入预测值和真实值后打分。
  •   第二种是直接从线性回归LinearRegression的接口score来进行调用。
  •   第三种是在交叉验证中,输入"r2"来调用。EVS有两 种调用方法,可以从metrics中导入,也可以在交叉验证中输入”explained_variance“来调用。

 

5.RMSLE(Root Mean Squared Logarithmic Error)

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

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

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

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

 

假设下图:图的最低点是真实值:3,从图来看,越偏离真实值,误差越大。但偏左边和偏右边误差增长幅度不一样,所以对于skew数据有效。

Scikit-learn中的各种衡量指标

from sklearn.metrics import mean_squared_error #均方误差
from sklearn.metrics import mean_absolute_error #平方绝对误差
from sklearn.metrics import r2_score#R square
#调用
mean_squared_error(y_test,y_predict)
mean_absolute_error(y_test,y_predict)
r2_score(y_test,y_predict)

  

参考文献:

【1】回归评价指标MSE、RMSE、MAE、R-Squared

【2】回归模型的几个评价指标

【3】MSE与MAE的区别与如何选择

【4】L1 vs. L2 Loss function

【5】sklearn 3.3. 模型评估:对模型的预测进行量化考核

【6】机器学习基础,回归模型评估指标 - 知乎

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部