从这篇博客开始将介绍机器学习中的比较重要的内容——回归,期间会穿插着涉及到的知识点,如正则化。

什么是回归(及线性回归)

概念

说到回归,一般都是指线性回归(linear regression),但从广义上来说线性回归是回归家族中的一种,也是最简单的一种。简单来说, 假设现在有一些数据点,我们用一条直线对这些点进行拟合(该线称为最佳拟合直线),这个拟合过程就称作回归。

回归算法是一种比较常用的机器学习算法,属于有监督算法,用来建立“解释”变量(自变量X)和观测值(因变量Y)之间的关系;从机器学习的角度来讲,用于构建一个算法模型(函数)来做属性(X)与标签(Y)之间的映射关系,在算法的学习过程中,试图寻找一个函数 h : R 2 → R h:R^2 \to R h:R2R 使得参数之间的关系拟合性最好。

回归算法中算法(函数)的最终结果是一个连续的数据值,输入值(属性值)是一个d维度的属性/数值向量。

“回归”一词的来历 :
今天我们所知道的回归是由达尔文(Charles Darwin)的表兄弟Francis Galton发明的。Galton于1877年完成了第一次回归预测,目的是根据上一代豌豆种子(双亲)的尺寸来预测下一代豌豆种子(孩子)的尺寸。Galton在大量对象上应用了回归分析,甚至包括人的身高。他注意到,如果双亲的高度比平均高度高,他们的子女也倾向于比平均高度高,但尚不及双亲。孩子的高度向着平均高度回退(回归)。Galton在多项研究上都注意到这个现象,所以尽管这个英文单词跟数值预测没有任何关系,但这种研究方法仍被称作回归 。

举例

举个房价预测的例子,现在有房屋面积及其对应的租赁价格如下

房屋面积( m 2 m^2 m2)租赁价格(1000¥)
100.8
151
201.8
302
503.2
603
603.1
703.5

请问,如果现在有一个房屋面积为55平,最终的租赁价格是多少比较合适?
比如近似满足y = ax + b。求得a b,代入55,就可得到大概价格。大致的函数图像如下:
在这里插入图片描述
当不仅仅考虑面积,还要考虑房间数数量。可在三维坐标系中表示。即: h ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h(x)=\theta_0+\theta_1x_1+\theta_2x_2 h(x)=θ0+θ1x1+θ2x2

房屋面积( m 2 m^2 m2)房间数量租赁价格(1000¥)
1010.8
2011.8
3012.2
3022.5
7035.5
7025.2

在这里插入图片描述
如果考虑的因素更多,也就是有更多的维度呢?此时的表达式:
h θ ( x ) = θ 0 + θ 1 x 1 + … + θ n x n = θ 0 1 + θ 1 x 1 + … + θ n x n = θ 0 x 0 + θ 1 x 1 + … + θ n x n = ∑ i = 0 n θ i x i = θ T x \begin{aligned} h_\theta (x)&=\theta_0+\theta_1x_1+…+ \theta_nx_n \\ &=\theta_0 1+\theta_1x_1+…+ \theta_nx_n\\ &=\theta_0 x_0+\theta_1x_1+…+ \theta_nx_n\\ &= \sum_{i=0}^n \theta_i x_i\\ &=\bm{\theta}^Tx \end{aligned} hθ(x)=θ0+θ1x1++θnxn=θ01+θ1x1++θnxn=θ0x0+θ1x1++θnxn=i=0nθixi=θTx

最终要求是计算出 θ \theta θ 的值,并选择最优的 θ \theta θ值构成算法公式。其中 x 0 = 1 x_0=1 x0=1 θ 0 \theta_0 θ0为偏置项,也就是截距。
ps:(线性回归的本质)

  1. 线性:θ最高次项为一次( θ \bm{\theta} θ是我们最终要求得的值)
  2. 回归:Y(或者 h θ ( x ) h_\theta (x) hθ(x))连续

最小二乘法公式推导

误差

上面例子中找到的最终表达式就一定是正确的吗?不一定,往往存在误差,即每个样本的误差。就像上图中,那个平面是我们找到表达式,每个红点是真实的值,他们之间就可能会存在误差,记为 ε n \varepsilon_n εn

面积为10平和面积为70平之间有关系吗?没有。所以产生的误差 ε 1 \varepsilon_1 ε1 ε 2 \varepsilon_2 ε2有关系吗?没有,也就是独立的。(独立同分布) ε \varepsilon ε是在各个特征上的误差的叠加。 ε = ( ε 1 , ε 2 , … , ε n \bm{\varepsilon}=(\varepsilon_1, \varepsilon_2,…,\varepsilon_n ε=(ε1,ε2,,εn)根据中心极限定理,服从高斯正态分布,而且是均值为0。
y ( i ) = θ T x ( i ) + ε ( i ) (1) y^{(i)} =\bm{\theta}^Tx^{(i)}+\varepsilon^{(i)} \tag{1} y(i)=θTx(i)+ε(i)(1)

对于每个样本 x ( i ) x^{(i)} x(i) 代入 h(x) 得到的估计值 y ^ ( i ) \hat{y}^{(i)} y^(i) 与真实值 y ( i ) y^{(i)} y(i) 存在的差值 ε ( i ) ε^{(i)} ε(i)

总结一下,就是误差 ε ( i ) ( 1 ≤ i ≤ n ) \varepsilon^{(i)} {(1\leq i \leq n)} ε(i)(1in) 是独立同分布的,服从均值为0,方差为某定值 σ 2 \sigma ^ 2 σ2 的高斯正态分布。(原因:中心极限定理)。实际问题中,很多随机现象可以看做众多因素的独立影响的综合反应,往往服从正态分布.

观察上面的(1)式, y ( i ) y^{(i)} y(i) 就是真实值,并且 ε ( i ) ε^{(i)} ε(i) 满足均值为0的高斯正态分布,所以:
p ( ε ( i ) ) = 1 σ 2 π e − ( ε ( i ) ) 2 2 σ 2 (2) p(\varepsilon^{(i)})= \frac{1}{\sigma \sqrt{2 \pi}} e^{-\frac{\left( ε^{(i)} \right)^2}{2 \sigma^ 2 }}\tag{2} p(ε(i))=σ2π 1e2σ2(ε(i))2(2)
把(1)式代入(2)式,得:
p ( y ( i ) ∣ x ( i ) ; θ ) = 1 σ 2 π e x p ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) (3) p(y^{(i)}|x^{(i)};\bm{\theta})= \frac{1}{\sigma \sqrt{2 \pi}} exp \left({-\frac{\left(y^{(i)} -\bm{\theta}^Tx^{(i)} \right)^2}{2 \sigma^ 2 }} \right)\tag{3} p(y(i)x(i);θ)=σ2π 1exp2σ2(y(i)θTx(i))2(3)
e x e^x ex e x p ( x ) exp(x) exp(x) 是一样的。

似然函数

构建似然函数。为什么要这样构建,可以参考《【最透彻】13_最大似然估计【小元老师】考研数学,概率论与数理统计》,小元老师讲得确实很透彻。
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 ) (4) \begin{aligned} L{(\theta)}& = \prod_{i=1}^m p(y^{(i)}|x^{(i)};\bm{\theta}) \\ &= \prod_{i=1}^m \frac{1}{\sigma \sqrt{2 \pi}} exp \left({-\frac{\left(y^{(i)} -\bm{\theta}^Tx^{(i)} \right)^2}{2 \sigma^ 2 }} \right)\tag{4} \end{aligned} L(θ)=i=1mp(y(i)x(i);θ)=i=1mσ2π 1exp2σ2(y(i)θTx(i))2(4)

对数似然

初始目的是让似然函数 L ( θ ) L{(\theta)} L(θ) 最大化,但不方便计算。现在把(4)式取对数(因为取对数不改变单调性,即 L ( θ ) L{(\theta)} L(θ) l ( θ ) l{(\theta)} l(θ)单调性一致,并且能把上面的“累积”变成“累和”,从而简化运算)
l ( θ ) = log ⁡ L ( θ ) = log ⁡ ∏ i = 1 m 1 σ 2 π e x p ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) = m log ⁡ 1 σ 2 π − 1 σ 2 ∙ 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 (5) \begin{aligned} l{(\theta)}& = \log L{(\theta)}\\ &= \log \prod_{i=1}^m \frac{1}{\sigma \sqrt{2 \pi}} exp \left({-\frac{\left(y^{(i)} -\bm{\theta}^Tx^{(i)} \right)^2}{2 \sigma^ 2 }} \right)\\ &=m \log \frac{1}{\sigma \sqrt{2 \pi}} - \frac{1}{\sigma^2} \bullet \frac{1}{2} \sum_{i=1}^m \left( y^{(i)} -\bm{\theta}^Tx^{(i)} \right)^2 \tag{5} \end{aligned} l(θ)=logL(θ)=logi=1mσ2π 1exp2σ2(y(i)θTx(i))2=mlogσ2π 1σ2121i=1m(y(i)θTx(i))2(5)

目标函数

通过上面取对数,把似然函数 L ( θ ) L{(\theta)} L(θ) 最大化问题转换成 l ( θ ) l{(\theta)} l(θ)最大化问题。

因为(5)式中 m log ⁡ 1 σ 2 π m \log \frac{1}{\sigma \sqrt{2 \pi}} mlogσ2π 1 1 σ 2 \frac{1}{\sigma^2} σ21 是定值,所以 l ( θ ) l{(\theta)} l(θ)的大小取决于 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 \frac{1}{2} \sum_{i=1}^m \left( y^{(i)} -\bm{\theta}^Tx^{(i)} \right)^2 21i=1m(y(i)θTx(i))2。当 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 \frac{1}{2} \sum_{i=1}^m \left( y^{(i)} -\bm{\theta}^Tx^{(i)} \right)^2 21i=1m(y(i)θTx(i))2 最小时 l ( θ ) l{(\theta)} l(θ) 取得最大值。所以,似然函数 L ( θ ) L{(\theta)} L(θ) 最大化等价于 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 \frac{1}{2} \sum_{i=1}^m \left( y^{(i)} -\bm{\theta}^Tx^{(i)} \right)^2 21i=1m(y(i)θTx(i))2 最小化。即得到最终的目标函数:
l o s s ( y j , y ^ j ) = J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 (6) \mathit{loss}{(y_j,\hat{y}_j)} = J{(\theta)} = \frac{1}{2} \sum_{i=1}^m \left( h_\theta \left(x^{(i)} \right) -y^{(i)} \right)^2 \tag{6} loss(yj,y^j)=J(θ)=21i=1m(hθ(x(i))y(i))2(6)
我们的最终目的,就是让目标函数 J ( θ ) J{(\theta)} J(θ)最小化。(这里给出 1 2 \frac{1}{2} 21的目的就是为了方便求导时化简用)

求解 θ \theta θ

我们的基本思路就是,因为 J ( θ ) J{(\theta)} J(θ) 是凸函数,在导数为0时,取得极值,所以重点就是求导。
J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = 1 2 ( X θ − y ) T ( X θ − y ) (7) J{(\theta)} = \frac{1}{2} \sum_{i=1}^m \left( h_\theta \left(x^{(i)} \right) -y^{(i)} \right)^2 = \frac{1}{2}(X\bm{\theta} -\bm{y})^T(X\bm{\theta}-\bm{y}) \tag{7} J(θ)=21i=1m(hθ(x(i))y(i))2=21(Xθy)T(Xθy)(7)
对(7)式((7)式的详细推导在文章最后有介绍 J ( θ ) J{(\theta)} J(θ) 求导(用到了矩阵求导,详细内容文章最后有介绍):
∇ θ J ( θ ) = ∇ θ ( 1 2 ( X θ − y ) T ( X θ − y ) ) = ∇ θ ( 1 2 ( θ T X T − y T ) ( X θ − y ) ) = ∇ θ ( 1 2 ( θ T X T X θ − θ T X T y − y T X θ + y T y ) ) = 1 2 ( 2 X T X θ − X T y − X T y ) = X T X θ − X T y (8) \begin{aligned} \nabla_\theta J(\theta) &= \nabla_\theta \left( \frac{1}{2}(X\bm{\theta} -\bm{y})^T(X\bm{\theta}-\bm{y}) \right) \\ &= \nabla_\theta \left( \frac{1}{2}(\bm{\theta} ^TX^T -\bm{y}^T)(X\bm{\theta}-\bm{y}) \right) \\ &= \nabla_\theta \left( \frac{1}{2}(\bm{\theta} ^T X^T X \bm{\theta} - \bm{\theta}^T X^T \bm{y}- \bm{y}^T X \bm{\theta} + \bm{y}^T \bm{y}) \right) \\ &= \frac{1}{2} \left( 2X^T X \bm{\theta} -X^T \bm{y} - X^T \bm{y} \right) \\ &= X^T X \bm{\theta} - X^T \bm{y} \tag{8} \end{aligned} θJ(θ)=θ(21(Xθy)T(Xθy))=θ(21(θTXTyT)(Xθy))=θ(21(θTXTXθθTXTyyTXθ+yTy))=21(2XTXθXTyXTy)=XTXθXTy(8)
导求为0,即 X T X θ − X T y = 0 X^T X \bm{\theta} -X^T \bm{y} = 0 XTXθXTy=0,求得最优解
X T X θ − X T y = 0 ⇓ X T X θ = X T y ⇓ ( X T X ) − 1 X T X θ = ( X T X ) − 1 X T y ⇓ θ = ( X T X ) − 1 X T y X^T X\bm{\theta} -X^T \bm{y} = 0 \\ \Downarrow \\ X^T X\bm{\theta} = X^T \bm{y} \\ \Downarrow \\ \left( X^T X \right)^{-1} X^T X \bm{\theta} = \left( X^T X \right)^{-1} X^T \bm{y} \\ \Downarrow \\ \bm{\theta} = \left( X^T X \right)^{-1} X^T \bm{y} XTXθXTy=0XTXθ=XTy(XTX)1XTXθ=(XTX)1XTyθ=(XTX)1XTy
所以,最小二乘法(最小二乘法的定义文章最后有介绍)的参数最优解为:
min ⁡ θ J ( θ ) = ( X T X ) − 1 X T y (9) \min\limits_{\bm{\theta}} J(\theta) = \left( X^T X \right)^{-1} X^T \bm{y} \tag{9} θminJ(θ)=(XTX)1XTy(9)

参数解析式优化

最小二乘法的使用要求矩阵 X T X X^T X XTX 是可逆的;为了防止不可逆或者过拟合的问题存在,可以增加额外数据影响,使得最终的矩阵是可逆的:
θ = ( X T X + λ I ) − 1 X T y (10) \bm{\theta} = \left( X^T X + \lambda I \right)^{-1} X^T \bm{y} \tag{10} θ=(XTX+λI)1XTy(10)
(10)式(文章最后有推导,来帮助理解)其实是引入L2正则化的岭回归(后续博客会有专门介绍)的解。
由于矩阵的逆的求解是一个难处,尤其对数据量特别大的时候。所以实际中很少用最小二乘法。

总结

上面讲的线性回归,直观来讲就是找出自变量X和因变量Y的线性关系,也就我们要训练出来的就是这样一个模型:
h θ ( x ) = θ 0 + θ 1 x 1 + … + θ n x n h_\theta (x)=\theta_0+\theta_1x_1+…+ \theta_nx_n hθ(x)=θ0+θ1x1++θnxn
实际上就是训练出 θ \bm{\theta} θ 值。通过模型,就能得到预测值,我们最终要做的就是预测值和真实值之间的差最小,可通过误差来反映,得到一个损失函数:
J ( θ ) = 1 m ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) J(\theta) = \frac{1}{m} \sum_{i=1}^m \left( y^{(i)} - \hat{y}^{(i)} \right) J(θ)=m1i=1m(y(i)y^(i))
上文中是通过最大似然估计得到的目标函数:
J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J{(\theta)} = \frac{1}{2} \sum_{i=1}^m \left( h_\theta \left(x^{(i)} \right) -y^{(i)} \right)^2 J(θ)=21i=1m(hθ(x(i))y(i))2
效果是一样的,这也是最小二乘法
由于目标函数是一个凸函数的形式,那么在极值处取得最小值,也就是导数为0的时候。最终得到:
min ⁡ θ J ( θ ) = ( X T X ) − 1 X T y \min\limits_{\bm{\theta}} J(\theta) = \left( X^T X \right)^{-1} X^T \bm{y} θminJ(θ)=(XTX)1XTy
但有个要求,就是 X T X X^T X XTX 必须可逆,此时保证不了,但正定矩阵一定可逆。而 X T X X^T X XTX 是一个半正定矩阵,可以给他的对角线加一个偏移量,得到一个正定矩阵,即:
θ = ( X T X + λ I ) − 1 X T y \bm{\theta} = \left( X^T X + \lambda I \right)^{-1} X^T \bm{y} θ=(XTX+λI)1XTy
这个式子,也是加上L2正则,即岭回归求解得到的式子,因此这个式子也能解决过拟合的问题。



补充

式子(7)的推导

对于列向量 α = ( a 1 , a 2 , a 3 , … , a m ) T \bm{\alpha} = (a_1 , a_2 , a_3 , …, a_m)^T α=(a1,a2,a3,,am)T :
α T α = α ∙ α = a 1 2 + a 2 2 + a 3 2 + … + a m 2 = ∑ i = 1 m a i 2 \begin{aligned} \bm{\alpha} ^T \bm{\alpha} = \bm{\alpha} \bullet \bm{\alpha} = a_1^2 + a_2^2 + a_3^2 + …+ a_m^2 = \sum_{i=1}^m a_i^2 \end{aligned} αTα=αα=a12+a22+a32++am2=i=1mai2
α ∙ α \bm{\alpha} \bullet \bm{\alpha} αα为向量点乘,也称为数量积或内积。

注意,我们在机器学习公式推导中用到的数据表示:

x ( i ) x^{(i)} x(i):表示第 i 个样本;
x i x_{i} xix 向量的第 i 维度的值。

对于真实的值构成的列向量 y = ( y ( 1 ) , y ( 2 ) , y ( 3 ) , … , y ( m ) ) T \bm{y} = (y^{(1)} , y^{(2)} , y^{(3)} , …, y^{(m)})^T y=(y(1),y(2),y(3),,y(m))T
以及对应的预测值构成的列向量 y ^ = ( y ^ ( 1 ) , y ^ ( 2 ) , 3 ^ ( 1 ) , … , y ^ ( m ) ) T \bm{\hat{y}} = (\hat{y}^{(1)} , \hat{y}^{(2)} , \hat{3}^{(1)} , …, \hat{y}^{(m)})^T y^=(y^(1),y^(2),3^(1),,y^(m))T
求得的参数解列向量 θ = ( θ 0 , θ 1 , θ 2 , … , θ n ) T \bm{\theta} = (\theta_0, \theta _1, \theta_2,…,\theta_n)^T θ=(θ0,θ1,θ2,,θn)T
而样本X(m条样本,样本的维度为n)为:
X = ( x 0 1 x 1 1 x 2 1 ⋯ x n 1 x 0 2 x 1 2 x 2 2 ⋯ x n 2 ⋮ ⋮ ⋮ ⋱ ⋮ x 0 m x 1 m x 2 m ⋯ x n m ) X=\begin{pmatrix} x_0^1 & x_1^1 & x_2^1 & \cdots & x_n^1 \\ x_0^2 & x_1^2 & x_2^2 & \cdots & x_n^2 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ x_0^m & x_1^m & x_2^m & \cdots & x_n^m \\ \end{pmatrix} X=x01x02x0mx11x12x1mx21x22x2mxn1xn2xnm
其中 θ \theta θ是未知数,可以写出关于 θ \theta θ的方程组:
{ x 0 ( 1 ) θ 0 + x 1 ( 1 ) θ 1 + x 2 ( 1 ) θ 2 + ⋯ + x n ( 1 ) θ n = y ^ ( 1 ) x 0 ( 2 ) θ 0 + x 1 ( 2 ) θ 1 + x 2 ( 2 ) θ 2 + ⋯ + x n ( 2 ) θ n = y ^ ( 2 ) ⋯ x 0 ( m ) θ 0 + x 1 ( m ) θ 1 + x 2 ( m ) θ 2 + ⋯ + x n ( m ) θ n = y ^ ( m ) \begin{cases} x_0^{(1)} \theta_0 +x_1^{(1)} \theta_1 + x_2^{(1)} \theta_2 + & \cdots &+ x_n^{(1)} \theta_n=\hat{y}^{(1)} \\ x_0^{(2)} \theta_0 +x_1^{(2)} \theta_1 + x_2^{(2)} \theta_2 + & \cdots &+ x_n^{(2)} \theta_n=\hat{y}^{(2)} \\ & \cdots \\ x_0^{(m)} \theta_0 +x_1^{(m)} \theta_1 + x_2^{(m)} \theta_2 + & \cdots &+ x_n^{(m)} \theta_n=\hat{y}^{(m)} \\ \end{cases} x0(1)θ0+x1(1)θ1+x2(1)θ2+x0(2)θ0+x1(2)θ1+x2(2)θ2+x0(m)θ0+x1(m)θ1+x2(m)θ2++xn(1)θn=y^(1)+xn(2)θn=y^(2)+xn(m)θn=y^(m)
也就是: X θ = y ^ X \bm{\theta} =\bm{\hat{y}} Xθ=y^
并且:
h θ ( x ( i ) ) = x 0 ( i ) θ 0 + x 1 ( i ) θ 1 + x 2 ( i ) θ 2 + ⋯ + x n ( i ) θ n = x ( i ) θ = y ^ ( i ) h_\theta \left( x^{(i)}\right) = x_0^{(i)} \theta_0 +x_1^{(i)} \theta_1 + x_2^{(i)} \theta_2 + \cdots + x_n^{(i)} \theta_n = x^{(i)} \theta = \hat{y}^{(i)} hθ(x(i))=x0(i)θ0+x1(i)θ1+x2(i)θ2++xn(i)θn=x(i)θ=y^(i)
所以:
J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = 1 2 ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 = 1 2 ( ( y ^ ( 1 ) − y ( 1 ) ) 2 + ( y ^ ( 1 ) − y ( 1 ) ) 2 + ⋯ + ( y ^ ( n ) − y ( n ) ) 2 ) = 1 2 ( y ^ − y ) 2 = 1 2 ( y ^ − y ) ∙ ( y ^ − y ) = 1 2 ( y ^ − y ) T ( y ^ − y ) = 1 2 ( X θ − y ) T ( X θ − y ) \begin{aligned} J{(\theta)} &= \frac{1}{2} \sum_{i=1}^m \left( h_\theta \left(x^{(i)} \right) -y^{(i)} \right)^2 \\ &= \frac{1}{2} \sum_{i=1}^m \left(\hat{y}^{(i)} -y^{(i)} \right)^2 \\ &= \frac{1}{2} \left( \left(\hat{y}^{(1)} -y^{(1)} \right)^2 + \left(\hat{y}^{(1)} -y^{(1)} \right)^2 + \cdots + \left(\hat{y}^{(n)} -y^{(n)} \right)^2 \right) \\ &= \frac{1}{2} \left( \bm{\hat{y}} - \bm{y} \right)^2 \\ &= \frac{1}{2} \left( \bm{\hat{y}} - \bm{y} \right) \bullet \left( \bm{\hat{y}} - \bm{y} \right)\\ &= \frac{1}{2} \left( \bm{\hat{y}} - \bm{y} \right)^T \left( \bm{\hat{y}} - \bm{y} \right) \\ &= \frac{1}{2} (X\bm{\theta} -\bm{y})^T(X\bm{\theta}-\bm{y}) \end{aligned} J(θ)=21i=1m(hθ(x(i))y(i))2=21i=1m(y^(i)y(i))2=21((y^(1)y(1))2+(y^(1)y(1))2++(y^(n)y(n))2)=21(y^y)2=21(y^y)(y^y)=21(y^y)T(y^y)=21(Xθy)T(Xθy)

矩阵求导

式子(8)中用到了矩阵求导,常见的几个求导公式:
在这里插入图片描述
详细内容可参考《矩阵求导法则与性质》

对于上面的第2个式子, f ( x ) = x T A x f{(x)} = \bm{x}^T A \bm{x} f(x)=xTAx,当 A A A 为对称矩阵,即 A = A T A = A^T A=AT时:
∂ f ( x ) ∂ x = ∂ ( x T A x ) ∂ x = A x + A T x = 2 A x \frac{\partial f{(x)}}{\partial \bm{x}} = \frac{\partial \left( \bm{x}^T A \bm{x}\right)}{\partial \bm{x}} = A\bm{x} + A^T \bm{x} = 2A \bm{x} xf(x)=x(xTAx)=Ax+ATx=2Ax
在式子(8)中, X T X X^T X XTX 为对称矩阵,所以:
∂ ( θ T X T X θ ) ∂ θ = 2 X T X θ \frac{\partial (\bm{\theta} ^T X^T X \bm{\theta})}{\partial \bm{\theta}} = 2 X^T X \bm{\theta} θ(θTXTXθ)=2XTXθ

对于式于(8)中的 θ T X T y \bm{\theta}^T X^T \bm{y} θTXTy ,可以参考上面第4个式子中的第一个,即:
∂ ( θ T X T y ) ∂ θ = X T y \frac{\partial (\bm{\theta}^T X^T \bm{y})}{\partial \bm{\theta}} = X^T \bm{y} θ(θTXTy)=XTy
对于式子(8)中的 y T X θ \bm{y}^T X \bm{\theta} yTXθ,可以参考上面的第3个式子,即:
∂ ( y T X θ ) ∂ θ = ∂ ( ( X T y ) T θ ) ∂ θ = X T y \frac{\partial{(\bm{y}^T X \bm{\theta})}}{\partial \bm{\theta}}=\frac{\partial{\left( (X^T \bm{y})^T \bm{\theta} \right)}}{\partial \bm{\theta}} = X^T \bm{y} θ(yTXθ)=θ((XTy)Tθ)=XTy
而式子(8)的 y T y \bm{y}^T \bm{y} yTy 为常数,求导为0,即:
∂ ( y T y ) ∂ θ = 0 \frac{\partial (\bm{y}^T \bm{y})}{\partial \bm{\theta}} = 0 θ(yTy)=0
所以有式子(8)中的:
∇ θ ( 1 2 ( θ T X T X θ − θ T X T y − y T X θ + y T y ) ) = 1 2 ( 2 X T X θ − X T y − X T y ) \nabla_\theta \left( \frac{1}{2}(\bm{\theta} ^T X^T X \bm{\theta} - \bm{\theta}^T X^T \bm{y}- \bm{y}^T X \bm{\theta} + \bm{y}^T \bm{y}) \right) = \frac{1}{2} \left( 2X^T X \bm{\theta} -X^T \bm{y} - X^T \bm{y} \right) θ(21(θTXTXθθTXTyyTXθ+yTy))=21(2XTXθXTyXTy)

式子(10)式的推导

上面的式子(9): min ⁡ θ J ( θ ) = ( X T X ) − 1 X T y \min\limits_{\bm{\theta}} J(\theta) = \left( X^T X \right)^{-1} X^T \bm{y} θminJ(θ)=(XTX)1XTy
对于 ( X T X ) − 1 \left( X^T X \right)^{-1} (XTX)1 ,如果存在,则必须行列式 ∣ X T X ∣ |X^TX| XTX > 0
∣ X T X ∣ |X^TX| XTX 无法保证大于 0,可进行一下变换,引入非零向量 μ \bm{\mu} μ
μ T X T X μ = ( X μ ) T ( X μ ) = ( X μ ) ∙ ( X μ ) ≥ 0 \bm{\mu}^TX^TX\bm{\mu} = (X\bm{\mu})^T(X\bm{\mu}) = (X\bm{\mu})\bullet(X\bm{\mu}) \geq 0 μTXTXμ=(Xμ)T(Xμ)=(Xμ)(Xμ)0
可得 X T X X^TX XTX 为半正定矩阵。而对于非零向量 μ \bm{\mu} μ,有 μ T μ \bm{\mu}^T\bm{\mu} μTμ > 0
所以
μ T X T X μ + μ T μ > 0 μ T X T X μ + μ T I μ > 0 μ T X T X μ + μ T λ I μ > 0 μ T ( X T X + λ I ) μ > 0 \bm{\mu}^TX^TX\bm{\mu} + \bm{\mu}^T\bm{\mu} > 0 \\ \bm{\mu}^TX^TX\bm{\mu} + \bm{\mu}^T I \bm{\mu} > 0 \\ \bm{\mu}^TX^TX\bm{\mu} + \bm{\mu}^T \lambda I \bm{\mu} > 0 \\ \bm{\mu}^T(X^TX + \lambda I )\bm{\mu} > 0 \\ μTXTXμ+μTμ>0μTXTXμ+μTIμ>0μTXTXμ+μTλIμ>0μT(XTX+λI)μ>0
所以 X T X + λ I X^TX + \lambda I XTX+λI 为正定矩阵,即可逆。(因:正定矩阵可逆)
所以式子(9)转换为了式子(10)
θ = ( X T X + λ I ) − 1 X T y \bm{\theta} = \left( X^T X + \lambda I \right)^{-1} X^T \bm{y} θ=(XTX+λI)1XTy
这样就一定能得最优解。同时,引入了 “ λ I \lambda I λI” 能有效防止过拟合。

对于式子(9),还可以从以下角度来理解(仅仅是为了帮助记忆):
原式子 X θ = y X \bm{\theta} =\bm{y} Xθ=y, 要解出 θ \bm{\theta} θ ,必须消掉 X,即:
X − 1 X θ = X − 1 y X^{-1} X \bm{\theta} = X^{-1} \bm{y} X1Xθ=X1y
如果 X 可逆,首先得满足 X 为方阵,而 X T X X^TX XTX 为方阵, 所以,原式子 X θ = y X \bm{\theta} =\bm{y} Xθ=y 两边同乘上 X T X^T XT
X T X θ = X T y X^T X \bm{\theta} = X^T \bm{y} XTXθ=XTy
现在出现了 X T X X^TX XTX ,两边再同乘 ( X T X ) − 1 (X^TX)^{-1} (XTX)1 :
( X T X ) − 1 ( X T X ) θ = ( X T X ) − 1 X T y (X^TX)^{-1} (X^T X) \bm{\theta} = (X^TX)^{-1} X^T \bm{y} (XTX)1(XTX)θ=(XTX)1XTy
得到最终的解:
θ = ( X T X ) − 1 X T y \bm{\theta} = (X^TX)^{-1} X^T \bm{y} θ=(XTX)1XTy

最小二乘法

我们都学过求解关于 x \bm{x} x 的方程 A x = y A\bm{x}=\bm{y} Ax=y ,线性回归中是关于 θ \theta θ 的方程 X θ = y X \bm{\theta} =\bm{y} Xθ=y ,都是一样的。方程有时是没有解或多解的情况,这时,我们采取如下方针:

  • 无解的情况下,至少给出一个答案 x \bm{x} x ,使得 A x A\bm{x} Ax 尽量“接近 y \bm{y} y
  • 有很多解的情况下,从中选出一个最“合理”的解

要注意,这里我们说的“接近”“合理”都是没有定义的。根据要解决的问题的不同,对这些概念进行度量的方法也有所不同,这就不单单是数学能解决的问题了。

实际中我们经常采用以下标准:

  • A x − y A\bm{x}-\bm{y} Axy 的长度越小,我们认为越“接近”
  • x \bm{x} x 的长度越小,我们认为越“合理”

(上面提到的长度,就是模长的意思)在这样的标准下,基于以上方针求解问题答案的方法,称为最小二乘法。最小二乘法作为常用的道具,在奇异值分解、广义逆矩阵等的计算中发挥着重要作用。
很显然,线性回归属于上面的第一种情况,是无解的情况。我们的目标就是解出 θ \bm{\theta} θ 使得 X θ = y ^ X \bm{\theta} =\bm{\hat{y}} Xθ=y^ 尽量接近 y \bm{y} y,也就是使误差 ε \bm{\varepsilon} ε 尽量小。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐