回归评价指标---MSE、RMSE、MAE、R-Squared
分类问题的评价指标是准确率,那么回归算法的评价指标就是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】回归模型的几个评价指标