线性回归法(二)——衡量线性回归法的指标

 

目录

 一、衡量线性回归法的指标

 二、波士顿房产数据衡量回归算法的标准


 

一、衡量线性回归法的指标

 

1、 MSE、RMSE、MAE

 

对于分类问题,我们将原始数据集划分成训练数据集和测试数据集两个部分,并且使用训练数据集训练出模型,然后使用模型来预测测试数据集,然后使用测试数据集自带的真实标签值与预测值进行对比,进而得到分类准确度,利用分类准确度我们可以判定该模型的好坏。

 

 

 但对于回归算法,如何评判该模型的好坏呢?

在上一小节我们可知,我们将原始数据集划分成训练数据集和测试数据集后,简单线性回归的目标是找到a,b,来使得以下式子的值尽可能小。

 

 

因此最后我们衡量的标准就是:

 

 

 但是该标准与m相关,即测试数据集数量,因此通过改进衡量标准来使得与m无关,即均方差MSE。

 

 

 但是均方差与量纲有关,因此进一步改进可得均方误差RMSE。

 

 

MSE和RMSE质是一样的,虽然结果不一样,区别在于结果对量纲是否有影响。此外线性回归还有另外一个评测标准,叫做平方绝对误差MAE,即真值之间的距离的平均值。

 

 

2、R Squared

 

R方用于衡量模型对数据变异性的解释程度,如下公式:

 

 

 其中,SS(residual)计算方法是将预测结果减去真值的差值平方求和,相当于使用我们自己的模型产生的错误。而SS(total)就是整个y的平均值减去每一个y的差值平方求和,相当于基本模型(Baseline Model)产生的错误,该模型产生的错误较多。因此,最后用1减去该式子就衡量了该模型没有产生错误的指标。

 

 

此外,R2肯定是<=1的,并且R2越大越好,当我们预测模型不犯任何错误时,R2得到最大值1。同时,当我们的模型基本等于基准模型时,R2=0。如果R2<0,说明我们学习的模型还不如基准模型,此时,很有可能我们的数据不存在任何线性关系。对式子进行处理,就可以得到如下式子:

 

 

 二、波士顿房产数据衡量回归算法的标准

 

1、加载数据

#导入相关包
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
#导入数据
boston = datasets.load_boston()

x = boston.data
y =  boston.target

x = x[y < 50.0]  #剔除异常值
y = y[y < 50.0]

 

2、使用简单线性回归法

#数据集切分
from sklearn.model_selection import train_test_split

X_train,X_test,y_train,y_test = train_test_split(x,y,random_state = 666)

#使用sklearn中的线性回归
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()

lin_reg.fit(X_train,y_train)
y_predict = lin_reg.predict(X_test)

 

3、评估

#MSE
mse_test = np.sum((y_predict - y_test)**2) / len(y_test)
mse_test

#RMSE
from math import sqrt
rmse_test = sqrt(mse_test)
rmse_test

#MAE
mae_test = np.sum(np.absolute(y_predict - y_test)) / len(y_test)
mae_test

#R2
r2 = 1 - mean_squared_error(y_test,y_predict) / np.var(y_test)
r2

 

4、sklearn的MSE、MAE、R2

from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import r2_score

mse_ = mean_squared_error(y_test,y_predict)
#rmse = sqrt(mse_)

mae_ = mean_absolute_error(y_test,y_predict)

r2_ = r2_score(y_test,y_predict)
#在sklearn中的score函数它也会直接返回一个R2
#r2_ = lin_reg.score(X_test,y_test)

 

5、RMSE和MAE比较

 

RMSE和MAE的量纲都是一样的,都是原始数据中y对应的量纲,但在实际中RMSE比MAE的求出结果大,那是因为RMSE是将错误值进行平方后再累加再开根。假如有两个值之间的错误值很大,那么经过平方操作后会更大,即RMSE有放大错误值的趋势。而MAE却没有,它直接反应了样本预测结果与真实结果之间的差距,没有平方操作。因此,由此原因可知,我们尽可能让RMSE的值尽可能小,其意义会更大一些,因为这背后意味着样本的最大错误值比较小。

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值