• 平均绝对误差 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
    

    四、平均绝对百分比误差 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越大越好。当我们预测的模型完全准确时,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 回归模型评价指标及代码示例