回归

       最早由英国科学家弗朗西斯高尔顿提出,生物学家,他发现一个现象,虽然有一个趋势“父母高,儿女也高;父母矮,儿女也矮”,但给定父母的身高,儿女的身高却趋向于(回归于)全体人口的平均身高,换句话说就是,即使父母都异常高或者异常矮,儿女的身高也会趋近于平均身高,这就是普遍的回归规律。

一元线性回归

回归分析:用来建立方程模拟两个或者多个变量之间如何关联。

被预测的变量叫做因变量,被用来进行预测的变量叫自变量,一元线性回归包含一个自变量和一个因变量,通常就是线性关系,若包含两个以上的自变量则称为多元回归分析。

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_代价函数

求解方程系数:

有方程,有数据集,将数据集带入方程,求解得到

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_代价函数_02

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_数据集_03,知道了斜率和截距,对于一元回归来说,就相当于构建了一个关于这个数据集的模型。

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_拟合_04

代价(损失)函数(Cost Function)

运用的是最小二乘法

真实值y,预测值

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_拟合_05

,则误差平方为

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_代价函数_06

找到合适的参数,使得误差平方和:

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_数据集_07

最小

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_拟合_08

      代价函数

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_代价函数_09

等于真实值减去预测值的平方和,再除以样本个数m,这里平方的作用就是让数据为整数,那为啥不用绝对值呢?既然除以的是样本个数,为啥除以的是2呢?

      不用绝对值的原因是绝对值对于后面的运算不友好,不好运算,所以就用平方代替,而2m是因为有一个平方,求导之后会多一个2,多除以一个2就是用来和求导后的系数低消的,比较好看,至于为啥要求导,后面会说。

定义代价函数的意义就是为了让代价函数最小,说明拟合的效果越好,

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_代价函数_10

例子:

现在线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_数据集_11为0,必经过原点,我们只调整线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_代价函数_12使得代价函数最小,左边是有3个样本点,右边横轴为斜率线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_代价函数_13,纵轴为代价函数值,

此时令线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_代价函数_14=1,则曲线为左图,求解代价函数值=((1-1)^2+(2-2)^+(3-3)^2)/2*3=0,如下图(右):

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_代价函数_15

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_代价函数_14=0.5,计算代价函数值=((1-0.5)^2+(2-1)^2+(3-1.5)^2)/2*3=0.6,如下图:

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_拟合_17

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_代价函数_14=0,计算代价函数值=((1-0)^2+(2-0)^2+(3-0)^2)/2*3=2.33,如下图:

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_数据集_19

取很多线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_代价函数_14的值后会变成:

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_拟合_21

可以看出当线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_代价函数_14为1的时候代价函数的值最小,返回去看当线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_代价函数_14=1时的曲线,可以发现确实与数据点拟合的最好的。

相关系数

用相关系数去衡量线性相关性的强弱:

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_数据集_24

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_数据集_25

计算后,左图相关系数为0.993,右边的图相关系数为0.957,相关系数越接近1,就代表越接近一个线性的关系,越接近于-1就代表越接近于负相关,越接近于零,就代表越不接近一个线性的关系。

决定系数

相关系数R用来描述两个变量之间的线性关系,但是决定系数R^2适用范围更广,可用于描述非线性或者有两个以上自变量的相关关系。用它可以评价模型的效果。

总平方和(SST):

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_数据集_26

回归平方和(SSR):

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_拟合_27

残差平方和(SSE):

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_代价函数_28

三者关系:SST=SSR+SSE

决定系数:

线性回归分析python代码决定系数和均方根误差 线性回归方程决定系数_数据集_29