-
这个应该上过高中的小伙伴都听过,也都用过,那是在高中必修3中出现的知识点,考试也是会考的,可能你想不起那个公式了,但你肯定依稀的记得a^,b^这两个东西,还有这个方程 y^=b^x+a^,通过这个方程来预测y的值,a^,b^都有它们的计算方式,但是公式有点复杂,老师可能也说过一般试卷上会给,让我们在脑海来重温一下那个知识,这里先给出计算公式:
⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧b^=i=1∑n(xi−xˉ)2i=1∑n(xi−xˉ)(yi−yˉ)=i=1∑nxi2−nxˉ2i=1∑nxiyi−nxˉyˉa^=yˉ−b^xˉy^=b^x+a^
公式够复杂,但是看着公式里面需要的参数来说其实也没有什么难度,其中公式中最重要的两个参数就是xˉ,yˉ也就分别是x,和y的平均值,计算很简单.我们要学习一个东西既要知其然也要知其所以然,不妨我们从头来推导出这个公式:
-
首先我假设x,y为两个具有线性关系的变量,而且我们经有了回归方程模型 y^=b^x+a^,而且现在还有一组原始值(就是训练数据):(x1,y1),(x2,y2),⋯,⋯,(xn−1,yn−1),(xn,yn),现在我们要通过我们得到的这个模型来计算出预测值,通过想模型中填入训练数据的所有xi的值, 我们又可以得到一组预测数据:(x1,y^1),(x2,y^2),(xn−1,y^n−1),(xn,y^n),现在我们要来计算训练数据与真实数据之间的拟合度,如果我们利用下面这个公式来计算拟合度看看会发生什么:
λ=i=1∑n(yi−y^i)
很明显这样是错误的,因为我们预测值和真实值的波动是上下波动的,也就是说误差值可正可负,那么如果我们只有两组测试数据,y1与y^1 之差为 -5,y2与y^2 之差为 +5,那么通过这个公式一计算你会发现误差为0,也就是说预测值和真实值是完全拟合的,但是通过我们人去看显然波动非常大.所以我们得改进一下公式变为这样:
λ=i=1∑n(yi−y^i)2
这样一来就算是负的误差通过平方后也会变成正的,所以在叠加时也不会出现正负抵消的情况了.
再推导线性回归方程前我们先来证明一上面求b^为什么可以这样变形,也就是下面两个等式为什么成立(因为这两个等式在推导线性回归方程时会用到):
-
等式一: i=1∑n(xi−xˉ)(yi−yˉ)=i=1∑nxiyi−nxˉyˉ
证明:
将等式左边展开
=(x1−xˉ)(y1−yˉ)+(x2−xˉ)(y2−yˉ)+⋯+(xn−xˉ)(yn−yˉ)
=(x1y1−x1yˉ−xˉy1+xˉyˉ)+(x2y2−x2yˉ−xˉy2+xˉyˉ)+⋯+(xnyn−xnyˉ−xˉyn+xˉyˉ)
合并同类项:
=(x1y1+x2y2+⋯+xnyn)−(x1yˉ+x2yˉ+⋯+xnyˉ)−(xˉy1+xˉy2+⋯+xˉyn)+nxˉyˉ
=i=1∑nxiyi−nyˉ(nx1+x2+⋯+xn)−nxˉ(ny1+y2+⋯+yn)+nxˉyˉ
∵ xˉ,yˉ分别代表所有变量x和y的平均值
∴原式=i=1∑nxiyi−nxˉyˉ−nxˉyˉ+nxˉyˉ
=i=1∑nxiyi−nxˉyˉ=等式右端
证闭
-
等式二:
i=1∑n(xi−xˉ)2=i=1∑nxi2−nxˉ2
证明:
将等式左边展开
=(x1−xˉ)2+(x2−xˉ)2+⋯+(xn−xˉ)2
=(x12−2x1xˉ+xˉ2)+(x22−2x2xˉ+xˉ2)+⋯+(xn2−2xnxˉ+xˉ2)
合并同类项
=(x12+x22+⋯+xn2)−2xˉ(x1+x2+⋯+xn)+nxˉ2
=i=1∑nxi2−2nxˉ(nx1+x2+⋯+xn)+nxˉ2
=i=1∑nxi2−2nxˉ2+nxˉ2
=i=1∑nxi2−nxˉ2=等式右端
证闭
-
推导线性回归方程:
有了前面两个等式现在我们就可以来推导回归方程的来龙去脉了.
证明:
∵ λ=i=1∑n(yi−y^i)2,y^=b^x+a^
∴λ=i=1∑n(yi−b^xi−a^)2
展开得:
λ=(y1−b^x1−a^)2+(y2−b^x2−a^)2+⋯+(yn−b^xn−a^)2
=[y1−(b^x1+a^)]2+[y2−(b^x2+a^)]2+⋯+[yn−(b^xn+a^)]2
=[y12−2y1(b^x1+a^))+(b^x1+a^))2]+[y22−2y2(b^x2+a^))+(b^x2+a^))2]+⋯+[yn2−2yn(b^xn+a^))+(b^xn+a^))2]
=(y12+y22+⋯+yn2)−{[2y1(b^x1+a^)−(b^x1+a^)2]+⋯+[2yn(b^xn+a^)−(b^xn+a^)2]}
=i=1∑nyi2−{[2y1(b^x1+a^)−(b^x1+a^)2]+⋯+[2yn(b^xn+a^)−(b^xn+a^)2]}
=i=1∑nyi2−[(2b^y1x1+2a^y1−b^2x12−2a^b^x1−a^2)+⋯+(2b^ynxn+2a^yn−b^2xn2−2a^b^xn−a^2)]
整理并合并同类项:
=i=1∑nyi2−2b^i=1∑nxiyi−2a^i=1∑nyi+b^2i=1∑nxi2+2a^b^i=1∑nxi+na^2
整理得:
=i=1∑nyi2−2na^⎝⎜⎜⎜⎜⎛ni=1∑nyi−nb^i=1∑nxi⎠⎟⎟⎟⎟⎞−2b^i=1∑nxiyi+b^2i=1∑nxi2+na^2
=i=1∑nyi2−2na^(yˉ−b^xˉ)−2b^i=1∑nxiyi+b^2i=1∑nxi2+na^2
合并同类项:
=n[a^2−2a^(yˉ−b^xˉ)]+i=1∑nyi2−2b^i=1∑nxiyi+b^2i=1∑nxi2
通过完全平方公式,对方括号内的元素进行配方:
=n[a^2−2a^(yˉ−b^xˉ)+(yˉ−b^xˉ)2−(yˉ−b^xˉ)2]+i=1∑nyi2−2b^i=1∑nxiyi+b^2i=1∑nxi2
=n[a^−(yˉ−b^xˉ)]2−n(yˉ−b^xˉ)2+i=1∑nyi2−2b^i=1∑nxiyi+b^2i=1∑nxi2
展开第二项:
n[a^−(yˉ−b^xˉ)]2−nyˉ2+2nb^xˉyˉ−nb^2xˉ2+i=1∑nyi2−2b^i=1∑nxiyi+b^2i=1∑nxi2
整理一下:
=n[a^−(yˉ−b^xˉ)]2+(i=1∑nyi2−nyˉ2)−(2b^i=1∑nxiyi−2nb^xˉyˉ)+(b^2i=1∑nxi2−nb^2xˉ2)
提取公因子:
=n[a^−(yˉ−b^xˉ)]2+(i=1∑nyi2−nyˉ2)−2b^(i=1∑nxiyi−nxˉyˉ)+b^2(i=1∑nxi2−nxˉ2)
代入等式一,等式二进行代换:
=n[a^−(yˉ−b^xˉ)]2+i=1∑n(yi−yˉ)2−2b^i=1∑n(xi−xˉ)(yi−yˉ)+b^2i=1∑n(xi−xˉ)2
合并变换:
=n[a^−(yˉ−b^xˉ)]2+i=1∑n(yi−yˉ)2+i=1∑n(xi−xˉ)2⎣⎢⎢⎢⎢⎡b^2−i=1∑n(xi−xˉ)22b^i=1∑n(xi−xˉ)(yi−yˉ)⎦⎥⎥⎥⎥⎤
通过完全平方公式对最后一项配方:
=n[a^−(yˉ−b^xˉ)]2+i=1∑n(yi−yˉ)2+i=1∑n(xi−xˉ)2⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧b^2−i=1∑n(xi−xˉ)22b^i=1∑n(xi−xˉ)(yi−yˉ)+⎣⎢⎢⎢⎢⎡i=1∑n(xi−xˉ)2i=1∑n(xi−xˉ)(yi−yˉ)⎦⎥⎥⎥⎥⎤2⎭⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎫−i=1∑n(xi−xˉ)2[i=1∑n(xi−xˉ)(yi−yˉ)]2
整理得:
λ=n[a^−(yˉ−b^xˉ)]2+i=1∑n(xi−xˉ)2⎣⎢⎢⎢⎢⎡b^−i=1∑n(xi−xˉ)2i=1∑n(xi−xˉ)(yi−yˉ)⎦⎥⎥⎥⎥⎤2−i=1∑n(xi−xˉ)2[i=1∑n(xi−xˉ)(yi−yˉ)]2+i=1∑n(yi−yˉ)2
因为现在我们是要求a^,b^所以不含有a^,b^的项全部看做常数即可,那么等式可以变形为:
λ=n[a^−(yˉ−b^xˉ)]2+t1⎣⎢⎢⎢⎢⎡b^−i=1∑n(xi−xˉ)2i=1∑n(xi−xˉ)(yi−yˉ)⎦⎥⎥⎥⎥⎤2−t2+t3
因为 λ 为误差系数,那么越趋近于0表明拟合程度越好,即我们需要求:
min(λ)
然后根据方程可以知道,前两项都有平方,所以为非负数,所以前两项如果为0,那么 λ 的值就能达到最小.所以解方程即可得到:
⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧b^=i=1∑n(xi−xˉ)2i=1∑n(xi−xˉ)(yi−yˉ)=i=1∑nxi2−nxˉ2i=1∑nxiyi−nxˉyˉa^=yˉ−b^xˉ