使用微积分和线性代数的基础知识来推导线性回归

为君一笑 提交于 2019-11-26 13:58:38

这里参考吴恩达的机器学习的1-5章,主要讲线性回归的应用。

1. 通过微分方法推导线性回归

这里主要讲解一个特征变量下的线性回归方法的使用:
假设函数(Hypothesis Function) : hθ(x)=θ0+θ1xh_{\theta}(x) = \theta_0 + \theta_1x,很显然它是一个线性函数。

其中 x 就是训练样本中的特征变量, y 就是对应于特征变量x的样本实际值,所以 (x(i),y(i))(x^{(i)}, y^{(i)})就表示样本集中的每一个样本点。
θ0,θ1\theta_0, \theta_1是两个参数, 接下来我们就会通过训练样本数据来计算出它们的具体值是多少。

我们知道 实际样本值yhθ(x)y和 h_\theta(x)的值是有偏差的, 那么我们的代价函数(Cost Function)如下:
J(θ0,θ1)=1/2mi=1m(hθ(x(i))y(i))2J(\theta_0,\theta_1) = 1/2m* \sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2

上面这个代价函数就是计算整个训练样本集中的预测值与实际值的方差.
这里的m表示样本集的总数量.

下一步我们的目标就是找到这个代价函数的最小值 Minimizeθ0,θ1J(θ0,θ1)_{\theta_0,\theta_1} J(\theta_0,\theta_1), 也就是找到一个误差最小,最接近于真实样本的情况。
目前这个代价函数有两个变量, θ0,θ1\theta_0,\theta_1。如何找到这个凸函数的最小值呢?首先我们复习一下微分(导数)的原理, 根据费马引理和函数的极值定理1可知:

函数f(x)f(x)f(x0)=0f'(x_0)=0处,存在极值(极大值或极小值)。
f(x)f'(x) 在靠近x0x_0点时, “左负右正”( 即x<x0x<x_0时, f(x)<0,x>x0f'(x)<0, x>x_0时, f(x)>0f'(x)>0), 那么在x0x_0处, f(x)存在极小值。

在这里插入图片描述 在这里插入图片描述

所以这里求出J(θ0,θ1)J(\theta_0,\theta_1) 分别对θ0,θ1\theta_0,\theta_1的偏导数, 得到偏导数接近于0时的 θ0,θ1\theta_0,\theta_1, 那么它们就是我们要找的最好的假设函数的参数了。

根据复合函数的求导法则:

dydx=dydududx\frac{dy}{dx}=\frac{dy}{du}*\frac{du}{dx}
θ0\theta_0求偏导数的结果为:θ0J(θ0,θ1)=1/mi=1m(hθ(x(i))y(i))\frac{\partial}{\partial \theta_0}J(\theta_0,\theta_1)=1/m*\sum_{i=1}^m (h_{\theta}(x^{(i)})-y^{(i)})
θ1\theta_1求偏导数的结果为:θ1J(θ0,θ1)=1/mi=1m(hθ(x(i))y(i))x(i)\frac{\partial}{\partial \theta_1}J(\theta_0,\theta_1)=1/m*\sum_{i=1}^m (h_{\theta}(x^{(i)})-y^{(i)})x^{(i)}

梯度下降法(Gradient descent)

通过求代价函数的导数(偏导数), 逐步逼近(局部)最小值。
repeat until convergence {

同步更新θ\theta值,直到θ0,θ1\theta_0,\theta_1不再变化,也就说明它的偏导数接近于0了,所以这个式子减去偏导数的值不再变了。

θ0:=θ0α1mi=1m(hθ(x(i))y(i))\theta_0:=\theta_0-\alpha \frac{1}{m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})
θ1:=θ1α1mi=1m(hθ(x(i))y(i))x(i)\theta_1:=\theta_1-\alpha \frac{1}{m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})x^{(i)}
}

多个特征变量的情况

上面我们讨论的时一个特征变量的情况, 我们也可以推导出有n个特征变量时的θ0,θ1,θ2,...θn\theta_0, \theta_1, \theta_2, ... \theta_n 的值。
上面的假设函数改成如下:
hθ(x0,x1,...,xn)=θ0x0+θ1x1+...+θnxnh_{\theta}(x_0,x_1,...,x_n) = \theta_0x_0 + \theta_1x_1+...+\theta_nx_n
上面的梯度下降法同步更新也改成如下:
θj:=θjα1mi=1m(hθ(x(i))y(i))xj(i)\theta_j:=\theta_j-\alpha \frac{1}{m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})x_j^{(i)}

其中j=0,1,...,nj=0, 1, ..., n
θ0:=θ0α1mi=1m(hθ(x(i))y(i))x0(i)\theta_0:=\theta_0-\alpha \frac{1}{m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})x_0^{(i)}
θ1:=θ1α1mi=1m(hθ(x(i))y(i))x1(i)\theta_1:=\theta_1-\alpha \frac{1}{m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})x_1^{(i)}

θn:=θnα1mi=1m(hθ(x(i))y(i))xn(i)\theta_n:=\theta_n-\alpha \frac{1}{m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})x_n^{(i)}

2. 使用正规方程来推导线性回归

其实在线性代数中,正规方程是由正交投影(Orthogonal Projection)推导出来的,下面我们阐述一下这一过程。

正交补集(Orthogonal complement)

对于向量集合S,SS,S^{\perp},如果满足:
S={v:vu=0,uS}S^{\perp}=\{v:v\cdot u=0,\forall u\in S\}

其中vvSS^{\perp}中的任意向量,uuSS中的任意向量
vu=vTuv\cdot u=v^T*u,即两个向量做Dot-Product

那么我们就说, 集合SS^{\perp}是集合SS的正交补集。

正交投影(Orthogonal Projection)

我们知道对于任意向量uu都可以分解成任意两个向量相加,而正交投影是其中的一种分解方式,其定义如下:
对于任何一个向量uu, 都可以分解成两个向量w,zw, z ,使得 u=w+z,wW,zWu = w + z, w \in W, z\in W^{\perp},并且wz=0w\cdot z = 0,而且这种分解还是唯一的.,这一过程可以叫做正交投影。分解之后的这两个向量w,zw,z在坐标系上看是互相垂直的。

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述
正交投影过程 正交投影是所有分解中最近的 图4:证明过程(为什么最近)

图4就是证明为什么向量ww是距离uu最近的,也就是uwu-w的值最小。
向量ww就是向量uu在集合WW中的投影,记作w=UW(u)w=U_W(u),和其它的投影比较起来它是唯一正交的。
已知正交分解z=uwz=u-w,任取一个向量wWw'\in W,只要证明z<uwz<|u-w'|成立,那么就说明zz是最小的,其实从图中显而易见, 唯有zz是垂直于WW的,垂直的距离最短嘛。
根据zWz\in W^{\perp},所以zzWW中的任意向量做Dot-Product都是0,所以存在(ww)W,(uw)(ww)=0(w-w')\in W ,(u-w)\cdot (w-w')=0
根据Pythagorean Theorem(毕氏定理) u+v2=u2+2uv+v2||u+v||^2=||u||^2+2u\cdot v +||v||^2,构造并证明出:uw2>uw2||u-w'||^2>||u-w||^2,所以zz是最小的。

正规方程的推导过程

根据上面的知识点,下面我们来推导正规方程。
已知CC是一个nkn*k的矩阵,且它的列向量构成的集合是集合WW的一个basis,也就是说它的列向量都是线性无关(linear independent)的;
对于任意一个向量u,w=UW(u)u, w= U_W(u), ww是向量uu在集合WW中的正交投影,wWw\in W;
证明推导过程:
w=Cb,bw = C*b , b是任意一个向量,bRkb\in R^k, 其实就是线性组合(linear combination)的过程, 集合WW内的一个向量ww 一定可以用WW的basis做线性组合得到.
z=uwz = u-w,zWz\in W^{\perp}
那么: wz=0w\cdot z = 0, 推出 C(uw)=0C\cdot (u-w) = 0, 因为 CC中的列向量属于集合WW, 而uwu-w 属于集合WW^{\perp}, 所以它们进行正交化操作一定是0,注意这里的0指的是0向量。
所以: CT(uw)=0C^T * (u-w) = 0, 它俩相乘等于0向量;
推出: CTuCTw=0C^T * u - C^T * w = 0;
推出: CTuCT(Cb)=0C^T * u - C^T *(C*b) = 0;
推出: CTu=CTCbC^T * u = C^T *C*b,然后 两边同时乘以 (CTC)1(C^T*C)^{-1} 得到:
b=(CTC)1CTub = (C^T *C)^{-1} * C^T * u
w=C(CTC)1CTuw = C * (C^T *C)^{-1} * C^T * u

其中(CTC)1(C^T *C)^{-1}(CTC)(C^T *C)的逆矩阵.

正规方程在线性回归中的应用

返回到上面的假设函数hθ(x0,x1,x3,x4)=θ0x0+θ1x1+θ2x2+θ3x3+θ4x4h_{\theta}(x_0,x_1,x_3,x_4) = \theta_0x_0 + \theta_1x_1+\theta_2x_2+\theta_3x_3+\theta_4x_4,我们的训练样本集中有多个特征变量x0,x1,...,xnx_0,x_1,...,x_n以及实际值yy,样本集如下表格描述:

x0x_0 房屋尺寸(feet2^2)
x1x_1
卧室数量
x2x_2
楼层数
x3x_3
房龄
x4x_4
价格($1000)
yy
1 2104 5 1 45 460
1 1416 3 2 40 232
1 1534 3 2 30 315
1 852 2 1 36 178
1 566 1 10 25 166
1 3534 7 7 30 609
1 1044 4 3 19 299

根据输入的特征参数值来预测房屋价格

根据上面的表格,我们可以构造出一个包含所有特征参数的矩阵:
X=[12104514511416324011534323018522136156611025135347730135347730]X=\begin{bmatrix} 1 & 2104 & 5 & 1 & 45 \\ 1 & 1416 & 3 & 2 & 40 \\ 1 & 1534 & 3 & 2 & 30 \\ 1 & 852 & 2 & 1 & 36 \\ 1 & 566 & 1 & 10 & 25 \\ 1 & 3534 & 7 & 7 & 30 \\ 1 & 3534 & 7& 7 & 30 \end{bmatrix}

房屋实际价格向量:
y=[460232315178166609299]y=\begin{bmatrix} 460 \\ 232 \\ 315 \\ 178 \\ 166 \\ 609 \\ 299 \end{bmatrix}

特征值参数:
θ=[θ0θ1θ2θ3θ4]\theta = \begin{bmatrix} \theta_0 \\ \theta_1 \\ \theta_2 \\ \theta_3 \\ \theta_4 \\ \end{bmatrix}

那么我们上面的假设函数可以改成如下:
hθ(x0,x1,x3,x4)=Xθh_{\theta}(x_0,x_1,x_3,x_4)=X*\theta
所以这里的XX就相当于正规方程中的CCθ\theta相当于向量bbyy相当于向量uu
θ=(XTX)1XTy\theta = (X^T X)^{-1} X^T y
hθ(x0,x1,x3,x4)=X(XTX)1XTyh_{\theta}(x_0,x_1,x_3,x_4)=X (X^T X)^{-1} X^T y,就是房屋实际价格yyXX上的正交投影,它和房屋实际价格yy之间的差是最小的,所以也是最接近于yy的值了。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!