metrics误差函数(sklearn库)

回归模型性能评价指标主要有: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公式如下:

MSE=\frac{1}{n} \left ( w_{i} \sum_{i=1}^{n}(x_{i}-y_{i})^{2}\right )

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

MSE=\frac{1}{4} \left ((3-2)^{2}+(-1-0)^{2}+(2-2)^{2}+(7-8)^{2}\right )=\frac{3}{4}=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

 MSE=\frac{1}{6} \left ((0.5-0)^{2}+(1-2)^{2}+(-1+1))^{2}+(1-2)^{2}+(7-8)^{2}+(-6+5)^{2}\right )=\frac{4.25}{6}=0.708333333

 2 RMSE(均方根误差)

均方根误差是对均方误差开根号,因此RMSE代码和公式如下:

RMSE=metrics.mean_squared_error(y_true, y_pred, sample_weight=None, multioutput=’uniform_average’)**0.5

RMSE=\sqrt{MSE}=\sqrt{\frac{1}{n} \left ( w_{i} \sum_{i=1}^{n}(x_{i}-y_{i})^{2}\right )}

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公式如下:

MAE=\frac{1}{n} \left ( w_{i} \sum_{i=1}^{n}\left | (x_{i}-y_{i}) \right |\right )

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

MSE=\frac{1}{4} \left (|3-2|+|-1-0|+|2-2|+|7-8|\right )=\frac{3}{4}=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表示真实数据,用\bar{x}表示真实观测值的平均值,用y表示预测数据,则

回归平方和:(Sum of Squares for regression,SSR)即预测值与平均值的误差

SSR=\sum_{i=1}^{n}(y_{i}-\bar{x_{i}})^{2}

总平方和:(Sum of Squares for total,SST)即真实值与平均值的误差,该误差可分为两部分,一部分是用训练出的模型预测的误差SSR,另一部分是模型本身带来的误差RSS

SST=\sum_{i=1}^{n}(x_{i}-\bar{x_{i}})^{2}

决定系数:r2是回归平方和SSR与总平方和SST之比

r^{2}=\frac{SSR}{SST}=\frac{\sum_{i=1}^{n}(y_{i}-\bar{x_{i}})^{2}}{\sum_{i=1}^{n}(x_{i}-\bar{x_{i}})^{2}}

SSR是我们训练出的模型预测的所有误差;SST是不管模型数据本身的误差。因此r2是0说明训练出的模型相当于瞎猜的,如果r2是1说明模型非常好无错误,如果r2是0-1之间的数说明模型的好坏程度,如果r2是负数说明训练出的模型还不如瞎猜的。

备用公式:

RSS=\sum_{i=1}^{n}(x_{i}-y_{i})^{2}

SST=\sum_{i=1}^{n}(x_{i}-\bar{x_{i}})^{2}=\sum_{i=1}^{n}(x_{i}-y_{i})^{2}+\sum_{i=1}^{n}(y_{i}-\bar{x_{i}})^{2} 

r^{2}=\frac{\sum_{i=1}^{n}(y_{i}-\bar{x_{i}})^{2}}{\sum_{i=1}^{n}(x_{i}-y_{i})^{2}+\sum_{i=1}^{n}(y_{i}-\bar{x_{i}})^{2}}=1-\frac{\sum_{i=1}^{n}(x_{i}-y_{i})^{2}}{\sum_{i=1}^{n}(x_{i}-\bar{x_{i}})^{2}}=1-\frac{RSS}{SST}=1-\frac{\sum_{i=1}^{n}(x_{i}-y_{i})^{2}/n}{\sum_{i=1}^{n}(x_{i}-\bar{x_{i}})^{2}/n}=1-\frac{MSE}{V_{ar}}

  • 7
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值