《人工智能》机器学习 - 第5章 线性回归(一 理论讲解)

86 阅读19分钟

开发IDE:Anaconda 3(python3.6.5)

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

那么什么是线性回归呢?在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合(自变量都是一次方)。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。

我们和以前一样,还是结合实例来讲解吧。就以房价为例吧,这也是大家最熟悉,最关心得。

给定数据集 D = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } D = \lbrace (x^{(1)}, y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m) } ,y^{(m)}) \rbrace D={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},其中 x ( i ) = { x 1 ( i ) , x 2 ( i ) , . . . , x n ( i ) } x^{(i)} = \lbrace x_1^{(i)},x_2^{(i)},...,x_n^{(i)} \rbrace x(i)={x1(i)​,x2(i)​,...,xn(i)​} ,共有 m m m个样本,每个样本含有 n n n个特征。

现在我们有关于重庆洪崖洞附近房价的一些数据, D = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } D = \lbrace (x^{(1)}, y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m) } ,y^{(m)}) \rbrace D={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))} ,其中 x ( i ) x^{(i)} x(i)只含有一个特征,表示房子的面积, i = 1 , 2 , . . . , m i=1,2,...,m i=1,2,...,m表示是第 i i i 个训练样本, y ( i ) y^{(i)} y(i)是数值,表示房子的价格。我们将该数值绘制成下图。

在这里插入图片描述

图1

通过观察我们大致可以看出,房子的面积 与房子的价格 具有一定的线性关系,也就是说,我们可以画出能够大致表示 与 关系的一条直线,如下图:

在这里插入图片描述

图2

在该直线中,房子的面积为 x ( i ) x^{(i)} x(i)自变量,房子的价格 y ^ ( i ) \hat{y}^{(i)} y^​(i)为因变量。而“线性回归”的目的就是,利用自变量 x ( i ) x^{(i)} x(i)与因变量 y ^ ( i ) \hat{y}^{(i)} y^​(i) ,来学习出这么一条能够描述两者之间关系的线。对于一元线性回归来说就是学习出一条直线,而对于多元线性回归来说则是学习出一个面或超平面。

对于上述的例子,我们可以得到一个函数关系, y = m x + c y=mx+c y=mx+c 。为了解决一般问题,我们就需要将线性回归的问题进行一般化、抽象化,转换成我们能够求解的数学问题。

5.1一元线性模型

在上面的例子中,我们可以看出自变量 x ( i ) x^{(i)} x(i)**与因变量 y ^ ( i ) \hat{y}^{(i)} y^​(i)大致成线性关系,因此我们可以对因变量做如下假设(hypothesis):
y ^ ( i ) = θ 1 x ( i ) + θ 0 \hat{y}^{(i)}= \theta_1 x^{(i)} + \theta_0 y^​(i)=θ1​x(i)+θ0​
或者
h θ ( x ( i ) ) = θ 1 x ( i ) + θ 0 h_{\theta}(x^{(i)}) = \theta_1 x^{(i)} + \theta_0 hθ​(x(i))=θ1​x(i)+θ0​

其中 i = 1 , 2 , . . . , m i=1,2,...,m i=1,2,...,m在这里使用 y ^ ( i ) \hat{y}^{(i)} y^​(i)是由于通过观察,我们可以发现直线并没有完全拟合数据,而是存在一定的误差。该假设即为一元线性函数的模型函数,其中含有两个参数 θ 0 \theta_0 θ0​与 θ 1 \theta_1 θ1​ 。其中 θ 1 \theta_1 θ1​可视为斜率, θ 0 \theta_0 θ0​为则直线在 y y y 轴上的截距。接下来的任务就是如何求得这两个未知参数。

5.1.1损失函数

模型建立好了,那么怎样的模型才是适合数据集放入呢?衡量一个模型和与数据点之间的接近程度,我们使用平方差来衡量。对于 x ( i ) x^{(i)} x(i) 其对应的直线上的值为 y ^ ( i ) \hat{y}^{(i)} y^​(i),但所给的数据集中 x ( i ) x^{(i)} x(i)对应的值为 y ( i ) y^{(i)} y(i) 。而预测值 y ^ ( i ) \hat{y}^{(i)} y^​(i)与实际值 y ( i ) y^{(i)} y(i)存在误差(或者也叫做残差(residual),在机器学习中也被称为代价(cost))。我们可以认为,预测值与实际值的误差越小越好

在这里我们使用均方误差(Mean Squared Error)来描述所需要求解的目标函数(Objective function)或代价函数(Loss function):

J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 \color{red}J(\theta_0,\theta_1) = \frac{1}{2m} \sum_{i=1}^m(\hat{y}^{(i)}-y^{(i)}) ^2 = \frac{1}{2m} \sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2 J(θ0​,θ1​)=2m1​∑i=1m​(y^​(i)−y(i))2=2m1​∑i=1m​(hθ​(x(i))−y(i))2

其中 i = 1 , 2 , . . . , m i=1,2,...,m i=1,2,...,m目标函数 J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) J(θ0​,θ1​)描述了所有训练样本实际值与预测值之间的均方误差,而我们的目的就是求解能够使得该误差 J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) J(θ0​,θ1​)值最小的参数 θ 0 , θ 1 \theta_0,\theta_1 θ0​,θ1​ 。可将其表示为:
m i n θ 0 , θ 1 J ( θ 0 , θ 1 ) min_{\theta0,\theta1} J(\theta_0,\theta_1) minθ0,θ1​J(θ0​,θ1​)

在确定了代价函数以及所需要求解的目标 ( θ 0 , θ 1 ) (\theta_0,\theta_1) (θ0​,θ1​)以及条件 m i n J ( θ 0 , θ 1 ) minJ(\theta_0,\theta_1) minJ(θ0​,θ1​)之后,接下来需要使用优化算法来进行参数的求解了。

在这里我们将使用三种方法进行参数的求解:(1)最小二乘法,(2)最大似然法(3)梯度下降法。我们先观察一下目标函数:

J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = 1 2 m ∑ i = 1 m [ ( θ 1 x ( i ) + θ 0 ) − y ( i ) ) ] 2 \color{red}J(\theta_0,\theta_1) = \frac{1}{2m} \sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2 = \frac{1}{2m} \sum_{i=1}^m[(\theta_1 x^{(i)}+ \theta_0 )- y^{(i)} )]^2 J(θ0​,θ1​)=2m1​∑i=1m​(hθ​(x(i))−y(i))2=2m1​∑i=1m​[(θ1​x(i)+θ0​)−y(i))]2

此时将参数 θ 1 \theta_1 θ1​视作自变量,可将上式看成是 J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) J(θ0​,θ1​)是关于 θ 1 \theta_1 θ1​的二次函数并可作出下图( θ 0 \theta_0 θ0​亦同)。

在这里插入图片描述

图3

可看出函数图中存在最小点,而在该点处满足 Δ J ( θ 0 , θ 1 ) Δ θ 1 = 0 \frac{\Delta J(\theta_0, \theta_1)}{\Delta \theta_1} = 0 Δθ1​ΔJ(θ0​,θ1​)​=0。此点即为最小值点。

5.1.2最小二乘法

最小二乘法,或者叫正规方程,是解析地求解参数 θ \theta θ。下面我们来介绍一下如何使用最小二乘法来求得参数。

对上述的目标函数进一步计算:
J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = 1 2 m ∑ i = 1 m [ ( θ 1 x ( i ) ) 2 + 2 θ 1 x ( i ) ( θ 0 − y ( i ) ) + θ 0 2 − 2 θ 0 y ( i ) + ( y ( i ) ) 2 ] \color{red}J(\theta_0,\theta_1) = \frac{1}{2m} \sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2 = \frac{1}{2m} \sum_{i=1}^m[(\theta_1 x^{(i)})^2+ 2\theta_1 x^{(i)}(\theta_0- y^{(i)} ) + \theta_0^2 - 2\theta_0y^{(i)} + (y^{(i)} )^2] J(θ0​,θ1​)=2m1​∑i=1m​(hθ​(x(i))−y(i))2=2m1​∑i=1m​[(θ1​x(i))2+2θ1​x(i)(θ0​−y(i))+θ02​−2θ0​y(i)+(y(i))2](1)

 求偏导

对损失函数求导,对上式 θ 1 \theta_1 θ1​的求导,可以去掉不包含 θ 1 \theta_1 θ1​ 的项,去掉后得到:
1 2 m ∑ i = 1 m [ ( θ 1 x ( i ) ) 2 + 2 θ 1 x ( i ) ( θ 0 − y ( i ) ) ] \frac{1}{2m} \sum_{i=1}^m[(\theta_1 x^{(i)})^2+ 2\theta_1 x^{(i)}(\theta_0- y^{(i)} ) ] 2m1​∑i=1m​[(θ1​x(i))2+2θ1​x(i)(θ0​−y(i))]

重新排列得到:
θ 1 2 1 2 m ( ∑ i = 1 m ( x ( i ) ) 2 ) + θ 1 m ( ∑ i = 1 m x ( i ) ( θ 0 − y ( i ) ) ) \theta_1^2\frac{1}{2m}(\sum_{i=1}^m(x^{(i)})^2)+\frac{\theta_1}{m} (\sum_{i=1}^m x^{(i)}(\theta_0- y^{(i)} )) θ12​2m1​(∑i=1m​(x(i))2)+mθ1​​(∑i=1m​x(i)(θ0​−y(i)))

关于 θ 1 \theta_1 θ1​求导得到:

Δ J ( θ 0 , θ 1 ) Δ θ 1 = θ 1 m ( ∑ i = 1 m ( x ( i ) ) 2 ) + θ 1 m ( ∑ i = 1 m x ( i ) ( θ 0 − y ( i ) ) ) \color{red}\frac{\Delta J(\theta_0,\theta_1)}{\Delta \theta_1}=\frac{\theta_1}{m}(\sum_{i=1}^m(x^{(i)})^2)+\frac{\theta_1}{m} (\sum_{i=1}^m x^{(i)}(\theta_0- y^{(i)} )) Δθ1​ΔJ(θ0​,θ1​)​=mθ1​​(∑i=1m​(x(i))2)+mθ1​​(∑i=1m​x(i)(θ0​−y(i))) (2)

同样对 θ 0 \theta_0 θ0​做相同的操作,去掉不含 θ 0 \theta_0 θ0​的项,得到:

1 2 m ∑ i = 1 m [ 2 θ 1 x ( i ) θ 0 + θ 0 2 − 2 θ 0 y ( i ) ] \frac{1}{2m} \sum_{i=1}^m[ 2\theta_1 x^{(i)}\theta_0 + \theta_0^2 - 2\theta_0y^{(i)} ] 2m1​∑i=1m​[2θ1​x(i)θ0​+θ02​−2θ0​y(i)]

重新排列得到:

θ 0 2 2 + θ 0 θ 1 m ( ∑ i = 1 m x ( i ) ) − θ 0 m ( ∑ i = 1 m y ( i ) ) \frac{\theta_0^2}{2}+\frac{\theta_0\theta_1}{m} (\sum_{i=1}^m x^{(i)}) -\frac{\theta_0}{m} (\sum_{i=1}^{m}y^{(i)} ) 2θ02​​+mθ0​θ1​​(∑i=1m​x(i))−mθ0​​(∑i=1m​y(i))

其中 s u m i = 1 m θ 0 2 = m θ 0 2 sum_{i=1}^{m}\theta_0^2=m\theta_0^2 sumi=1m​θ02​=mθ02​。

关于 θ 0 \theta_0 θ0​求导得到:

Δ J ( θ 0 , θ 1 ) Δ θ 0 = θ 0 + θ 1 m ( ∑ i = 1 m x ( i ) ) − 1 m ( ∑ i = 1 m y ( i ) ) \color{red}\frac{\Delta J(\theta_0,\theta_1)}{\Delta \theta_0}=\theta_0+\frac{\theta_1}{m} (\sum_{i=1}^m x^{(i)}) -\frac{1}{m} (\sum_{i=1}^{m}y^{(i)} ) Δθ0​ΔJ(θ0​,θ1​)​=θ0​+mθ1​​(∑i=1m​x(i))−m1​(∑i=1m​y(i))(3)

 导数等于0
前文我们对 θ 0 \theta_0 θ0​、 θ 1 \theta_1 θ1​ 已经求了偏导,接下来将(3)式等于0,并对 θ 0 \theta_0 θ0​进行求解。

θ 0 + θ 1 m ( ∑ i = 1 m x ( i ) ) − 1 m ( ∑ i = 1 m y ( i ) ) = 0 \theta_0+\frac{\theta_1}{m} (\sum_{i=1}^m x^{(i)}) -\frac{1}{m} (\sum_{i=1}^{m}y^{(i)} )=0 θ0​+mθ1​​(∑i=1m​x(i))−m1​(∑i=1m​y(i))=0


θ 0 = 1 m ( ∑ i = 1 m y ( i ) ) − θ 1 m ( ∑ i = 1 m x ( i ) ) \theta_0=\frac{1}{m} (\sum_{i=1}^{m}y^{(i)} )-\frac{\theta_1}{m} (\sum_{i=1}^m x^{(i)}) θ0​=m1​(∑i=1m​y(i))−mθ1​​(∑i=1m​x(i))

将 y ( i ) ˉ = 1 m ( ∑ i = 1 m y ( i ) ) \bar{y^{(i)}}=\frac{1}{m} (\sum_{i=1}^{m}y^{(i)} ) y(i)ˉ​=m1​(∑i=1m​y(i)), x ( i ) ˉ = 1 m ( ∑ i = 1 m x ( i ) ) \bar{x^{(i)}}=\frac{1}{m} (\sum_{i=1}^m x^{(i)}) x(i)ˉ=m1​(∑i=1m​x(i)),则可以重写 。

θ 0 ^ = y ( i ) ˉ − θ 1 x ( i ) ˉ \hat{\theta_0}=\bar{y^{(i)}}-\theta_1\bar{x^{(i)}} θ0​^​=y(i)ˉ​−θ1​x(i)ˉ

我们可以发现 y ( i ) ˉ = θ 1 x ( i ) ˉ + θ 0 ^ \bar{y^{(i)}}=\theta_1\bar{x^{(i)}}+\hat{\theta_0} y(i)ˉ​=θ1​x(i)ˉ+θ0​^​,这里 x ( i ) x^{(i)} x(i)和 y ( i ) y^{(i)} y(i)的变成了 x ( i ) x^{(i)} x(i)和 y ( i ) y^{(i)} y(i)平均值。我们这里需要求解,因此需要检验2阶导数。对 θ 0 \theta_0 θ0​和 θ 1 \theta_1 θ1​求2阶导数。

Δ 2 J ( θ 0 , θ 1 ) Δ θ 1 2 = 1 m ( ∑ i = 1 m ( x ( i ) ) 2 ) \frac{\Delta ^2J(\theta_0,\theta_1)}{\Delta \theta_1^2}=\frac{1}{m}(\sum_{i=1}^m(x^{(i)})^2) Δθ12​Δ2J(θ0​,θ1​)​=m1​(∑i=1m​(x(i))2)

Δ 2 J ( θ 0 , θ 1 ) Δ θ 0 2 = 1 \frac{\Delta ^2J(\theta_0,\theta_1)}{\Delta \theta_0^2}=1 Δθ02​Δ2J(θ0​,θ1​)​=1

这两个量一定是正量,说明它仅有一个拐点且对应的拐点对应于损失函数的最小值。
将 θ 0 ^ = y ( i ) ˉ − θ 1 x ( i ) ˉ \hat{\theta_0}=\bar{y^{(i)}}-\theta_1\bar{x^{(i)}} θ0​^​=y(i)ˉ​−θ1​x(i)ˉ代入(2)中,得到仅含有 θ 1 \theta_1 θ1​的表达式:

Δ J ( θ 0 , θ 1 ) Δ θ 1 = θ 1 m ( ∑ i = 1 m ( x ( i ) ) 2 ) + 1 m ( ∑ i = 1 m x ( i ) ( y ( i ) ˉ − θ 1 x ( i ) ˉ − y ( i ) ) ) \color{red}\frac{\Delta J(\theta_0,\theta_1)}{\Delta \theta_1}=\frac{\theta_1}{m}(\sum_{i=1}^m(x^{(i)})^2)+\frac{1}{m} (\sum_{i=1}^m x^{(i)}(\bar{y^{(i)}}-\theta_1\bar{x^{(i)}}- y^{(i)} )) Δθ1​ΔJ(θ0​,θ1​)​=mθ1​​(∑i=1m​(x(i))2)+m1​(∑i=1m​x(i)(y(i)ˉ​−θ1​x(i)ˉ−y(i)))

使用 x ( i ) ˉ = 1 m ( ∑ i = 1 m x ( i ) ) \bar{x^{(i)}}=\frac{1}{m} (\sum_{i=1}^m x^{(i)}) x(i)ˉ=m1​(∑i=1m​x(i))简化表达式:

Δ J ( θ 0 , θ 1 ) Δ θ 1 = θ 1 [ 1 m ( ∑ i = 1 m ( x ( i ) ) 2 ) − x ( i ) ˉ x ( i ) ˉ ] + y ( i ) ˉ x ( i ) ˉ − 1 m ( ∑ i = 1 m x ( i ) y ( i ) ) \color{red}\frac{\Delta J(\theta_0,\theta_1)}{\Delta \theta_1}=\theta_1[\frac{1}{m}(\sum_{i=1}^m(x^{(i)})^2)-\bar{x^{(i)}}\bar{x^{(i)}}]+\bar{y^{(i)}}\bar{x^{(i)}}-\frac{1}{m} (\sum_{i=1}^m x^{(i)}y^{(i)}) Δθ1​ΔJ(θ0​,θ1​)​=θ1​[m1​(∑i=1m​(x(i))2)−x(i)ˉx(i)ˉ]+y(i)ˉ​x(i)ˉ−m1​(∑i=1m​x(i)y(i))

通过将其偏导设置为0,得到 θ 1 \theta_1 θ1​:

θ 1 ^ = 1 m ( ∑ i = 1 m x ( i ) y ( i ) ) − y ( i ) ˉ x ( i ) ˉ 1 m ( ∑ i = 1 m ( x ( i ) ) 2 ) − x ( i ) ˉ x ( i ) ˉ \color{red}\hat{\theta_1}=\frac{\frac{1}{m} (\sum_{i=1}^m x^{(i)}y^{(i)})-\bar{y^{(i)}}\bar{x^{(i)}}}{\frac{1}{m}(\sum_{i=1}^m(x^{(i)})^2)-\bar{x^{(i)}}\bar{x^{(i)}}} θ1​^​=m1​(∑i=1m​(x(i))2)−x(i)ˉx(i)ˉm1​(∑i=1m​x(i)y(i))−y(i)ˉ​x(i)ˉ​

接下来对上式进行简化,其中 ( x ( i ) ) 2 ˉ = 1 m ( ∑ i = 1 m ( x ( i ) ) 2 ) \bar{(x^{(i)})^2}=\frac{1}{m} (\sum_{i=1}^m (x^{(i)})^2) (x(i))2ˉ​=m1​(∑i=1m​(x(i))2), x ( i ) y ( i ) ˉ = 1 m ( ∑ i = 1 m x ( i ) y ( i ) ) \bar{x^{(i)}y^{(i)}}=\frac{1}{m} (\sum_{i=1}^m x^{(i)}y^{(i)}) x(i)y(i)ˉ​=m1​(∑i=1m​x(i)y(i))。 ,从而:

θ 1 ^ = x ( i ) y ( i ) ˉ − y ( i ) ˉ x ( i ) ˉ ( x ( i ) ) 2 ˉ − x ( i ) ˉ x ( i ) ˉ \color{red}\hat{\theta_1}=\frac{\bar{x^{(i)}y^{(i)}}-\bar{y^{(i)}}\bar{x^{(i)}}}{\bar{(x^{(i)})^2}-\bar{x^{(i)}}\bar{x^{(i)}}} θ1​^​=(x(i))2ˉ​−x(i)ˉx(i)ˉx(i)y(i)ˉ​−y(i)ˉ​x(i)ˉ​

求得 θ 1 \theta_1 θ1​,再带入 θ 0 ^ = y ( i ) ˉ − θ 1 x ( i ) ˉ \hat{\theta_0}=\bar{y^{(i)}}-\theta_1\bar{x^{(i)}} θ0​^​=y(i)ˉ​−θ1​x(i)ˉ ,从而得到 θ 0 \theta_0 θ0​。

以上就是使用最小二乘法求解参数。可不要以为就此结束了,我们的实例是对于一元线性回归,且是单一特征,那么对于更多的属性集合,更加高维的特征,那怎么处理呢?

我们接下来就要引入矩阵了,基础理论就不说了,接下来直接看如何使用矩阵如何求解一般过程。

 矩阵一般化求解
为了便于理解,我们将先前的实例矩阵化,将 θ 0 \theta_0 θ0​、 θ 1 \theta_1 θ1​合并为一个矩阵向量 ,将每个 x ( i ) x^{(i)} x(i)增加1,从而扩大成数据向量 X X X,即:

在这里插入图片描述
对于模型函数,我们可以表示为:

h ( x ) = X T θ = θ T X h(x)=X^T\theta=\theta^T X h(x)=XTθ=θTX

一般化, h ( x ) = X T θ = θ X T h(x)=X^T\theta=\theta X^T h(x)=XTθ=θXT 可以表示为一般的线性回归模型,则代价函数我们可以表示为:

J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m [ ( θ 1 x ( i ) ) 2 + 2 θ 1 x ( i ) ( θ 0 − y ( i ) ) + θ 0 2 − 2 θ 0 y ( i ) + ( y ( i ) ) 2 ] = 1 2 m ∣ X T θ − Y ∣ T ∣ X T θ − Y ∣ \color{red}J(\theta_0,\theta_1) = \frac{1}{2m} \sum_{i=1}^m[(\theta_1 x^{(i)})^2+ 2\theta_1 x^{(i)}(\theta_0- y^{(i)} ) + \theta_0^2 - 2\theta_0y^{(i)} + (y^{(i)} )^2]=\frac{1}{2m}|X^T\theta-Y|^T|X^T\theta-Y| J(θ0​,θ1​)=2m1​∑i=1m​[(θ1​x(i))2+2θ1​x(i)(θ0​−y(i))+θ02​−2θ0​y(i)+(y(i))2]=2m1​∣XTθ−Y∣T∣XTθ−Y∣

其中
Y = [ y ( 1 ) y ( 2 ) y ( 3 ) ⋮ y ( m ) ] Y = \begin{bmatrix} y^{(1)} \\ y^{(2)} \\ y^{(3)} \\ \vdots \\ y^{(m)} \\ \end{bmatrix} Y=⎣⎢⎢⎢⎢⎢⎡​y(1)y(2)y(3)⋮y(m)​⎦⎥⎥⎥⎥⎥⎤​
同样通过求导求解参数。即求解 Δ Δ θ [ ( X T ⋅ θ − y ) T ( X T ⋅ θ − y ) ] = 0 \frac{\Delta}{\Delta \theta} [(X^T \cdot \theta - y)^T(X^T \cdot \theta - y)] = 0 ΔθΔ​[(XT⋅θ−y)T(XT⋅θ−y)]=0


Δ Δ θ [ ( X T ⋅ θ − y ) T ( X T ⋅ θ − y ) ] = Δ Δ θ [ ( θ T X T X θ − 2 θ T X T Y − Y T Y ) ] \frac{\Delta}{\Delta \theta} [(X^T \cdot \theta - y)^T(X^T \cdot \theta - y)] = \frac{\Delta}{\Delta \theta} [({\theta}^T X^T X\theta-2\theta^TX^TY -Y^TY)] ΔθΔ​[(XT⋅θ−y)T(XT⋅θ−y)]=ΔθΔ​[(θTXTXθ−2θTXTY−YTY)]

X T X θ − X T Y = 0 X^TX\theta-X^TY=0 XTXθ−XTY=0

得到参数矩阵 θ ^ = ( X T X ) − 1 X T Y \hat{\theta} = (X^T X)^{-1} X^T Y θ^=(XTX)−1XTY 。

以上便是使用最小二乘法进行参数求解的过程。另外一般来说,矩阵的逆运算算法复杂度为 ,当特征数很大时,计算非常耗时。
【注】以上步骤笔者只给出了关键步骤,有兴趣的朋请自行推导。

5.1.3最大似然法

前文笔者使用最小二乘法进行了求解最优解,接下来,笔者就带领大家通过引入随机变量来显式地对数据中的噪声(模型和观测值和之间的误差)进行建模。同时也说明引入噪声的有事所在。

正如先前的例子,房价随着面积存在一定的线性关系,这个模型可以捕获数据的整体趋势,但是忽略了模型和观测数据之间出现的误差。我们可以发现误差也有所不同,有的是正的有是负的,也就是随机的,因此我们就引入随机变量来解决这个问题。关于随机变量的基础知识笔者就不再讲解了,忘记了或者没学过这部分的内容,可自行查阅相关资料吧。笔者直接进入该部分内容的正题了。

我们引入随机变量 ε − a \varepsilon -a ε−a,现在我们的模型采用如下式子:

h ( x ) = X T θ + ε h(x)=X^T\theta+\varepsilon h(x)=XTθ+ε

为了完整定义这个模型,我们需要定义 ε \varepsilon ε的分布,我们假设是一个高斯或者正态分布,其均值为0,方差为 σ 2 \sigma^2 σ2。

好了,现在万事具备,我们来构建模型,也就是联合概率密度分布:

在这里插入图片描述
接下来来就是求解参数了。带入高斯密度函数,引入自然对数值。

在这里插入图片描述
还是和以前一样通过求导,使其拐点为0来求解最优解。

在这里插入图片描述
【注】 ∂ l o g L ∂ θ \frac{\partial logL}{\partial\theta} ∂θ∂logL​是向量,因此需要采用矩阵形式,则

在这里插入图片描述

在这里插入图片描述
解其最优解,得到最优表达:

θ ^ = ( X T X ) − 1 X T Y \hat{\theta} = (X^T X)^{-1} X^T Y θ^=(XTX)−1XTY

这就是最大似然解。

同样可以求出 σ 2 \sigma^2 σ2。笔者就不在推导了,也是令导数为0,就直接给出最后解吧,。
在这里插入图片描述

5.1.4梯度下降法

我们可以使用梯度下降法来求得该点的参数值。其思想为:“走一步看一步”,总是在每一步的小范围内找当前最优方向,再继续前进。
梯度下降法的逻辑为:
(1)从某个 θ 0 , θ 1 \theta_0,\theta_1 θ0​,θ1​ 开始(一般设置为0或者取随机值)
(2)不断修改 θ 0 , θ 1 \theta_0,\theta_1 θ0​,θ1​ ,以使得 J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) J(θ0​,θ1​) 越来越小,直到接近最小值点。
其算法过程为:
repeat {
θ j : = θ j − α Δ J ( θ 0 , θ 1 ) Δ θ j \theta_j := \theta_j - \alpha \frac{\Delta J(\theta_0,\theta_1)}{\Delta \theta_j} θj​:=θj​−αΔθj​ΔJ(θ0​,θ1​)​
}
其中 α \alpha α为学习率(learning rate),也就是每一次的“步长”; Δ J ( θ 0 , θ 1 ) Δ θ j \frac{\Delta J(\theta_0,\theta_1)}{\Delta \theta_j} Δθj​ΔJ(θ0​,θ1​)​是方向,也可以看做是二次函数上每一点的切线斜率,可以使得整体上是朝着最小值点的方向进行。参见下图进行理解:
在这里插入图片描述

图4

由上面的梯度下降算法过程可知,我们需要求解学习率 α \alpha α 以及梯度 Δ J ( θ 0 , θ 1 ) Δ θ j \frac{\Delta J(\theta_0,\theta_1)}{\Delta \theta_j} Δθj​ΔJ(θ0​,θ1​)​ ,其中 j = 0 , 1 j=0,1 j=0,1 。而学习率是人为设定,并不需要从训练集中学习,因此我们只需要求解梯度即可。
对于一元线性回归来说:

J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 = 1 2 m ∑ i = 1 m ( θ 0 + θ 1 x ( i ) − y ( i ) ) 2 \color{red}J(\theta_0,\theta_1) = \frac{1}{2m} \sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2 = \frac{1}{2m} \sum_{i=1}^m(\theta_0+\theta_1 x^{(i)}-y^{(i)})^2 J(θ0​,θ1​)=2m1​∑i=1m​(hθ​(x(i))−y(i))2=2m1​∑i=1m​(θ0​+θ1​x(i)−y(i))2

Δ J ( θ 0 , θ 1 ) Δ θ j = Δ Δ θ j 1 2 m ∑ i = 1 m ( θ 0 + θ 1 x ( i ) − y ( i ) ) 2 \frac{\Delta J(\theta_0,\theta_1)}{\Delta \theta_j} = \frac{\Delta}{\Delta \theta_j} \frac{1}{2m} \sum_{i=1}^m (\theta_0 + \theta_1 x^{(i)} - y^{(i)})^2 Δθj​ΔJ(θ0​,θ1​)​=Δθj​Δ​2m1​∑i=1m​(θ0​+θ1​x(i)−y(i))2

当 j = 0 j=0 j=0时:

Δ J ( θ 0 , θ 1 ) Δ θ 0 = 1 m ∑ i = 1 m ( θ 0 + θ 1 x ( i ) − y ( i ) ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) \frac{\Delta J(\theta_0,\theta_1)}{\Delta \theta_0} = \frac{1}{m} \sum _{i=1}^m (\theta_0 + \theta_1 x^{(i)} - y^{(i)}) = \frac{1}{m} \sum_{i=1}^m (h_{\theta}(x^{(i)}) - y^{(i)}) Δθ0​ΔJ(θ0​,θ1​)​=m1​∑i=1m​(θ0​+θ1​x(i)−y(i))=m1​∑i=1m​(hθ​(x(i))−y(i))

当 j = 1 j=1 j=1时:

Δ J ( θ 0 , θ 1 ) Δ θ 1 = 1 m ∑ i = 1 m ( θ 0 + θ 1 x ( i ) − y ( i ) ) ⋅ x ( i ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x ( i ) \frac{\Delta J(\theta_0,\theta_1)}{\Delta \theta_1} = \frac{1}{m} \sum _{i=1}^m (\theta_0 + \theta_1 x^{(i)} - y^{(i)}) \cdot x^{(i)} = \frac{1}{m} \sum_{i=1}^m (h_{\theta}(x^{(i)}) - y^{(i)}) \cdot x^{(i)} Δθ1​ΔJ(θ0​,θ1​)​=m1​∑i=1m​(θ0​+θ1​x(i)−y(i))⋅x(i)=m1​∑i=1m​(hθ​(x(i))−y(i))⋅x(i)

于是对于一元线性回归,梯度下降算法过程为:
repeat {
θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) \theta_0 := \theta_0 - \alpha \frac{1}{m} \sum_{i=1}^m (h_{\theta}(x^{(i)}) - y^{(i)}) θ0​:=θ0​−αm1​∑i=1m​(hθ​(x(i))−y(i))
θ 1 : = θ 1 − α 1 m ∑ i = 1 m ( 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)}) \cdot x^{(i)} θ1​:=θ1​−αm1​∑i=1m​(hθ​(x(i))−y(i))⋅x(i)
}

重复以上过程直到收敛,或达到最大迭代次数。收敛判断条件为:

∣ J ( θ 0 ( k ) , θ 1 ( k ) ) − J ( θ 0 ( k − 1 ) , θ 1 ( k − 1 ) ) ∣ &lt; ϵ \mid J(\theta_0^{(k)},\theta_1^{(k)}) - J(\theta_0^{(k-1)},\theta_1^{(k-1)}) \mid &lt; \epsilon ∣J(θ0(k)​,θ1(k)​)−J(θ0(k−1)​,θ1(k−1)​)∣<ϵ

其中 ϵ 为阈值 ,当第 k k k 次所求代价值,与第 k − 1 k−1 k−1代价值相差小于阈值时,可视为函数收敛到最优解附近。此时的 θ 0 ( k ) , θ 1 ( k ) \theta_0^{(k)},\theta_1^{(k)} θ0(k)​,θ1(k)​ 即为所求参数。

以上便是梯度下降算法的整个过程。

好了,以上就是线性回归整个过程的求解了。接下来比较三种解法的异同点。

最小二乘法:(1)不需要选择学习率α(2)不需要迭代 (3)需要计算矩阵的逆,当特征数 n 很大时,计算速度很慢。
最大似然法:(1)不需要选择学习率α(2)不需要迭代 (3)需要计算矩阵的逆,当特征数n 很大时,计算速度很慢。
梯度下降法:(1)需要选择学习率α(2)需要迭代 (3)即使特征数n很大也能很好地工作。

5.2多元线性回归

5.2.1多元线性回归模型

对于多元线性回归模型,对训练样本集拟合时不再是一条“直线”,而是“面”或者“超平面”。拟合的方程为:

h θ ( x ( i ) ) = θ 0 + θ 1 x 1 ( i ) + θ 2 x 2 ( i ) + . . . + θ n x n ( i ) h_{\theta}(x^{(i)}) = \theta_0 + \theta_1 x_1^{(i)} +\theta_2 x_2^{(i)} + ... +\theta_n x_n^{(i)} hθ​(x(i))=θ0​+θ1​x1(i)​+θ2​x2(i)​+...+θn​xn(i)​

其中 i = 1 , 2 , . . . , m i=1,2,...,m i=1,2,...,m表示第 i i i个训练样本。
或者记为:

h ( x ( i ) ) = ( X ( i ) ) T ⋅ θ h(x^{(i)}) = (X^{(i)})^T \cdot \theta h(x(i))=(X(i))T⋅θ

其中 m m m表示训练样本数, n n n表示特征数。

( X ( i ) ) T = [ 1 x 1 ( i ) ⋯ x n ( i ) ] , Θ = [ θ 0 θ 1 ⋮ θ n ] (X^{(i)})^T = \begin{bmatrix} 1 &amp; x^{(i)}_1 &amp; \cdots &amp; x^{(i)}_n \\ \end{bmatrix} , \Theta = \begin{bmatrix} \theta_0 \\ \theta_1 \\ \vdots \\ \theta_n \\ \end{bmatrix} (X(i))T=[1​x1(i)​​⋯​xn(i)​​],Θ=⎣⎢⎢⎢⎡​θ0​θ1​⋮θn​​⎦⎥⎥⎥⎤​

5.2.2损失函数定义

对于多元线性回归模型,其损失函数定义为:

J ( θ 0 , θ 1 , . . . , θ n ) = 1 2 m ∑ i = 1 m ( h θ ( X ) − y ) 2 J(\theta_0,\theta_1, ..., \theta_n) = \frac{1}{2m} \sum_{i=1}^m(h_{\theta}(X)-y)^2 J(θ0​,θ1​,...,θn​)=2m1​∑i=1m​(hθ​(X)−y)2

其中
h θ ( X ) = [ h θ ( x ( 1 ) ) h θ ( x ( 2 ) ) h θ ( x ( 3 ) ) ⋮ h θ ( x ( m ) ) ] , y = [ y ( 1 ) y ( 2 ) y ( 3 ) ⋮ y ( m ) ] h_\theta(X) = \begin{bmatrix} h_\theta(x^{(1)}) \\ h_\theta(x^{(2)}) \\ h_\theta(x^{(3)}) \\ \vdots \\ h_\theta(x^{(m)}) \end{bmatrix} , y = \begin{bmatrix} y^{(1)} \\ y^{(2)} \\ y^{(3)} \\ \vdots \\ y^{(m)} \\ \end{bmatrix} hθ​(X)=⎣⎢⎢⎢⎢⎢⎡​hθ​(x(1))hθ​(x(2))hθ​(x(3))⋮hθ​(x(m))​⎦⎥⎥⎥⎥⎥⎤​,y=⎣⎢⎢⎢⎢⎢⎡​y(1)y(2)y(3)⋮y(m)​⎦⎥⎥⎥⎥⎥⎤​

5.2.3优化算法–梯度下降法

其算法过程为:
repeat {

θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x j ( i ) \theta_j := \theta_j - \alpha \frac{1}{m} \sum_{i=1}^m (h_{\theta}(x^{(i)}) - y^{(i)}) \cdot x_j^{(i)} θj​:=θj​−αm1​∑i=1m​(hθ​(x(i))−y(i))⋅xj(i)​
}

其中 i = 1 , 2 , . . . , m i=1,2,...,m i=1,2,...,m ,表示样本数; j = 1 , 2 , . . . , n j=1,2,...,n j=1,2,...,n,表示特征数
梯度的计算过程同一元线性回归中的梯度求解过程。

参考文献:
[1]机器学习基础,(英)罗杰斯,(英)吉罗拉 著,郭茂祖 等译
[2]机器学习,周志华著
[3]机器学习实战