机器学习笔记:回归模型评估指标 |
您所在的位置:网站首页 › emi指标越大越好 › 机器学习笔记:回归模型评估指标 |
日常比赛中,常见两种类型:分类和回归。 在回归任务中(对连续值的预测),常见的评估指标(metrics)主要包括: 平均绝对误差 MAE(Mean Absolute Error) 均方误差 MSE(Mean Square Error) 均方根误差 RMSE(Root Mean Square Error) 平均绝对百分比误差 MAPE(Mean Absolute Percentage Error)其中,MAE 和 MSE 使用较为广泛。 需要根据不同比赛的不同评价指标进行选择。 通常,sklearn.metrics 中评估函数以 _score 结尾返回一个值,越大越好,而函数以 _error 或者 _loss 结尾则返回一个值,越小越好。 一、平均绝对误差 MAE平均绝对误差(MAE)用来衡量预测值与真实值之间的平均绝对误差,是一个非负值,MAE越小表示模型越好。 # 测试数据 y_true = [3, -0.5, 2, 7] y_pred = [2.5, 0.0, 2, 8] # sklearn方式 from sklearn.metrics import mean_absolute_error print(mean_absolute_error(y_true, y_pred)) # 0.5 # 自定义 import pandas as pd import numpy as np def MAE(y_true, y_pred): return np.mean(np.abs(pd.Series(y_true) - pd.Series(y_pred))) MAE(y_true, y_pred) # 0.5 二、均方误差 MSE均方误差(MSE)同样是衡量预测值与真实值之间的差距。 # 测试数据 y_true = [3, -0.5, 2, 7] y_pred = [2.5, 0.0, 2, 8] # sklearn from sklearn.metrics import mean_squared_error print(mean_squared_error(y_true, y_pred)) # 0.375 # 自定义 import pandas as pd import numpy as np def MSE(y_true, y_pred): return np.mean((pd.Series(y_true) - pd.Series(y_pred)) ** 2) MSE(y_true, y_pred) # 0.375 三、均方根误差 RMSE均方根误差(RMSE)是回归模型的典型指标,用于指示模型预测中会产生多大的误差。对于较大的误差,权重较高。 同样的,RMSE越小越好。 import numpy as np from sklearn.metrics import mean_squared_error print(np.sqrt(mean_squared_error(y_true, y_pred))) # 0.61237 四、平均绝对百分比误差 MAPEMAPE和MAE类似,只是在MAE的基础上做了标准化处理。 MAPE越小表示模型越好。 def MAPE(y_true, y_pred): return np.mean(np.abs((y_true - y_pred) / y_true)) 五、R2评价指标sklearn实现线性回归时默认采用R2指标。R2越大,表示模型越好。 R2的好处在于其结果进行归一化,更容易看出模型间的差距。 R2≤1 R2越大越好。当我们预测的模型完全准确时,R2等于最大值1 当R2<0时,说明模型还不如基准模型,很可能数据不存在任何线性关系 # 自定义 def R2(y_true, y_pred): u = np.sum((y_true - y_pred) ** 2) v = np.sum((y_true - np.mean(y_true)) ** 2) return 1 - (u / v) # 0.9486081370449679 # sklearn from sklearn.metrics import r2_score print(r2_score(y_true, y_pred)) # 0.9486081370449679 六、均方对数误差 MSLE均方对数误差是非负值,模型越好,越接近0。 较为少用。 七、偏差和方差 1、偏差 Bias偏差:描述的是预测值(估计值)的期望与真实值之间的差距。 偏差越大,越偏离真实数据。 2.方差 Variance方差:描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。 方差越大,数据的分布越分散。 此处借用知乎大佬简明解释。 想象你开着一架黑鹰直升机,得到命令攻击地面上一只敌军部队,于是你连打数十梭子,结果有一下几种情况: 1.子弹基本上都打在队伍经过的一棵树上了,连在那棵树旁边等兔子的人都毫发无损,这就是方差小(子弹打得很集中),偏差大(跟目的相距甚远)。 2.子弹打在了树上,石头上,树旁边等兔子的人身上,花花草草也都中弹,但是敌军安然无恙,这就是方差大(子弹到处都是),偏差大(同1)。 3.子弹打死了一部分敌军,但是也打偏了些打到花花草草了,这就是方差大(子弹不集中),偏差小(已经在目标周围了)。 4.子弹一颗没浪费,每一颗都打死一个敌军,跟抗战剧里的八路军一样,这就是方差小(子弹全部都集中在一个位置),偏差小(子弹集中的位置正是它应该射向的位置)。 作者:刑无刀 链接:https://www.zhihu.com/question/20448464/answer/24397161 来源:知乎方差,是形容数据分散程度的,算是“无监督的”,客观的指标. 偏差,形容数据跟我们期望的中心差得有多远,算是“有监督的”,有人的知识参与的指标。 参考链接:评估回归模型的指标:MSE、RMSE、MAE、R2、偏差和方差 参考链接:偏差和方差有什么区别? 参考链接:线性回归(模型的评估) 参考链接:Python3——sklearn中回归模型的六种评估规则 参考链接:sklearn 回归模型评价指标及代码示例 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |