线性回归评估的指标_线性回归算法的评估指标

38d1d6216fc502b4dcb7364374a5adda.png

评价线性回归的指标有四种,均方误差(Mean Squared Error)、均方根误差(Root Mean Squared Error)、平均绝对值误差(Mean Absolute Error)以及R Squared方法。 sklearn中使用的,也是大家推荐的方法是R Squared方法。

equation?tex=y_i表示真实的观测值,用
equation?tex=%5Cbar%7By%7D表示真实观测值的平均值,用
equation?tex=%5Chat+y_i表示预测值,则:

1、均方误差 MSE

equation?tex=%5Ctext%7BMSE%7D%28y%2C+%5Chat%7By%7D%29+%3D+%5Cfrac%7B1%7D%7Bn%7D+%5Csum_%7Bi%3D1%7D%5En+%5C%7C+y_i+-+%5Chat%7By%7D_i+%5C%7C_2%5E2

MSE的值越小,说明预测模型描述实验数据具有更好的精确度

2、均方根误差 RMSE

equation?tex=%5Ctext%7BRMSE%7D%28y%2C+%5Chat%7By%7D%29+%3D%5Csqrt%7B+%5Cfrac%7B1%7D%7Bn%7D+%5Csum_%7Bi%3D1%7D%5En+%5C%7C+y_i+-+%5Chat%7By%7D_i+%5C%7C_2%5E2+%7D

3、平均绝对值误差 MAE

equation?tex=+%5Ctext%7BMAE%7D%28y%2C+%5Chat%7By%7D%29+%3D+%5Cfrac%7B1%7D%7Bn%7D+%5Csum_%7Bi%3D1%7D%5En+%5Cleft%7C+y_i+-+%5Chat%7By%7D_i+%5Cright%7C+

这个指标是对绝对误差损失的预期值.

平均绝对百分比误差(MAPE, Mean Absolute Percentage Error)

这个指标是对相对误差损失的预期值.所谓相对误差,就是绝对误差和真值的百分比.

equation?tex=+%5Ctext%7BMAPE%7D%28y%2C+%5Chat%7By%7D%29+%3D+%5Cfrac%7B1%7D%7Bn%7D+%5Csum_%7Bi%3D1%7D%5En+%5Cfrac%7B%5C%7C+y_i+-+%5Chat%7By%7D_i+%5C%7C+%7D+%7B+%5C%7Cy_i%5C%7C%7D

4、 R方 [R Squared(r2 score)]

回归平方和:SSR(Sum of Squared Regression)

equation?tex=SSR%3D+%5Csum_%7Bi%3D0%7D%5E%7Bn%7D+%28%5Chat%7By%7D_i+-+%5Cbar%7By%7D%29%5E2

即预测值与平均值的误差,反映自变量与因变量之间的相关程度的偏差平方和,是指模型解释掉的变异.

残差平方和:SSE(Sum of Squared Error)

equation?tex=SSE+%3D+%5Csum_%7Bi%3D0%7D%5E%7Bn%7D+%28y_i+-+%5Chat%7By%7D_i%29%5E2

即预测值与真实值的误差,反映模型拟合程度

总离差平方和:SST(Sum of Squared Total)

equation?tex=SST%3D+%5Csum_%7Bi%3D0%7D%5En+%28y_i+-+%5Cbar%7By%7D%29%5E2

即平均值与真实值的误差,反映与数学期望的偏离程度

R2_score计算公式


R Squared又叫决定系数(coefficient of determination)也叫拟合优度,反映因变量的全部变异能通过回归关系被自变量解释的比例.越接近于1,说明模型拟合得越好.

equation?tex=R%5E2%28y%2C+%5Chat%7By%7D%29+%3D+1+-+%5Cfrac%7B%5Csum_%7Bi%3D0%7D%5E%7Bn%7D+%28y_i+-+%5Chat%7By%7D_i%29%5E2%7D%7B%5Csum_%7Bi%3D0%7D%5En+%28y_i+-+%5Cbar%7By%7D%29%5E2%7D+%3D%5Cfrac%7BSSR%7D%7BSST%7D+%3D+1+-+%5Cfrac%7BSSE%7D%7BSST%7D


进一步化简

equation?tex=R%5E2%28y%2C+%5Chat%7By%7D%29+%3D+1+-+%5Cfrac%7B%5Csum_%7Bi%3D0%7D%5E%7Bn%7D+%28y_i+-+%5Chat%7By%7D_i%29%5E2%2Fn%7D%7B%5Csum_%7Bi%3D0%7D%5En+%28y_i+-+%5Cbar%7By%7D%29%5E2+%2Fn+%7D+%3D1-%5Cfrac%7B%5Ctext%7BMSE%7D%7D%7B%5Ctext%7BVar%7D%7D

分子就变成了常用的评价指标均方误差MSE,分母就变成了方差。

对于 R2_score可以通俗地理解为使用均值作为误差基准,看预测误差是否大于或者小于均值基准误差。

  1. R2_score = 1,样本中预测值和真实值完全相等,没有任何误差,表示回归分析中自变量对因变量的解释越好。
  2. R2_score = 0。此时分子等于分母,样本的每项预测值都等于均值。
  3. R2_score不是r的平方,也可能为负数(分子>分母),模型等于盲猜,还不如直接计算目标变量的平均值。此时数据不存在任何线性相关关系。

四种代码实现:

def mean_squared_error(y_true, y_predict):
    """计算y_true和y_predict之间的MSE"""
    assert len(y_true) == len(y_predict), 
        "the size of y_true must be equal to the size of y_predict"
 
    return np.sum((y_true - y_predict)**2) / len(y_true)
 
 
def root_mean_squared_error(y_true, y_predict):
    """计算y_true和y_predict之间的RMSE"""
 
    return sqrt(mean_squared_error(y_true, y_predict))
 
 
def mean_absolute_error(y_true, y_predict):
    """计算y_true和y_predict之间的RMSE"""
    assert len(y_true) == len(y_predict), 
        "the size of y_true must be equal to the size of y_predict"
 
    return np.sum(np.absolute(y_true - y_predict)) / len(y_true)
 
 
def r2_score(y_true, y_predict):
    """计算y_true和y_predict之间的R Square"""
 
    return 1 - mean_squared_error(y_true, y_predict)/np.var(y_true)

sklearn库实现:

from sklearn.metrics import mean_absolute_error
mean_absolute_error(y_test, y_pred)

from sklearn.metrics import mean_squared_error
mean_squared_error(y_test, y_pred)

from sklearn.metrics import r2_score
r2_score(y_test, y_pred)

# RMSE
np.sqrt(metrics.mean_squared_error(y_true, y_pred))

5、修正决定系数(调整后R平方)

如果两个模型的样本数量和决定系数都相同,变量个数越少说明拟合效果越好。

修正决定系数相当于给变量的个数加惩罚项。考虑到SSE的自由度为n-p-1,SST的自由度为n-1,修正决定系数设置为

equation?tex=%5Cbar%7BR%5E2%7D%3D1-%5Cfrac%7BSSE%2F%28n-p-1%29%7D%7BSST%2F%28n-1%29%7D%3D1-%5Cfrac%7BSSE%7D%7BSST%7D%5Cfrac%7B%28n-1%29%7D%7B%28n-p-1%29%7D%3D1-%5Cfrac%7B%5Csum_%7Bi%3D1%7D%5En%7B%28y_i-%5Chat+y_i%29%5E2%7D%7D%7B%5Csum_%7Bi%3D1%7D%5En%7B%28y_i-+%5Cbar%7By%7D%29%5E2%7D%7D%5Cfrac%7Bn-1%7D%7Bn-P-1%7D%3D1-%281-R%5E2%29%5Cfrac%7Bn-1%7D%7Bn-P-1%7D

n是样本数量,p是变量个数

调整后R平方的作用就是判断你的模型里该不该加入你想加进来的自变量。如果调整后R平方和R方差异较大,证明你的模型里加入了很多没有用的变量。调整后R平方没有实际含义

R平方表示模型的解释程度,核心还是因为SSR代表着回归模型的解释变异程度,之所以除以SST只是为了进行标准化,使得R平方有一个固定的值域,便于比较。

5370e3ec236f436a64734ca965a49bbd.png

版权声明:本文为weixin_29967003原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。