第六章 平均绝对误差(MAE)与均方根误差(RMSE)

目录

6.1 平均绝对误差

6.1.1 平均绝对误差概念

6.1.2 Python代码实现平均绝对误差

6.2 均方根误差

6.2.1 均方根误差的概念

6.2.2 Python代码实现均方根误差


6.1 平均绝对误差

        有关介绍的网站:https://en.wikipedia.org/wiki/Mean_absolute_error(注:下面的一些图片转载自该网站,并非原创)。

6.1.1 平均绝对误差概念

        在统计学中,平均绝对误差( Mean Absolute Error,MAE ) 是对表达相同现象的成对观察之间的误差的度量。MAE 与均方根误差(RMSE) 不同,MAE 在概念上比 RMSE 更简单,也更容易解释:它只是散点图中每个点与 Y=X 线之间的平均绝对垂直或水平距离。换言之,MAE 是 X 和 Y 之间的平均绝对差值。此外,每个误差对 MAE 的贡献与误差的绝对值成正比。这与涉及对误差进行平方的 RMSE 形成对比,因此一些较大的误差将使 RMSE 比 MAE 增加的程度更大。

MAE = \frac{\sum \limits_{i=1}^n \left | predicted_i-actual_i \right |}{n}

图1 平均绝对误差公式

图2 MAE和RMSE的 2 个数据点,数量不一致为 0,分配不一致为 2

6.1.2 Python代码实现平均绝对误差

def calculate_the_MAE(predicted_data,actual_data):
    '''
    该函数用于计算平均绝对误差
    Parameters
    ----------
    predicted_data : 一维列表
        预测数据.
    actual_data : 一维列表
        真实数据.

    Returns
    -------
    MAE : 浮点型
        平均绝对误差.

    '''
    # 定义一个变量用于存储所有样本的绝对误差之和
    the_sum_of_error = 0
    # 开始逐渐遍历每一个样本
    for i in range(len(actual_data)):
        # 不断累加求和,计算所有样本的绝对误差之和
        the_sum_of_error += abs(predicted_data[i]-actual_data[i])
    # 计算所有样本的平均绝对误差
    MAE = the_sum_of_error/float(len(actual_data))
    return MAE

if '__main__' == __name__:
    # 定义一组真实数据
    actual_data =    [1,2,3,4,5,6,7,8,9,10]
    # 定义一组预测数据
    predicted_data = [2,4,3,5,4,6,5,7,6,8]
    # 调用calculate_the_MAE函数计算平均绝对误差
    Mean_Absolute_Error = calculate_the_MAE(predicted_data, actual_data)

6.2 均方根误差

         有关介绍的网站:https://en.wikipedia.org/wiki/Root-mean-square_deviation

6.2.1 均方根误差的概念

        MAE的方法可能会有分类讨论的情况,一般不太用,我们可以用均方根误差(Root-mean-square deviation)。均方根误差( Root,Mean Square Deviation,RMSE ) 是模型预测的值(样本或总体值)与观察值之间差异的常用度量。

RMSE = \sqrt\frac{\sum\limits_{i=1}^n(predicted_i-actual_i)^2}{n}

图3 均方根误差公式

6.2.2 Python代码实现均方根误差

# 导入包
from math import sqrt

def calculate_the_RMSE(predicted_data,actual_data):
    '''
    该函数用于计算均方根误差
    Parameters
    ----------
    predicted_data : 一维列表
        预测数据.
    actual_data : 一维列表
        真实数据.

    Returns
    -------
    RMSE : 浮点型
        均方根误差.

    '''
    # 定义一个变量用于存储所有样本的平方误差之和
    the_sum_of_error = 0
    # 开始逐渐遍历每一个样本
    for i in range(len(actual_data)):
        # 计算预测数据与真实数据的误差
        predition_error = predicted_data[i]-actual_data[i]
        # 不断累加求和,计算所有样本的平方误差之和
        the_sum_of_error += predition_error**2
    # 计算所有样本的均方根误差
    RMSE = sqrt(the_sum_of_error/float(len(actual_data)))
    return RMSE

if '__main__' == __name__:
    # 定义一组真实数据
    actual_data =    [1,2,3,4,5,6,7,8,9,10]
    # 定义一组预测数据
    predicted_data = [2,4,3,5,4,6,5,7,6,8]
    # 调用calculate_the_RMSE函数计算均方根误差
    rmse = calculate_the_RMSE(predicted_data, actual_data)

  • 10
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IntelligentRS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值