前段时间学习了机器学习这本书,这本书把我们比较熟悉的算法的本质和公式推导都进行了阐述,当中也有一些学习曲线比较陡峭的内容,自己学习了之后也一直有总结的想法,所以趁这段时间进行一下回顾。
这个小白系列都会力求不跳步,简单易懂,对于各种数学知识点也会进行穿插。
参考来自周志华老师的机器学习西瓜书以及互联网上的各种视频、文本讲解。
讲述的脉络也是跟着该书的逻辑,提取重点,当然,公式推导部分会详细描述。
简单的线性模型:(x有d个属性,所以里面的都是x的属性)
f ( x ) = w 1 x 1 + w 2 x 2 + . . . + w d x d + b (1) f(x)=w_1x_1+w_2x_2+...+w_dx_d+b \tag{1} f(x)=w1x1+w2x2+...+wdxd+b(1)
设 w = ( w 1 ; w 2 ; . . . ; w d ) w=(w_1;w_2;...;w_d) w=(w1;w2;...;wd),而 x = ( x 1 ; x 2 ; . . . ; x d ) x = (x_1;x_2;...;x_d) x=(x1;x2;...;xd)
所以可以用向量形式写为:
f ( x ) = w T x + b (2) f(x)=w^Tx+b \tag{2} f(x)=wTx+b(2)
让我们先从最简单的情形开始
假设我们有一个数据集里面有变量X和Y:
X X X | Y Y Y |
---|---|
x 1 x_1 x1 | y 1 y_1 y1 |
x 2 x_2 x2 | y 2 y_2 y2 |
… | … |
x m x_m xm | y m y_m ym |
线性回归算法试图学得下式
f ( x i ) = w x i + b , 使 得 f ( x i ) 的 值 无 限 接 近 于 y i (3) f(x_i)=wx_i+b,使得f(x_i)的值无限接近于y_i \tag{3} f(xi)=wxi+b,使得f(xi)的值无限接近于yi(3)
所以我们需要确定上面式子中的w和b,即可学习到式(3)
因此我们一般使得均方误差最小化,即找出使 ∑ i = 1 m ( f ( x i ) − y i ) 2 ) \sum^m_{i=1}(f(x_i)-y_i)^2) ∑i=1m(f(xi)−yi)2)这个式子最小的w和b
( w ∗ , b ∗ ) = arg min ( w , b ) ∑ i = 1 m ( f ( x i ) − y i ) 2 = arg min ( w , b ) ∑ i = 1 m ( w x i + b − y i ) 2 = arg min ( w , b ) ∑ i = 1 m ( y i − w x i − b ) 2 (4) \begin{aligned} (w^*,b^*)&= \argmin_{(w,b)}\sum^m_{i=1}(f(x_i)-y_i)^2\\ &=\argmin_{(w,b)}\sum^m_{i=1}(wx_i+b-y_i)^2\\ &=\argmin_{(w,b)}\sum^m_{i=1}(y_i-wx_i-b)^2 \tag{4} \end{aligned} (w∗,b∗)=(w,b)argmini=1∑m(f(xi)−yi)2=(w,b)argmini=1∑m(wxi+b−yi)2=(w,b)argmini=1∑m(yi−wxi−b)2(4)
上面的这个过程称之为最小二乘的参数估计,为了求上面的w和b,我们需要对这个式子分别对w和b求偏导。
(可以用偏导的方法求最小值是因为式(4)无论对于w或是b而言都是二次函数,二次函数为凸函数)
记 E ( w , b ) = ∑ i = 1 m ( y i − w x i − b ) 2 E(w,b)=\sum^m_{i=1}(y_i-wx_i-b)^2 E(w,b)=∑i=1m(yi−wxi−b)2,先对b求偏导 (即把其他非b字母看作常数)
∂ E ( w , b ) ∂ b = ∂ ∑ i = 1 m ( y i − w x i − b ) 2 ∂ b = ∂ ∑ i = 1 m ( y i 2 + w 2 x i 2 + b 2 + 2 w x i b − 2 y i w x i − 2 y i b ) ∂ b = ∑ i = 1 m 2 b + 2 w x i − 2 y i = 2 m b − 2 ∑ i = 1 m ( y i − w x i ) = 2 ( m b − ∑ i = 1 m ( y i − w x i ) ) (5) \begin{aligned} \frac{\partial E(w,b)}{\partial b}&=\frac{\partial \sum^m_{i=1}(y_i-wx_i-b)^2}{\partial b} \\ &=\frac{\partial \sum^m_{i=1}(y_i^2+w^2x_i^2+b^2+2wx_ib-2y_iwx_i-2y_ib)}{\partial b}\\ &=\sum^m_{i=1} 2b+2wx_i-2y_i\\ &=2mb-2\sum^m_{i=1}(y_i-wx_i)\\ &=2(mb-\sum^m_{i=1}(y_i-wx_i)) \tag{5} \end{aligned} ∂b∂E(w,b)=∂b∂∑i=1m(yi−wxi−b)2=∂b∂∑i=1m(yi2+w2xi2+b2+2wxib−2yiwxi−2yib)=i=1∑m2b+2wxi−2yi=2mb−2i=1∑m(yi−wxi)=2(mb−i=1∑m(yi−wxi))(5)
令式(5)为0,求得b的值
2 ( m b − ∑ i = 1 m ( y i − w x i ) ) = 0 b = ∑ i = 1 m ( y i − w x i ) m (6) \begin{aligned} 2(mb-\sum^m_{i=1}(y_i-wx_i))&=0\\ b&=\frac{\sum^m_{i=1}(y_i-wx_i)}{m} \tag{6} \end{aligned} 2(mb−i=1∑m(yi−wxi))b=0=m∑i=1m(yi−wxi)(6)
接着对w求偏导 (即把其他非w字母看作常数)
∂ E ( w , b ) ∂ w = ∂ ∑ i = 1 m ( y i − w x i − b ) 2 ∂ w = ∂ ∑ i = 1 m ( y i 2 + w 2 x i 2 + b 2 + 2 w x i b − 2 y i w x i − 2 y i b ) ∂ w = ∑ i = 1 m 2 x i 2 w + 2 x i b − 2 y i x i = 2 ∑ i = 1 m ( x i 2 w + x i b − y i x i ) = 2 ( w ∑ i = 1 m x i 2 − ∑ i = 1 m ( y i − b ) x i ) (7) \begin{aligned} \frac{\partial E(w,b)}{\partial w}&=\frac{\partial \sum^m_{i=1}(y_i-wx_i-b)^2}{\partial w} \\ &=\frac{\partial \sum^m_{i=1}(y_i^2+w^2x_i^2+b^2+2wx_ib-2y_iwx_i-2y_ib)}{\partial w}\\ &=\sum^m_{i=1} 2x_i^2w+2x_ib-2y_ix_i\\ &=2\sum^m_{i=1}(x_i^2w+x_ib-y_ix_i)\\ &=2(w\sum^m_{i=1}x_i^2-\sum^m_{i=1}(y_i-b)x_i) \tag{7} \end{aligned} ∂w∂E(w,b)=∂w∂∑i=1m(yi−wxi−b)2=∂w∂∑i=1m(yi2+w2xi2+b2+2wxib−2yiwxi−2yib)=i=1∑m2xi2w+2xib−2yixi=2i=1∑m(xi2w+xib−yixi)=2(wi=1∑mxi2−i=1∑m(yi−b)xi)(7)
令式(7)为0
2 ( w ∑ i = 1 m x i 2 − ∑ i = 1 m ( y i − b ) x i ) = 0 w = ∑ i = 1 m ( y i − b ) x i ∑ i = 1 m x i 2 (8) \begin{aligned} 2(w\sum^m_{i=1}x_i^2-\sum^m_{i=1}(y_i-b)x_i)&=0\\ w&=\frac{\sum^m_{i=1}(y_i-b)x_i}{\sum^m_{i=1}x_i^2}\\ \tag{8} \end{aligned} 2(wi=1∑mxi2−i=1∑m(yi−b)xi)w=0=∑i=1mxi2∑i=1m(yi−b)xi(8)
这里我们可以将式(6)得到的 b = ∑ i = 1 m ( y i − w x i ) m b=\frac{\sum^m_{i=1}(y_i-wx_i)}{m} b=m∑i=1m(yi−wxi)代入式(8)
w = ∑ i = 1 m ( y i − ∑ i = 1 m ( y i − w x i ) m ) x i ∑ i = 1 m x i 2 w ∑ i = 1 m x i 2 = 1 m ∑ i = 1 m ( m y i − ∑ i = 1 m ( y i − w x i ) ) x i w ∑ i = 1 m x i 2 = 1 m ∑ i = 1 m ( m y i − ∑ i = 1 m y i + ∑ i = 1 m w x i ) x i w ∑ i = 1 m x i 2 = 1 m ( m ∑ i = 1 m x i y i − ∑ i = 1 m y i ∑ i = 1 m x i + w ∑ i = 1 m x i ∑ i = 1 m x i ) w ∑ i = 1 m x i 2 − w 1 m ( ∑ i = 1 m x i ) 2 = ∑ i = 1 m x i y i − 1 m ∑ i = 1 m x i ∑ i = 1 m y i 这 里 可 以 设 x ‾ = 1 m ∑ i = 1 m x i 即 x ‾ 为 均 值 ( 一 个 常 数 ) , 继 续 推 导 w ( ∑ i = 1 m x i 2 − 1 m ( ∑ i = 1 m x i ) 2 ) = ∑ i = 1 m x i y i − x ‾ ∑ i = 1 m y i w ( ∑ i = 1 m x i 2 − 1 m ( ∑ i = 1 m x i ) 2 ) = ∑ i = 1 m y i ( x i − x ‾ ) w = ∑ i = 1 m y i ( x i − x ‾ ) ∑ i = 1 m x i 2 − 1 m ( ∑ i = 1 m x i ) 2 (9) \begin{aligned} w&=\frac{\sum^m_{i=1}(y_i-\frac{\sum^m_{i=1}(y_i-wx_i)}{m})x_i}{\sum^m_{i=1}x_i^2}\\ w\sum^m_{i=1}x_i^2&=\frac{1}{m}\sum^m_{i=1}(m y_i-\sum^m_{i=1}(y_i-wx_i))x_i\\ w\sum^m_{i=1}x_i^2&=\frac{1}{m}\sum^m_{i=1}(my_i-\sum^m_{i=1}y_i+\sum^m_{i=1}wx_i)x_i\\ w\sum^m_{i=1}x_i^2&=\frac{1}{m}(m\sum^m_{i=1}x_iy_i-\sum^m_{i=1}y_i\sum^m_{i=1}x_i+w\sum^m_{i=1}x_i\sum^m_{i=1}x_i)\\ w\sum^m_{i=1}x_i^2-w\frac{1}{m}(\sum^m_{i=1}x_i)^2&=\sum^m_{i=1}x_iy_i-\frac{1}{m}\sum^m_{i=1}x_i\sum^m_{i=1}y_i\\ 这里可以设\overline{x}&=\frac{1}{m}\sum^m_{i=1}x_i即\overline{x}为均值(一个常数),继续推导\\ w(\sum^m_{i=1}x_i^2-\frac{1}{m}(\sum^m_{i=1}x_i)^2)&=\sum^m_{i=1}x_iy_i-\overline{x}\sum^m_{i=1}y_i\\ w(\sum^m_{i=1}x_i^2-\frac{1}{m}(\sum^m_{i=1}x_i)^2)&=\sum^m_{i=1}y_i(x_i-\overline{x})\\ w&=\frac{\sum^m_{i=1}y_i(x_i-\overline{x})}{\sum^m_{i=1}x_i^2-\frac{1}{m}(\sum^m_{i=1}x_i)^2} \tag{9} \end{aligned} wwi=1∑mxi2wi=1∑mxi2wi=1∑mxi2wi=1∑mxi2−wm1(i=1∑mxi)2这里可以设xw(i=1∑mxi2−m1(i=1∑mxi)2)w(i=1∑mxi2−m1(i=1∑mxi)2)w=∑i=1mxi2∑i=1m(yi−m∑i=1m(yi−wxi))xi=m1i=1∑m(myi−i=1∑m(yi−wxi))xi=m1i=1∑m(myi−i=1∑myi+i=1∑mwxi)xi=m1(mi=1∑mxiyi−i=1∑myii=1∑mxi+wi=1∑mxii=1∑mxi)=i=1∑mxiyi−m1i=1∑mxii=1∑myi=m1i=1∑mxi即x为均值(一个常数),继续推导=i=1∑mxiyi−xi=1∑myi=i=1∑myi(xi−x)=∑i=1mxi2−m1(∑i=1mxi)2∑i=1myi(xi−x)(9)
由此,我们得到了在二元线性回归中, w = ∑ i = 1 m y i ( x i − x ‾ ) ∑ i = 1 m x i 2 − 1 m ( ∑ i = 1 m x i ) 2 b = ∑ i = 1 m ( y i − w x i ) m w=\frac{\sum^m_{i=1}y_i(x_i-\overline{x})}{\sum^m_{i=1}x_i^2-\frac{1}{m}(\sum^m_{i=1}x_i)^2}\\b=\frac{\sum^m_{i=1}(y_i-wx_i)}{m} w=∑i=1mxi2−m1(∑i=1mxi)2∑i=1myi(xi−x)b=m∑i=1m(yi−wxi),由此得到了 f ( x i ) = w x i + b f(x_i)=wx_i+b f(xi)=wxi+b的函数
但毕竟我们在实践中最常见识到的都是具有多个属性的变量的数据集,而非上面只有一个X和Y的数据集
下面就是一个有m个样本以及d个属性的数据集, x i j x_{ij} xij表示第i个样本的第j个属性
X 1 X_1 X1 | X 2 X_2 X2 | … | X d X_d Xd | Y Y Y |
---|---|---|---|---|
x 11 x_{11} x11 | x 12 x_{12} x12 | … | x 1 d x_{1d} x1d | y 1 y_1 y1 |
x 21 x_{21} x21 | x 22 x_{22} x22 | … | x 2 d x_{2d} x2d | y 2 y_2 y2 |
… | … | … | … | … |
x m 1 x_{m1} xm1 | x m 2 x_{m2} xm2 | … | x m d x_{md} xmd | y m y_m ym |
同样地,我们也是需要找到下面这个函数的参数(即需要找到d个w的值和b)
设 w = ( w 1 ; w 2 ; . . . ; w d ) w=(w_1;w_2;...;w_d) w=(w1;w2;...;wd),而 x = ( x 1 ; x 2 ; . . . ; x d ) x = (x_1;x_2;...;x_d) x=(x1;x2;...;xd)
所以可以用向量形式写为:
f ( x ) = w T x + b (2) f(x)=w^Tx+b \tag{2} f(x)=wTx+b(2)
我们仍然使用最小二乘法来进行估计
为了方便讨论,我们将所有需要估计的参数都整合到一个向量中,设 w ^ = ( w ; b ) = ( w 1 ; w 2 ; . . . ; w d ; b ) \hat{w}=(w;b)=(w_1;w_2;...;w_d;b) w^=(w;b)=(w1;w2;...;wd;b), w ^ \hat{w} w^是一个d+1维的向量
由于我们将w换为了 w ^ \hat{w} w^,需要对x进行一些修改,(在原有数据集的基础上增加一列全为1)
设 X = ( x 11 x 12 . . . x 1 d 1 x 21 x 22 . . . x 2 d 1 . . . . . . . . . . . . . . . x m 1 x m 2 . . . x m d 1 ) = ( x 1 T 1 x 2 T 1 . . . . . . x m T 1 ) (10) X=\begin{pmatrix} x_{11} & x_{12} & ... & x_{1d} &1\\ x_{21} & x_{22} & ... & x_{2d} &1\\ ... & ...& ... & ... & ... \\ x_{m1} & x_{m2} & ... & x_{md}&1 \\ \end{pmatrix}=\begin{pmatrix} x_1^T &1\\ x_2^T &1\\ ... & ... \\ x_m^T &1\\ \end{pmatrix}\tag{10} X=⎝⎜⎜⎛x11x21...xm1x12x22...xm2............x1dx2d...xmd11...1⎠⎟⎟⎞=⎝⎜⎜⎛x1Tx2T...xmT11...1⎠⎟⎟⎞(10)
其中 x i x_i xi向量是一个列向量,他表示第i个样本的所有d个属性
最后把y也写成列向量的模式,即 y = ( y 1 ; y 2 ; . . . ; y m ) y=(y_1;y_2;...;y_m) y=(y1;y2;...;ym)
因此,式(2)被转换为了
f ( X ) = X w ^ (11) f(X)=X\hat{w} \tag{11} f(X)=Xw^(11)
同样的,我们想要求得 w ^ \hat{w} w^的值,从而使得均方误差最小,由于我们把他写成了向量形式,可以知道式(11)的 f ( X ) f(X) f(X)本来得到的也是一个列向量 y ^ = ( y 1 ^ ; y 2 ^ ; . . . ; y m ^ ) \hat{y}=(\hat{y_1};\hat{y_2};...;\hat{y_m}) y^=(y1^;y2^;...;ym^)
因此,均方误差可以写为式(12)右侧的内容,我们的目的仍然是找到 w ^ ∗ \hat{w}^* w^∗使得该式最小
w ^ ∗ = arg min w ^ ( y − X w ^ ) T ( y − X w ^ ) (12) \hat{w}^*=\argmin_{\hat{w}}(y-X\hat{w})^T(y-X\hat{w}) \tag{12} w^∗=w^argmin(y−Xw^)T(y−Xw^)(12)
同样是对 w ^ \hat{w} w^求偏导
设 E w ^ = ( y − X w ^ ) T ( y − X w ^ ) E_{\hat{w}}=(y-X\hat{w})^T(y-X\hat{w}) Ew^=(y−Xw^)T(y−Xw^)
∂ E w ^ ∂ w ^ = ∂ ( y − X w ^ ) T ( y − X w ^ ) ∂ w ^ = ∂ ( y T − w ^ T X T ) ( y − X w ^ ) ∂ w ^ = ∂ ( y T y − w ^ T X T y − y T X w ^ + w ^ T X T X w ^ ) ∂ w ^ (13) \begin{aligned} \frac{\partial E_{\hat{w}}}{\partial \hat{w}}&=\frac{\partial (y-X\hat{w})^T(y-X\hat{w})}{\partial \hat{w}}\\ &=\frac{\partial (y^T-\hat{w}^TX^T)(y-X\hat{w})}{\partial \hat{w}}\\ &=\frac{\partial (y^Ty-\hat{w}^TX^Ty-y^TX\hat{w}+\hat{w}^TX^TX\hat{w})}{\partial \hat{w}}\\ \tag{13} \end{aligned} ∂w^∂Ew^=∂w^∂(y−Xw^)T(y−Xw^)=∂w^∂(yT−w^TXT)(y−Xw^)=∂w^∂(yTy−w^TXTy−yTXw^+w^TXTXw^)(13)
这里需要穿插矩阵的求导公式
标量对向量求导公式,x,a均为列向量,A为矩阵
∂ x T a ∂ x = ∂ a T x ∂ x = a (14) \frac{\partial x^Ta}{\partial x}=\frac{\partial a^Tx}{\partial x}=a \tag{14} ∂x∂xTa=∂x∂aTx=a(14)∂ x T A x ∂ x = ( A + A T ) x (15) \frac{\partial x^TAx}{\partial x}=(A+A^T)x\tag{15} ∂x∂xTAx=(A+AT)x(15)
结合式(14)及(15),继续推导(13)
∂ E w ^ ∂ w ^ = ∂ ( y T y − w ^ T X T y − y T X w ^ + w ^ T X T X w ^ ) ∂ w ^ = − X T y − X T y + ( X T X + X T X ) w ^ = − 2 X T y − 2 X T X w ^ (16) \begin{aligned} \frac{\partial E_{\hat{w}}}{\partial \hat{w}} &=\frac{\partial (y^Ty-\hat{w}^TX^Ty-y^TX\hat{w}+\hat{w}^TX^TX\hat{w})}{\partial \hat{w}}\\ &=-X^Ty-X^Ty+(X^TX+X^TX)\hat{w}\\ &=-2X^Ty-2X^TX\hat{w}\\ \tag{16} \end{aligned} ∂w^∂Ew^=∂w^∂(yTy−w^TXTy−yTXw^+w^TXTXw^)=−XTy−XTy+(XTX+XTX)w^=−2XTy−2XTXw^(16)
令式(16)为0,
− 2 X T y − 2 X T X w ^ = 0 w ^ = ( X T X ) − 1 X T y (17) \begin{aligned} -2X^Ty-2X^TX\hat{w}&=0\\ \hat{w}&={(X^TX)}^{-1} X^Ty \tag{17} \end{aligned} −2XTy−2XTXw^w^=0=(XTX)−1XTy(17)
由此,我们得到了在多元线性回归中, w ^ = ( X T X ) − 1 X T y \hat{w}={(X^TX)}^{-1} X^Ty w^=(XTX)−1XTy,由此得到了 f ( X ) = X w ^ f(X)=X\hat{w} f(X)=Xw^的函数