本节内容是衡量线性回归算法的指标, 导图如下:
均方误差 MSE
有一个问题: 这个衡量标准和 m 相关. 无法进行比较 因此, 我们可以很容易的进行改良我们的衡量标准, 让他们都除以 m.
均方根误差 RMSE
这个这个 MSE 还有一个问题, 就是量纲不同. 数据集是用万元做单位的, 但是 MSE 确实万元的平方, 显然不同量纲. 这个原理跟为什么有了标准差, 还要有方差是一样的, 都是为了统一量纲.
所以, 我们的解决方法跟方差和标准差是一样的, 让 MSE 去开方, 得到 RMSE:
平均绝对误差 MAE
另外还要一种很直白的方法, 如下:
RMSE vs MAE
RMSE 和 MAE 的量纲是一样的, 都是数据中 y 对应的量纲. 他们的区别如下:
实战
下面我们用真实的波士顿房价数据进行练习一下.
第一步: 导入数据 -
第二步: 截取房间数量特征
第三步: 绘制散点图
第四步: 剔除干扰点
- j
- from sklearn.model_selection import train_test_split
- x_train,x_test,y_train,y_test = train_test_split(x,y,shuffle =666)
分离后:
第五步: 调用回归算法进行预测
第六步: 算法衡量
R Squared
前面提到的几种评价标准, 其实还存在一个问题, 那就是, 不是采用平时的分类准确度标准, 也就是, 0 表示最差, 1 表示最好, 然后算法准确度的值在 (0,1) 之间, 我们可以很方便的比较两种算法的优劣. 举个例子, 算法一我用房子大小做特性, 算法二我用房屋距市中心位置做特性, 采用 RMSE 或者 MAE 计算后, 无法衡量两个算法的优劣, 因为一个是面积, 一个是距离, 不是同一个东西.
因此, 我们需要引入一个新的指标: R Squared.
具体为:
为什么说这个好呢? 我们可以这么想:
采用
进行预测叫做 Baseline Model(基类模型), 它与 x 无关, 所以它的误差肯定是比较大的.
从而, 我们可以对指标做这样的理解:
接下来我们对 R 方的公式进行简化:
接下来, 我们用代码来实现一下 R Square:
然后, 我们调用 sklearn 封装的方法试一下:
可以看到结果是一样的~
OK, 第二部分结束了, 默默奖励自己一颗糖果~~
来源: https://juejin.im/post/5c94226c5188252d5379e1a3