Hello大家好,我是飞燕,目前还是一名在校大学生,对机器学习,深度学习,计算机视觉非常感兴趣。在基本结束了大学本科的数学课程学习之后,开始自学机器学习有关知识,选择了被广泛推荐的《机器学习》(西瓜书)作为入门书籍,在这里把自己学习过程,学习笔记,自认为较为重要的书中的知识点和自己的一些想法写成博客,与大家一起学习讨论,同时也是对自己学习历程的一个记录。这是飞燕第一次写技术性博客,有错误或者不足之处恳请各位批评指出。
线性回归想必大家都不陌生,早在高中的时候就已经有接触过相关问题。飞燕还记得高中的时候一道线性回归的题值10分,结果算错了就全错了,印象特别深刻。高中的时候老师给出的线性回归表达式有两种:
{ b ^ = ∑ i = 1 n ( x i − x ‾ ) ( y i − y ‾ ) ∑ i = 1 n ( x i − x ‾ ) 2 = ∑ i = 1 n x i y i − n x ‾ y ‾ ∑ i = 1 n x i 2 − n x ‾ 2 a ^ = y ‾ − b ^ x ‾ (1) \left\{ \begin{aligned} \hat{b} &= \frac{\sum\limits_{i = 1}^{n}(x_i-\overline{x})(y_i-\overline{y})}{\sum\limits_{i = 1}^{n}(x_i-\overline{x})^2} = \frac{\sum\limits_{i = 1}^{n}x_iy_i-n\mathop{\overline{x}}\overline{y}}{\sum\limits_{i = 1}^{n}x_i^2-n\overline{x}^2}\\\hat{a} &= \overline{y}-\hat{b}\overline{x}\tag{1} \end{aligned} \right. ⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧b^a^=i=1∑n(xi−x)2i=1∑n(xi−x)(yi−y)=i=1∑nxi2−nx2i=1∑nxiyi−nxy=y−b^x(1)
y = b ^ x + a ^ (2) y = \hat{b}x+\hat{a}\tag{2} y=b^x+a^(2)
(高中的时候纯手算这个真的是噩梦啊)
这是一维自变量的最小二乘法表示公式,若x为向量 x = ( x 1 , x 2 , . . . , x n ) \boldsymbol{x} = (x_1,x_2,...,x_n) x=(x1,x2,...,xn)
则(2)式可重写为
f ( x ) = w 1 x 1 + w 2 x 2 + . . . . . . + w n x n + b f(\boldsymbol{x}) = w_1x_1+w_2x_2+......+w_nx_n+b f(x)=w1x1+w2x2+......+wnxn+b
用向量法表示为
f ( x ) = w T x + b f(\boldsymbol{x}) = \boldsymbol{w}^T\boldsymbol{x} + b f(x)=wTx+b
这就是线性回归最终得到的拟合函数表达式。其中我参数b为误差,通常服从正态分布。将其标准化之后可得
b − μ σ ∼ N ( 0 , 1 ) \frac{b-\mu}{\sigma}\sim N(0, 1) σb−μ∼N(0,1)
运用参数估计中的极大似然估计(MLE)有
L ( w ) = ∏ i = 1 n p ( y ( i ) ∣ x ( i ) ; w ) = ∏ i = 1 n 1 2 π e − ( y ( i ) − w T x ( i ) ) 2 2 L(\boldsymbol{w}) = \prod\limits_{i = 1}^{n}p(y^{(i)}|x^{(i)};w) = \prod\limits_{i = 1}^{n} \frac{1}{\sqrt{2\pi}}e^-\frac{(y^{(i)}-\boldsymbol{w}^Tx^{(i)})}{2}^2 L(w)=i=1∏np(y(i)∣x(i);w)=i=1∏n2π1e−2(y(i)−wTx(i))2
为了计算方便,我们常常将上述等式取对计算
l ( w ) = n ln 1 2 π − 1 2 ∑ i = 1 n ( y ( i ) − w T x ( i ) ) 2 l(\boldsymbol{w}) = n\ln\frac{1}{\sqrt{2\pi}}-\frac{1}{2}\sum\limits_{i = 1}^{n}(y^{(i)}-\boldsymbol{w}^Tx^{(i)})^2 l(w)=nln2π1−21i=1∑n(y(i)−wTx(i))2
该式中减号之前的部分为常数,接下来计算中可不考虑。故当 l ( w ) l(\boldsymbol{w}) l(w) 取最大时,只需要对目标函数求最小值即可
l o s s ( y i ^ , y i ) = J ( w ) = 1 2 ∑ i = 1 n ( y ( i ) − w T x ( i ) ) 2 loss(\hat{y_i},y_i) = J(\boldsymbol{w}) = \frac{1}{2}\sum\limits_{i = 1}^{n}(y^{(i)}-\boldsymbol{w}^Tx^{(i)})^2 loss(yi^,yi)=J(w)=21i=1∑n(y(i)−wTx(i))2
这个式子其实就是今后常常会用到的模型性能度量指标之一——均方误差,通常要使其最小。也可以将上式写为矩阵式:
w ^ ∗ = a r g m i n w ^ ( y − w ^ X ) T ( y − w ^ X ) \boldsymbol{\hat{w}^*} = \mathop{argmin}\limits_{\boldsymbol{\hat{w}}}(\boldsymbol{y}-\boldsymbol{\hat{w}}\boldsymbol{X})^T(\boldsymbol{y}-\boldsymbol{\hat{w}}\boldsymbol{X}) w^∗=w^argmin(y−w^X)T(y−w^X)
通过高中知识可知,要求一个函数的最值或极值常用方法为求导,在导函数等于0处的驻点逐一判断是否为最值获极值。
那么我们可以令 f ( w ^ ) = ( y − w ^ X ) T ( y − w ^ X ) f(\boldsymbol{\hat{w}}) = (\boldsymbol{y}-\boldsymbol{\hat{w}}\boldsymbol{X})^T(\boldsymbol{y}-\boldsymbol{\hat{w}}\boldsymbol{X}) f(w^)=(y−w^X)T(y−w^X),并对 w ^ \boldsymbol{\hat{w}} w^求偏导并令其等于0
∂ f ∂ w ^ = 2 X T ( X w ^ − y ) = 0 \frac{\partial f}{\partial \boldsymbol{\hat{w}}} = 2\boldsymbol{X}^T(\boldsymbol{X}\boldsymbol{\hat{w}}-\boldsymbol{y}) = 0 ∂w^∂f=2XT(Xw^−y)=0
若矩阵 ( X X T ) (\boldsymbol{XX}^T) (XXT)满秩,则上式可解得
w ^ ∗ = ( X T X ) − 1 X T y \boldsymbol{\hat{w}}^* = (\boldsymbol{X^TX})^{-1}\boldsymbol{X}^T\boldsymbol{y} w^∗=(XTX)−1XTy
这也是最小二乘法的矩阵表达形式。
小结:
(1)线性回归的loss函数可以为均方误差,其表达式为
l o s s ( y i ^ , y i ) = J ( w ) = 1 2 ∑ i = 1 n ( y ( i ) − w T x ( i ) ) 2 loss(\hat{y_i},y_i) = J(\boldsymbol{w}) = \frac{1}{2}\sum\limits_{i = 1}^{n}(y^{(i)}-\boldsymbol{w}^Tx^{(i)})^2 loss(yi^,yi)=J(w)=21i=1∑n(y(i)−wTx(i))2
(2)将均方误差写为矩阵式并对 w ^ \boldsymbol{\hat{w}} w^求偏导等于零可以得到最小二乘法的矩阵式
w ^ ∗ = ( X T X ) − 1 X T y \boldsymbol{\hat{w}}^* = (\boldsymbol{X^TX})^{-1}\boldsymbol{X}^T\boldsymbol{y} w^∗=(XTX)−1XTy
将其带入最终的拟合函数表达式可得
f ( x ^ i ) = x ^ i ( X T X ) − 1 X T y f(\boldsymbol{\hat{x}}_i) = \boldsymbol{\hat{x}}_i(\boldsymbol{X^TX})^{-1}\boldsymbol{X}^T\boldsymbol{y} f(x^i)=x^i(XTX)−1XTy
这就是线性回归最终所学得的模型。
(3)线性回归是最简单的回归形式之一,但其有丰富的变化,并且在处理一些简单的回归问题上可以得到较好的效果。另外,线性回归也是其他很多回归的基础,比如接下来要介绍的Logistic回归。
Logistic回归是在线性回归的基础上,将线性回归所得到的结果映射到一个非线性空间当中。为了达成这个目的,我们需要引入一种类似激活函数的东西。在Logistic回归里,这个函数就是大名鼎鼎的Sigmoid函数。
Sigmoid函数表达式为
y = 1 1 + e − z y = \frac{1}{1+e^{-z}} y=1+e−z1
Sigmoid函数图像如下
在Sigmoid函数表达式中,y就是我们最后的输出结果,若y为正例的概率,则1-y则为反例概率,二者相比再取对的结果被称为“对数几率”。
ln y 1 − y \ln\frac{y}{1-y} ln1−yy
上式与线性回归的结果相结合可有
ln y 1 − y = θ T x + b \ln\frac{y}{1-y} = \boldsymbol{\theta}^T\boldsymbol{x}+b ln1−yy=θTx+b
该式输出的结果就是”对数几率”,同时也是Logistic回归的输出结果。
那么问题来了,式中参数 θ \boldsymbol{\theta} θ如何得到呢?其实我们可以照葫芦画瓢,参照线性回归的形式,使用MLE来进行参数估计。
L ( θ ) = ∏ i = 1 n p ( y = 1 ∣ x ) y ( i ) p ( y = 0 ∣ x ) ( 1 − y ( i ) ) L(\boldsymbol{\theta}) = \prod\limits_{i = 1}^{n}p(y = 1|\boldsymbol{x})^{y^{(i)}} p(y = 0|\boldsymbol{x})^{(1-y^{(i)})} L(θ)=i=1∏np(y=1∣x)y(i)p(y=0∣x)(1−y(i))
取对化简有
l ( θ ) = ∑ i = 1 n ( − y ( i ) θ T x i ^ + ln ( 1 + e θ T x i ^ ) ) l(\boldsymbol{\theta}) = \sum\limits_{i = 1}^{n}(-y^{(i)}\boldsymbol{\theta}^T\boldsymbol{\hat{x_i}}+\ln(1+e^{\boldsymbol{\theta}^T\boldsymbol{\hat{x_i}}})) l(θ)=i=1∑n(−y(i)θTxi^+ln(1+eθTxi^))
这就是Logistic回归当 y ∈ ( 0 , 1 ) y\in(0,1) y∈(0,1)时的目标函数(loss函数),同样,对其求偏导等于0后可以有最终函数的表达式。
如果y为离散型变量,即
y = { − 1 当 x i 为 反 例 1 当 x i 为 正 例 y = \left\{ \begin{aligned} -1~~~~~当x_i为反例\\1~~~~~当x_i为正例 \end{aligned} \right. y={ −1 当xi为反例1 当xi为正例
y i ^ = { p i y i = 1 − p i y i = − 1 \hat{y_i} = \left\{ \begin{aligned} p_i~~~~~y_i = 1\\ -p_i~~~~~y_i = -1 \end{aligned} \right. yi^={ pi yi=1−pi yi=−1
令 p i = 1 1 + e − θ T x i p_i = \frac{1}{1+e^{-\boldsymbol{\theta}^Tx_i}} pi=1+e−θTxi1,同样通过极大似然估计有
l o s s ( y i , y i ^ ) = ∑ i = 1 n ln ( 1 + e − y i θ T x i ) loss(y_i,\hat{y_i}) = \sum\limits_{i = 1}^{n}\ln(1+e^{-y_i\boldsymbol{\theta}^Tx_i}) loss(yi,yi^)=i=1∑nln(1+e−yiθTxi)
小结:
(1)Logistic时以线性回归为基础,将线性回归的结果通过Sigmoid函数映射到非线性空间中的方法。
(2)Logistic回归的目标函数为
l o s s ( y i , y i ^ ) = ∑ i = 1 n ( − y ( i ) θ T x i ^ + ln ( 1 + e θ T x i ^ ) loss(y_i,\hat{y_i}) = \sum\limits_{i = 1}^{n}(-y^{(i)}\boldsymbol{\theta}^T\boldsymbol{\hat{x_i}}+\ln(1+e^{\boldsymbol{\theta}^T\boldsymbol{\hat{x_i}}}) loss(yi,yi^)=i=1∑n(−y(i)θTxi^+ln(1+eθTxi^)
(3)Logistic回归常用于分类问题,可以直接对分类可能性建模,不需要实现假设数据分析。同时Logistic回归给出的结果并不是具体的“类别”,而是该样本属于该类别的近似概率。此外,Logistic回归的目标函数具有很好的数学性质,在很多优化算法都可以直接求最优解。
岭回归与LASSO回归都是再线性回归的基础上加上一个正则项,其目的是为了防止回归模型过拟合。其中LASSO回归加上的是L1正则项(L2-Normalization),岭回归加上的是L2正则项(L2-Noarmalization)。我们来看看这两个的目标函数。
岭回归:
J ( θ ) = 1 2 ∑ i = 1 n ( y ( i ) − θ T x ( i ) ) 2 + λ ∑ j = 1 n θ j 2 J(\boldsymbol{\theta}) = \frac{1}{2}\sum\limits_{i = 1}^{n}(y^{(i)}-\boldsymbol{\theta}^Tx^{(i)})^2+\lambda\sum\limits_{j=1}^{n}\boldsymbol{\theta_j}^2 J(θ)=21i=1∑n(y(i)−θTx(i))2+λj=1∑nθj2
LASSO回归:
J ( θ ) = 1 2 ∑ i = 1 n ( y ( i ) − θ T x ( i ) ) 2 + λ ∑ j = 1 n ∣ θ j ∣ J(\boldsymbol{\theta}) = \frac{1}{2}\sum\limits_{i = 1}^{n}(y^{(i)}-\boldsymbol{\theta}^Tx^{(i)})^2+\lambda\sum\limits_{j=1}^{n}|\boldsymbol{\theta_j}| J(θ)=21i=1∑n(y(i)−θTx(i))2+λj=1∑n∣θj∣
其中 λ \lambda λ表示正则项参与度,是一个超参数,需要用梯度下降等方法调参。关于梯度下降,飞燕将在之后的番外篇里详细讲一下这个东西,因为这个东西真的非常非常重要!
正则化防止过拟合的原因
这里以岭回归为例,为了描述方便,我们将岭回归的目标函数简写为
C = C 0 + λ ∑ θ 2 C = C_0 + \lambda\sum\boldsymbol{\theta}^2 C=C0+λ∑θ2
对其求偏导
∂ C ∂ θ = ∂ C 0 ∂ θ + 2 λ ∑ θ \frac{\partial C}{\partial \theta} = \frac{\partial C_0}{\partial \theta} + 2\lambda\sum\boldsymbol{\theta} ∂θ∂C=∂θ∂C0+2λ∑θ
我们在使用梯度下降(这里以SGD为例)确定超参数 λ \lambda λ的时候就有
θ i = θ i − α ∂ C 0 ∂ θ − 2 α λ θ i = ( 1 − 2 λ ) θ i − α ∂ C 0 ∂ θ \boldsymbol{\theta_i} = \boldsymbol{\theta_i}-\alpha\frac{\partial C_0}{\partial \theta}-2\alpha\lambda\boldsymbol{\theta_i} = (1-2\lambda)\boldsymbol{\theta_i}-\alpha\frac{\partial C_0}{\partial \theta} θi=θi−α∂θ∂C0−2αλθi=(1−2λ)θi−α∂θ∂C0
其中 α \alpha α为学习率。因为 λ > 0 \lambda>0 λ>0,所以称上述方法为权重衰减,可以有效减小系数。系数减小了,单个特征影响总体的因素就变小了,最后结果就基本不会出现因为一个特征改变而大幅改变的情况,因此可以有效防止过拟合。
下期预告: 决策树与随机森林
参考文献
下期预告: 决策树与随机森林
好啦以上内容就是本节的主要内容,第一次写技术博客,希望大家多多指教。我是飞燕,我们下期再见~
转载请注明出处