回归模型性能评价指标主要有:MSE(均方误差)、RMSE(均方根差)、MAE(平均绝对误差)、R2_score
1 MSE(均方误差)
MSE=metrics.mean_squared_error(y_true, y_pred, sample_weight=None, multioutput=’uniform_average’)
y_true:真实值;
y_pred:预测值;
sample_weight:权值默认为1;
multioutput:默认为’uniform_average’,即计算所有元素的均方误差,返回为一个标量。
均方误差是指n个预测数据y和真实数据x对应点误差的平方和的均值,因此MSE公式如下:
wi是每个数据点的权值,一般默认为1。
from sklearn.metrics import mean_squared_error
y_true = [3, -1, 2, 7]
y_pred = [2, 0.0, 2, 8]
MSE=mean_squared_error(y_true, y_pred)
print(MSE)
#Out:0.75
from sklearn.metrics import mean_squared_error
y_true = [[0.5, 1],[-1, 1],[7, -6]]
y_pred = [[0, 2],[-1, 2],[8, -5]]
MSE=mean_squared_error(y_true, y_pred)
print(MSE)
#Out:0.7083333333333334
2 RMSE(均方根误差)
均方根误差是对均方误差开根号,因此RMSE代码和公式如下:
RMSE=metrics.mean_squared_error(y_true, y_pred, sample_weight=None, multioutput=’uniform_average’)**0.5
wi是每个数据点的权值,一般默认为1。
from sklearn.metrics import mean_squared_error
y_true = [3, -1, 2, 7]
y_pred = [2, 0.0, 2, 8]
RMSE=mean_squared_error(y_true, y_pred)**0.5
print(RMSE)
#Out:0.8660254037844386
均方根误差和均方误差其实实质是一样的,但可以用于数据更好的描述。例如,做房价预测时每平方是万元,预测结果也是万元。但是差值的平方应该是千万,那模型误差的单位也是千万,为了避免这种描述,对误差开平方使误差与数据的单位是同一级别。
3 MAE(平均绝对误差)
MSE=metrics.mean_absolute_error(y_true, y_pred)
平均绝对误差是指n个预测数据y和真实数据x对应点误差的绝对值的均值,因此MAE公式如下:
wi是每个数据点的权值,一般默认为1。
from sklearn.metrics import mean_absolute_error
y_true = [3, -1, 2, 7]
y_pred = [2, 0.0, 2, 8]
MAE=mean_absolute_error(y_true, y_pred)
print(MAE)
#Out:0.75
4 r2(决定系数)
上面的几种标准会受到量纲大小的影响,比如说,A模型中量纲是1000,而B模型中量纲是1,相对于模型B,A模型中RMSE很可能会更大,但这不能说明A模型的回归能力就比B模型差。那么上面的几种标准的数据就没有什么可读性。因此用决定系数(coefficient of determination)来作为衡量拟合程度的标准。
r2_score=metrics.r2_score(y_true, y_pred) #决定系数
决定系数是指回归平方和SSR与总平方和之比,不同于之前的指标只需要n个预测数据y和真实数据x,学习决定系数需要引入三个数学概念,并用x表示真实数据,用表示真实观测值的平均值,用y表示预测数据,则
回归平方和:(Sum of Squares for regression,SSR)即预测值与平均值的误差
总平方和:(Sum of Squares for total,SST)即真实值与平均值的误差,该误差可分为两部分,一部分是用训练出的模型预测的误差SSR,另一部分是模型本身带来的误差RSS
决定系数:r2是回归平方和SSR与总平方和SST之比
SSR是我们训练出的模型预测的所有误差;SST是不管模型数据本身的误差。因此r2是0说明训练出的模型相当于瞎猜的,如果r2是1说明模型非常好无错误,如果r2是0-1之间的数说明模型的好坏程度,如果r2是负数说明训练出的模型还不如瞎猜的。
备用公式: