ps教程从零开始学,零基础学葫芦丝
摘要:【机器学习12】线性回归算法的评价指标:MSE,RMSE,R2_score。
在上一篇文章中,我们介绍了一个简单的线性回归算法。今天我们介绍几个评价线性回归效果的重要指标。
Python手写的线性回归算法就是这么简单(可点击)
在介绍这些指标之前,我们先来回顾一下上一节线性回归模型是如何建立的。
具有M个样本和一个特征的数据集被分成训练集和测试集。在训练集中,使预测值y和真实值y之间的差的平方和尽可能小:
然后求解a和b得到回归模型,应用于测试集计算预测值y:
最后,计算预测值与真实值之差的平方和,作为衡量线性回归模型质量的评价指标:
但是上面的公式有一个问题:值的大小和样本数量 m 有密切关系,这样的结果是无法衡量模型好坏的。
MSE为例,假设建立两个模型,一个模型使用10个样本,上式计算值为100;另一个模型使用50个样本,计算值是200。很难判断这两种模式哪个更好。
那怎么办呢?其实很好解决。将上述公式除以m,以消除样本数的影响:
这个公式的结果就是第一个模型评价指数:均方误差 MSE(Mean Squared Error)。
以上两个模型,它们的MSE分别是10(100/10)和4 (200/50),所以后一个模型更好。
RMSE但是,MSE 公式有一个问题是会改变量纲。因为公式是平方的,比如Y值的单位是万元,MSE计算的是万元的平方。很难解释这个值的含义。所以为了消除维度的影响,我们可以把这个MSE 开方,得到的结果就第二个评价指标:均方根误差 RMSE(Root Mean Squared Error)换成:
可以看出,MSE和RMSE是正相关的,MSE值较大,可以用RMSE来评价线性回归模型的效果。
MAE的上述公式是为了计算差值的平方,以避免误差的正负抵消。还有一个公式也能起到同样的效果,那就是计算差值的绝对值:
因此,上面的公式也是除以样本数 m 得到的结果就是第三个评价指标:平均绝对误差 MAE(Mean Absolute Error):
以上三个模型解决了样本数M和维数的影响。但是它们都存在一个相同的问题:当量纲不同时,难以衡量模型效果好坏。
例如,模型在房价的一个数据集上预测的误差RMSE是5万元,在学生成绩的另一个数据集上的误差是10个点。有了这两个值,就很难知道模型在哪个数据集上工作得好。
R2_score那么如何比较不同维度的模型的效果呢?这需要使用第四个评价指标:R方值(R2_score)的回归模型。
它的意思是,既然不同的数据集有不同的维度,那么用上面三种方式进行比较是很困难的,那么我们不妨找一个jpdwx作为参考,根据参考计算R平方值,这样就可以比较模型的好坏。
这个参考是什么?它是平均模型。我们知道一个数据集有平均值,房价数据集有房价平均值,学生成绩有成绩平均值。现在我们把这个均值作为基准参考模型,也叫基线模型。这种均值模型的预测值对于任何数据都是一样的,可想而知这种模型的效果自然是很差的。基于此,我们想从数据集中找到规律,建立更好的模型。
R2分数的计算公式如下:
通过它的值,我们可以更好地理解它是如何评价模型的。有几个值:
R2_score = 1,达到最大值。表示分子为0,表示样本中的预测值和真实值完全相等,没有任何误差。也就是说,我们的模型完美地拟合了所有的真实数据,并且它是具有最高R2分数的最佳模型。但是通常模型不会那么完美,总会有误差。当误差较小时,分子小于分母,模型会趋近于1,仍然是一个好的模型。随着误差的增大,R2分数会离最大值1越来越远,直到第二种情况出现。
R2_score = 0。此时,分子等于分母,样本的每个预测值等于均值。也就是说,我们辛辛苦苦训练出来的模型和上面说的均值模型是一模一样的。不如让模型的预测值都是均值,不用训练。当误差越来越大的时候,第三种情况出现了。
R2_score 0:分子大于分母,训练模型产生的误差甚至大于使用平均值产生的误差,即训练模型不如直接去平均有效。这种情况下,模型本身通常不是线性的,我们错误地使用了线性模型,导致误差较大。
在了解了R2_score之后,我们可以进一步完善它的计算公式,为后面的编程做准备。将分子和分母除以一个m,可以得到下面的公式:
可以直接计算出分子的均方误差和分母的方差,从而快速计算出R2值。
上面,我们已经介绍了评价线性回归模型的四个指标。让我们通过波士顿房价数据集来实际计算一下。
在实际案例计算之前,用kNN算法解决回归问题的时候,介绍过波士顿房价数据集,这里不再赘述。现在由于引入了简单线性回归,所以只使用了一个与房价相关性最高的特征:LSTAT(社区中低收入人群比例)。线性回归模型建立后,可以计算出模型的几个评价值。
可以看出,这个特征和房价是负相关的,很好理解:一个社区的低收入人群越多,比例越高,房价自然越低。
将数据分为训练集和测试集后,使用上一个教程中的手写线性回归算法建立回归模型,得到最佳拟合直线:
您可以通过解析来计算这些值。
均方差MSE:
RMSE误差值:
平均误差MAE:
可以看出,RMSE比梅氏值大,因为当差异大时,RMSE会比梅氏放大差异。例如,一个数据集有两个样本,样本差分别为2和100。
MAE=(2 100)/2=51,RMSE增加到70。
最后,计算R2得分值:
R2分数只有0.51,模型不太理想,主要是因为我们的线性回归模型只使用了一个特征,如果使用多个特征效果可能会更好。在下一节中,我们将介绍多元线性回归将再次计算该值。
作为对比,我们也可以计算一下kNN模型下的R2 _得分值,可以看出得分只有0.48,比线性回归差。
本文jupyter笔记本代码,扫码回复“LR2”即可获得。加油!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。