线性回归模型评估:R-square(确定系数)、均方根、均方差

线性回归模型评估

通过几个参数验证回归模型

  • SSE(和方差,误差平方和) :The sum of squares due to error
  • MSE(均方差,方差):Mean squared error
  • RMSE(均方根,标准差):Root mean squared error
  • R-square(确定系数):Coefficient of determination(主要用R方来做评估)
1.SSE(和方差)

该统计参数计算的是拟合数据和原始数据对应点的误差的平方和,计算公式如下:
在这里插入图片描述

SSE越接近于0,说明模型选择和拟合更好,数据预测也越成功。

2.MSE(均方差)

该统计参数是预测数据和原始数据对应点误差的平方和的均值,也就是SSE/n,和SSE没有太大的区别,计算公式如下:
在这里插入图片描述

3.RMSE(均方根)

该统计参数,也叫回归系数的拟合标准差,是MSE的平方根,计算公式如下:
在这里插入图片描述

在这之前,我们所有的误差参数都是基于预测值(y_hat)和原始值(y)之间的误差(即点对点)。从下面开始是所有的误差都是相对原始数据平均值(y_ba)而展开的(即点对全)!!!

4.R-square(确定系数)

R -square越接近1,越好,大于0.8就不错了。
在讲确定系数之前,我们需要介绍另外两个参数SSR和SST,因为确定系数就是由它们两个决定的
(1)SSR:Sum of squares of the regression,即预测数据与原始数据均值之差的平方和,公式如下:
在这里插入图片描述

(2)SST:Total sum of squares,即原始数据和均值之差的平方和,公式如下:
在这里插入图片描述
细心的读者会发现,SST=SSE+SSR,呵呵只是一个有趣的问题。而我们的“确定系数”是定义为SSR和SST的比值,故
在这里插入图片描述

其实“确定系数”是通过数据的变化来表征一个拟合的好坏。由上面的表达式可以知道“确定系数”的正常取值范围为[0 1],越接近1,表明方程的变量对y的解释能力越强,这个模型对数据拟合的也较好。

附代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn import metrics

from sklearn.linear_model import LinearRegression

#random_state=1指的是伪随机数生成器的种子
#创建数据
rng = np.random.RandomState(1)
xtrain = 10 * rng.rand(30)#生成30个数 
ytrain =  8 + 4*xtrain + rng.rand(30)*3 #生成30个数,与上面30个数不同

#创建模型,用训练集拟合模型
model = LinearRegression()
model.fit(xtrain[:,np.newaxis],ytrain)#np.newaxis插入新维度,xtrain给的是一列数据


ytest = model.predict(xtrain[:,np.newaxis]) # ytest = 根据X评估出来的y值
mse = metrics.mean_absolute_error(ytrain,ytest)#均方差
rmse = np.sqrt(mse)#均方根
print(mse)
print(rmse)


ssr = ((ytest - ytrain.mean())**2).sum()  # 预测数据和原始均值之差 的平方和
sst = ((ytrain - ytrain.mean())**2).sum()  # 原始数据 和 均值之差  的平方和
r2 = ssr/sst
print(r2)

结果:
0.7797031388892226
0.8830080061297421
0.9946452159695

第二种计算R2的方式(确定系数)

r22 = model.score(xtrain[:,np.newaxis],ytrain)
print(r22)

结果:
0.9946452159694995

你可能感兴趣的:(机器学习算法总结)