我们以下方的一个例子来讲解线性回归过程。
在该例子中,输入数据 x x x是一个二维变量, x 1 ( i ) x^{(i)}_1 x1(i)代表第 i i i个数据样本中的第一个特征值(在实际情况中我们需要自己来选择进行训练的特征数,我们会在之后讲解特征选择的方法,目前该例子中使用2个特征进行学习)。
为了进行学习,我们需要定义一个hypothesis,我们使用 x \mathbf{x} x的线性方程来近似 y y y,如下所示
y = θ 0 + θ 1 x 1 + θ 2 x 2 y = \theta_0+\theta_1 x_1+\theta_2 x_2 y=θ0+θ1x1+θ2x2
在此处 θ \theta θ是一个参数(权重)用来将输入的数据 x \mathbf{x} x映射到输出 y y y。为了方便编写,我们定义 x 0 = 1 x_0=1 x0=1,则上式可以修改为
y = ∑ i = 1 n θ i x i = θ T x y=\sum_{i=1}^n\theta_ix_i=\mathbf{\theta}^T\mathbf{x} y=i=1∑nθixi=θTx
接下来,为了学习合适的参数 θ \theta θ,我们需要定义一个损失函数来描述预测值与实际值之间的距离,定义如下
J = 1 2 ∑ i = 1 m ( h ( x i ) − y i ) 2 J=\frac{1}{2}\sum_{i=1}^m(h(x^{i})-y^{i})^2 J=21i=1∑m(h(xi)−yi)2
我们需要学习一个参数向量 θ \mathbf{\theta} θ来最小化损失函数 J ( θ ) J(\mathbf{\theta}) J(θ),我们一般使用梯度下降法来学习 θ \mathbf{\theta} θ值,该算法学习过程如下所示
θ j = θ j − α ∂ ∂ θ j J ( θ ) \theta_j = \theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\mathbf{\theta}) θj=θj−α∂θj∂J(θ)
为了方便描述,我们首先假设训练数据集中只有一个样本,则训练的梯度下降如下所示。
θ j = θ j − α ∂ ∂ θ j J ( θ ) = θ j − α ∂ ∂ θ j ( 1 2 ( h ( x ) − y ) 2 ) = θ j − α ∂ ∂ θ j ( 1 2 ( ∑ i = 1 n θ i x i − y ) 2 ) = θ j − α ( ∑ i = 1 n θ i x i − y ) 2 x j \begin{aligned} \theta_j &= \theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta) \\ &=\theta_j-\alpha\frac{\partial}{\partial\theta_j}(\frac{1}{2}(h(x)-y)^2)\\ &=\theta_j-\alpha\frac{\partial}{\partial\theta_j}(\frac{1}{2}(\sum_{i=1}^n\theta_ix_i-y)^2)\\ &=\theta_j-\alpha(\sum_{i=1}^n\theta_ix_i-y)^2x_j\\ \end{aligned} θj=θj−α∂θj∂J(θ)=θj−α∂θj∂(21(h(x)−y)2)=θj−α∂θj∂(21(i=1∑nθixi−y)2)=θj−α(i=1∑nθixi−y)2xj
这个更新规则称为LMS(最小均方误差),一般有两种方法来应用该规则。
一种是批量梯度下降,每一次更新参数值都需要应用所有的数据样本,如下所示。
梯度下降算法容易收敛到局部最优值,而在线性回归中,损失函数是凸函数,只存在一个全局最优值,因此能实现较好的收敛效果。
第二种应用LMS规则的方法是随机梯度下降,每利用一个数据样本就更新一次参数值,具体情况如下所示。
如果数据样本数量非常大,则批量梯度下降的更新速度太慢,随机梯度下降每针对一个样本就更新一次,因此能快速对参数进行更新,通常会比批量梯度下降更快收敛的“靠近”全局最优的位置,但一般不会收敛到最优值处。
接下来考虑第二种方法来最小化损失函数 J J J,这种方法是通过将损失函数对应的 θ j \theta_j θj的导数值设为0来求解 θ \theta θ,为了介绍该方法,我们需要定义一些矩阵微积分符号。
定义一个函数 f f f,该函数能将一个 m × n m\times n m×n的矩阵映射成一个实数,我们定义函数 f f f关于矩阵 A A A的微积分如下。
∇ A f ( A ) = [ ∂ f ∂ A 11 ⋯ ∂ f ∂ A 1 n ⋮ ⋱ ⋮ ∂ f ∂ A m 1 ⋯ ∂ f ∂ A m n ] \nabla_Af(A) = \begin{bmatrix} \frac{\partial f}{\partial A_{11}} & \cdots & \frac{\partial f}{\partial A_{1n}} \\ \vdots & \ddots & \vdots \\ \frac{\partial f}{\partial A_{m1}} & \cdots & \frac{\partial f}{\partial A_{mn}} \end{bmatrix} ∇Af(A)=⎣⎢⎡∂A11∂f⋮∂Am1∂f⋯⋱⋯∂A1n∂f⋮∂Amn∂f⎦⎥⎤
接下来我们定义trace计算,即
t r A = ∑ i = 1 n A i i tr A = \sum_{i=1}^n A_{ii} trA=i=1∑nAii
如果我们有矩阵 A A A和 B B B,且 A B AB AB是一个方阵,则 t r A B = t r B A tr AB = tr BA trAB=trBA
证明:令 A A A为 m × n m\times n m×n的矩阵, B B B为 n × m n\times m n×m的矩阵,则 A B AB AB为 m × m m\times m m×m的矩阵, B A BA BA为 n × n n\times n n×n的矩阵,令 A B = C AB = C AB=C, A B = D AB = D AB=D,因此
t r A B = ∑ i = 1 m C i i = ∑ i = 1 m ( ∑ j = 1 n ( A i j B j i ) ) t r B A = ∑ i = 1 n D i i = ∑ j = 1 n ( ∑ i = 1 m ( A i j B j i ) ) \begin{aligned} tr AB &= \sum_{i=1}^m C_{ii} \\ &= \sum_{i=1}^m (\sum_{j=1}^n(A_{ij}B_{ji})) \\ tr BA &= \sum_{i=1}^n D_{ii} \\ &= \sum_{j=1}^n (\sum_{i=1}^m(A_{ij}B_{ji})) \\ \end{aligned} trABtrBA=i=1∑mCii=i=1∑m(j=1∑n(AijBji))=i=1∑nDii=j=1∑n(i=1∑m(AijBji))
因此 t r A B = t r B A tr AB = tr BA trAB=trBA,证毕。
有这个推论我们可以得出
t r A B C = t r C A B = t r B C A tr ABC = tr CAB = tr BCA trABC=trCAB=trBCA
此外trace计算还有以下的性质:
t r A T = t r A t r ( A + B ) = t r A + t r B t r a A = a t r A tr A^T = tr A \\ tr (A+B) = tr A + tr B \\ tr aA =a tr A trAT=trAtr(A+B)=trA+trBtraA=atrA
矩阵微积分有着以下的性质,其中| A A A|代表 A A A的行列式
∇ A t r A B = B T ∇ A T f ( A ) = ( ∇ A f ( A ) ) T ∇ A t r A B A T C = C B A + C T A B T ∇ A ∣ A ∣ = ∣ A ∣ ( A − 1 ) T \begin{aligned} \nabla_A tr AB &= B^T \\ \nabla_{A^T} f(A) &= (\nabla_A f(A))^T \\ \nabla_A trABA^TC &= CBA + C^TAB^T \\ \nabla_A |A| &= |A|(A^{-1})^T \end{aligned} ∇AtrAB∇ATf(A)∇AtrABATC∇A∣A∣=BT=(∇Af(A))T=CBA+CTABT=∣A∣(A−1)T
利用上述提到的矩阵微积分来对最小二乘进行求解,我们首先将损失函数 J ( θ ) J(\theta) J(θ)写成矩阵-向量格式。
对于给定的数据集,我们将其定义为 m × n m\times n m×n的矩阵 X \mathbf{X} X,该矩阵为
X = [ ( x ( 1 ) ) T ( x ( 2 ) ) T ⋮ ( x ( m ) ) T ] \mathbf{X} = \begin{bmatrix} (x^{(1)})^T \\ (x^{(2)})^T \\ \vdots \\ (x^{(m)})^T \end{bmatrix} X=⎣⎢⎢⎢⎡(x(1))T(x(2))T⋮(x(m))T⎦⎥⎥⎥⎤
并且将标签数据定义为m维的向量 Y \mathbf{Y} Y,该向量为
Y = [ ( y ( 1 ) ) ( y ( 2 ) ) ⋮ ( y ( m ) ) ] \mathbf{Y} = \begin{bmatrix} (y^{(1)}) \\ (y^{(2)}) \\ \vdots \\ (y^{(m)}) \end{bmatrix} Y=⎣⎢⎢⎢⎡(y(1))(y(2))⋮(y(m))⎦⎥⎥⎥⎤
则
X θ − Y = [ h θ ( x ( 1 ) ) − y ( 1 ) h θ ( x ( 2 ) ) − y ( 2 ) ⋮ h θ ( x ( m ) ) − y ( m ) ] \mathbf{X}\theta-\mathbf{Y} = \begin{bmatrix} h_{\theta}(x^{(1)})-y^{(1)} \\ h_{\theta}(x^{(2)})-y^{(2)} \\ \vdots \\ h_{\theta}(x^{(m)})-y^{(m)} \end{bmatrix} Xθ−Y=⎣⎢⎢⎢⎡hθ(x(1))−y(1)hθ(x(2))−y(2)⋮hθ(x(m))−y(m)⎦⎥⎥⎥⎤
损失函数定义为
J ( θ ) = 1 2 ( X θ − Y ) T ( X θ − Y ) J(\theta) = \frac{1}{2}(\mathbf{X}\theta-\mathbf{Y})^T(\mathbf{X}\theta-\mathbf{Y}) J(θ)=21(Xθ−Y)T(Xθ−Y)
因此
∇ θ J ( θ ) = ∇ θ ( 1 2 ( X θ − Y ) T ( X θ − Y ) ) = 1 2 ∇ θ ( θ T X T X θ − θ T X T Y − Y T X θ + Y T Y ) = 1 2 ∇ θ t r ( θ T X T X θ − θ T X T Y − Y T X θ + Y T Y ) = 1 2 ( ∇ θ t r ( θ T X T X θ ) − 2 ∇ θ t r Y T X θ ) = 1 2 ( X T X θ + X T X θ − 2 X T Y ) = X T X θ − X T Y \begin{aligned} \nabla_{\theta}J(\theta) &= \nabla_{\theta}( \frac{1}{2}(\mathbf{X}\theta-\mathbf{Y})^T(\mathbf{X}\theta-\mathbf{Y})) \\ &= \frac{1}{2}\nabla_{\theta} (\theta^T\mathbf{X}^T\mathbf{X}\theta-\theta^T\mathbf{X}^T\mathbf{Y}-\mathbf{Y}^T\mathbf{X}\theta+\mathbf{Y}^T\mathbf{Y}) \\ &=\frac{1}{2}\nabla_{\theta}tr(\theta^T\mathbf{X}^T\mathbf{X}\theta-\theta^T\mathbf{X}^T\mathbf{Y}-\mathbf{Y}^T\mathbf{X}\theta+\mathbf{Y}^T\mathbf{Y}) \\ &= \frac{1}{2}(\nabla_{\theta}tr(\theta^T\mathbf{X}^T\mathbf{X}\theta)-2\nabla_{\theta}tr\mathbf{Y}^T\mathbf{X}\theta) \\ &=\frac{1}{2}(\mathbf{X}^T\mathbf{X}\theta+\mathbf{X}^T\mathbf{X}\theta-2\mathbf{X^T}\mathbf{Y}) \\ &=\mathbf{X}^T\mathbf{X}\theta - \mathbf{X^T}\mathbf{Y} \end{aligned} ∇θJ(θ)=∇θ(21(Xθ−Y)T(Xθ−Y))=21∇θ(θTXTXθ−θTXTY−YTXθ+YTY)=21∇θtr(θTXTXθ−θTXTY−YTXθ+YTY)=21(∇θtr(θTXTXθ)−2∇θtrYTXθ)=21(XTXθ+XTXθ−2XTY)=XTXθ−XTY
令该微分式为0,则 X T X θ − X T Y = 0 \mathbf{X}^T\mathbf{X}\theta - \mathbf{X^T}\mathbf{Y}=0 XTXθ−XTY=0,可以得到
θ = ( X T X ) − 1 X T Y \theta = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{Y} θ=(XTX)−1XTY
在进行线性回归训练的时候,为什么使用最小二乘作为损失函数?我们将会给出一些概率假设进行解释。
我们假设标签 y y y的值为 y ( i ) = θ T x ( i ) + ϵ y^{(i)} = \theta^Tx^{(i)}+\epsilon y(i)=θTx(i)+ϵ,其中第一项为我们的预测值,第二项为错误项(代表忽略的特征项或者随机噪声)。我们假设错误项 ϵ \epsilon ϵ的分布符合IID特点,并且符合均值为0、方差为 σ 2 \sigma^2 σ2,因此 ϵ ( i ) \epsilon^{(i)} ϵ(i)的概率密度为
p ( ϵ ( i ) ) = 1 2 π σ e x p ( − ( ϵ ( i ) ) 2 2 σ 2 ) p(\epsilon^{(i)})=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(\epsilon^{(i)})^2}{2\sigma^2}) p(ϵ(i))=2πσ1exp(−2σ2(ϵ(i))2)
给定输入数据 x ( i ) x^{(i)} x(i)和权重 θ \theta θ后,可以得到
p ( y ( i ) ∣ x ( i ) ; θ ) = 1 2 π σ e x p ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) p(y^{(i)}|x^{(i)};\theta) = \frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}) p(y(i)∣x(i);θ)=2πσ1exp(−2σ2(y(i)−θTx(i))2)
该式中 p ( y ( i ) ∣ x ( i ) ; θ ) p(y^{(i)}|x^{(i)};\theta) p(y(i)∣x(i);θ)代表给定 x ( i ) x^{(i)} x(i)并由权重 θ \theta θ参数化的分布 y ( i ) y^{(i)} y(i),我们同样可以将 y ( i ) y^{(i)} y(i)的分布写为 y ( i ) ∣ x ( i ) ; θ ∼ N ( θ T x ( i ) , σ 2 ) y^{(i)}|x^{(i)};\theta \sim \mathcal{N}(\theta^Tx^{(i)}, \sigma^2) y(i)∣x(i);θ∼N(θTx(i),σ2)。
当给定输入矩阵 X \mathbf{X} X和参数 θ \theta θ后,关于输出数据 Y \mathbf{Y} Y的概率给定为 p ( Y ∣ X ; θ ) p(\mathbf{Y}|\mathbf{X};\theta) p(Y∣X;θ),当给定参数 θ \theta θ后,将该式定义为 Y \mathbf{Y} Y的函数。当我们将其视为关于 θ \theta θ的函数时,我们将其称为似然函数,定义为
L ( θ ) = L ( θ ; X , Y ) = p ( Y ∣ X ; θ ) L(\theta)=L(\theta;\mathbf{X},\mathbf{Y})=p(\mathbf{Y}|\mathbf{X};\theta) L(θ)=L(θ;X,Y)=p(Y∣X;θ)
由于我们将错误项 ϵ ( i ) \epsilon^{(i)} ϵ(i)定义为独立分布,因此可以得到
L ( θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 m 1 2 π σ e x p ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) \begin{aligned} L(\theta) &= \prod_{i=1}^mp(y^{(i)}|x^{(i)};\theta) \\ &= \prod_{i=1}^m\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}) \end{aligned} L(θ)=i=1∏mp(y(i)∣x(i);θ)=i=1∏m2πσ1exp(−2σ2(y(i)−θTx(i))2)
在训练模型的时候,给定了输入数据 X \mathbf{X} X和标签数据 Y \mathbf{Y} Y,我们需要通过将该似然函数进行最大化,使给定的数据以最大的概率出现,从而选择合适的参数 θ \theta θ。为了使得求解方便,我们给似然函数增加一个对数操作,这样不会改变其递增性质,也方便求解,具体如下所示
l ( θ ) = l o g L ( θ ) = l o g ∏ i = 1 m 1 2 π σ e x p ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) = ∑ i = 1 m l o g 1 2 π σ e x p ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) = ∑ i = 1 m ( l o g 1 2 π σ − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) = m l o g 1 2 π σ − 1 σ 2 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 \begin{aligned} l(\theta) &= logL(\theta) \\ &= log \prod_{i=1}^m\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}) \\ &= \sum_{i=1}^m log\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}) \\ &= \sum_{i=1}^m(log\frac{1}{\sqrt{2\pi}\sigma}-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2})\\ &= mlog\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{\sigma^2}\frac{1}{2}\sum_{i=1}^m(y^{(i)}-\theta^Tx^{(i)})^2 \end{aligned} l(θ)=logL(θ)=logi=1∏m2πσ1exp(−2σ2(y(i)−θTx(i))2)=i=1∑mlog2πσ1exp(−2σ2(y(i)−θTx(i))2)=i=1∑m(log2πσ1−2σ2(y(i)−θTx(i))2)=mlog2πσ1−σ2121i=1∑m(y(i)−θTx(i))2
由于在上式中,第一项是定项,因此我们需要最小化第二项,也就是最小化 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 \frac{1}{2}\sum_{i=1}^m(y^{(i)}-\theta^Tx^{(i)})^2 21∑i=1m(y(i)−θTx(i))2,因此我们将线性回归中的损失函数定义为最小二乘。
总结:给定了上述关于数据分布的假设后,线性回归的最小二乘对应于最大似然函数,因此使用最小二乘作为线性回归的损失函数是一种自然的选择。在我们之前的讨论中,我们训练的参数 θ \theta θ并不依赖于分布的方差 σ 2 \sigma^2 σ2,即使该方差是未知的结果也不会变化。
如上图所示,不同的特征选择会导致我们训练出来的模型的性能表现不同,左侧的图属于欠拟合,右侧的图属于过拟合,在之后我们会详细介绍这些概念并且介绍自动选择特征的算法,在本节中,我们会介绍局部加权线性回归(LWR)算法,该算法假设有足够多的数据样本,那么特征的选择就不是很重要了。
在局部加权线性回归中,给定 x x x进行预测时,我们需要
其中的 w ( i ) w^{(i)} w(i)是一个非负的权重值,该值的大小决定了我们对于错误项 ( y ( i ) − θ T x ( i ) ) 2 (y^{(i)}-\theta^Tx^{(i)})^2 (y(i)−θTx(i))2的重视程度,我们一般将该值定义为
w ( i ) = e x p ( − ( x ( i ) − x ) 2 2 τ 2 ) w^{(i)}=exp(-\frac{(x^{(i)}-x)^2}{2\tau^2}) w(i)=exp(−2τ2(x(i)−x)2)
当训练的数据点与要预测的点接近时,该权重值趋近于1,否则趋近于0,因此对于接近的点的重视程度会比较高。参数 τ \tau τ用来控制训练样本随着点 x ( i ) x^{(i)} x(i)与预测点 x x x的距离下降快慢的程度,称为带宽参数。
局部加权线性回归属于非参数算法,表示在使用该算法进行预测的时候,我们需要保留整个训练集;而之前学习的线性回归属于参数化算法,因为一旦参数固定后我们不需要再使用训练数据集。