首页 > 其他分享 >机器学习笔记:回归模型评估指标——MAE、MSE、RMSE、MAPE、R2等

机器学习笔记:回归模型评估指标——MAE、MSE、RMSE、MAPE、R2等

时间:2023-02-06 16:12:47浏览次数:56  
标签:R2 MAPE pred RMSE MAE np true sklearn

日常比赛中,常见两种类型:分类和回归。

在回归任务中(对连续值的预测),常见的评估指标(metrics)主要包括:

  • 平均绝对误差 MAE(Mean Absolute Error)
  • 均方误差 MSE(Mean Square Error)
  • 均方根误差 RMSE(Root Mean Square Error)
  • 平均绝对百分比误差 MAPE(Mean Absolute Percentage Error)

其中,MAEMSE 使用较为广泛。

需要根据不同比赛的不同评价指标进行选择。

通常,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

四、平均绝对百分比误差 MAPE

MAPE和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 回归模型评价指标及代码示例

标签:R2,MAPE,pred,RMSE,MAE,np,true,sklearn
From: https://www.cnblogs.com/hider/p/17095700.html

相关文章

  • SqlServer2008R2 sqltext的参数化处理
    sqlserver的缓存包括Datacache和Plancache,其中Plancache包括上一篇生成的xml结构和sqltext,sqltext还可以做到参数化,也就是模板化了。1.sql参数化(1).先来做一个Person......
  • 手机直播源码,使用ViewPager2实现页面滑动切换
    手机直播源码,使用ViewPager2实现页面滑动切换1.引言在很多应用中,我们经常会看到多个页面之间滑动切换的场景,ViewPager2是ViewPager的升级版,本文将简要介绍如何使用ViewPa......
  • SqlServer2008R2锁机制
    1.性能低下的update会怎么样?(1).使用原始的person表,插入6条数据,由于是4000字节,所以两条数据就是一个数据页droptabledbo.person;createtableperson(idintidentity,nam......
  • sql server 2008 R2在查询分析器执行查询某个表时一直在运行没有返回结果的原因
    错误表象:软件的材料订单打开时一直加载中,如图:  调试程序,发现执行到AB框架ABThirdDBU单元的2010行:ifABGetDatasetSQL(aDataSet)<>EmptyStrthenaDataSet.......
  • SqlServer2012 AlwaysOn部署
    一环境准备1软件准备(1)SQLServer2012企业版(2)WindowsServer20122IP准备IP作用172.16.100.115域服务器IP172.16.100.117数据库服务器IP172.16.100.118数据库服务器IP......
  • 让Windows Server 2008r2 IIS7.5 ASP.NET 支持10万并发请求
    由于之前使用的是默认配置,服务器最多只能处理5000个同时请求,今天下午由于某种情况造成同时请求超过5000,从而出现了上面的错误。为了避免这样的错误,我们根据相关文档调整了......
  • windows server 2012 R2 内存占用过高优化
    现象:windowsserver 2012R2 使用中,任务管理器经常显示占用内存>96%,将所有进程占用内存加起来并没有占到系统内存这么多分析办法:使用RAMMap查看了机器内存使用情况,如......
  • 【论文速递】CVPR2022 - 泛化的小样本语义分割
    【论文速递】CVPR2022-泛化的小样本语义分割【论文原文】:GeneralizedFew-shotSemanticSegmentation获取地址:https://openaccess.thecvf.com/content/CVPR2022/papers/T......
  • [PR21657]和平共处
    为了方便,以下"上下左右"均基于通常的平面直角坐标系考虑未被喂食的蚂蚁,即构成最大独立集,也即可以看作:作一条从左上出发,不断向右/下的折线,最大化折线下方白点数+上方黑点......
  • 【整理】swagger2注解说明
    @Api@Api:用在请求的类上,表示对类的说明tags="说明该类的作用,可以在UI界面上看到的注解"value="该参数没什么意义,在UI界面上也看到,所以不需要配置"@Api......