降维与正则法

  首先说明目前在网上有很多翻译讲解吴的中文材料,我也是刚刚开始学习,借鉴学习了他们很多,之所以想着要自己写一份,也是觉得这样能够帮助我总结学习的算法原理,不然很多东西自己总是看一遍过一段时间忘记,自己用自己的话写下来以后,也便于自己回顾。
  在维基百科中,对回归分析(Regression analysis)是这样分析的:In statistical modeling, regression analysis is a statistical process for estimating the relationships among variables. It includes many techniques for modeling and analyzing several variables, when the focus is on the relationship between a dependent variable and one or more independent variables (or ‘predictors’).
这是英文原文,我英语有限,不希望把他的解释给阉割。我们可以简单理解为线性回归就是在分析探讨一个变量和若干个独立变量的关系。
  Andrew Ng首先举了一个房屋面积与价格的例子:房屋的价格是一个关于房屋面积和房间数有关的连续函数。
这里我们把房屋面积用x1来表示,x2来表示房屋数量,那么房屋的价格就可以写成:

用Transformer实现回归任务 回归constant_梯度下降算法

这里我们x0把定义为1,则可以用矩阵表示:

用Transformer实现回归任务 回归constant_用Transformer实现回归任务_02


用Transformer实现回归任务 回归constant_梯度下降算法_03


用Transformer实现回归任务 回归constant_用Transformer实现回归任务_04


所以

用Transformer实现回归任务 回归constant_梯度下降算法_05


  这里的h(x)就是我们得到的房屋的价格,显然在我们求房屋价格时,其精确程度与房屋价格

用Transformer实现回归任务 回归constant_用Transformer实现回归任务_06

有关。在我们这一章中主要就是在探讨几种求

用Transformer实现回归任务 回归constant_用Transformer实现回归任务_06

的方式。

为了使我们预测的房价尽量准确,只要让下面的式子尽量小:

用Transformer实现回归任务 回归constant_线性回归_08


这里我们给出我们的第一种求解方式,梯度下降法:

初始化

用Transformer实现回归任务 回归constant_用Transformer实现回归任务_06

=0,

用Transformer实现回归任务 回归constant_用Transformer实现回归任务_10

………………2

用Transformer实现回归任务 回归constant_线性回归_11

………………3

将3代入2就得到了

用Transformer实现回归任务 回归constant_线性回归_12

………………4

  显然这是对于一个训练样本而言的,考入到有m个训练样本,我们可以将公式4转变为

用Transformer实现回归任务 回归constant_迭代_13

………………5

  反复迭代公式5,得到一个收敛的

用Transformer实现回归任务 回归constant_用Transformer实现回归任务_06

,就是我们最后要求的似然度。并最终得到一个线性回归方程。

其中

用Transformer实现回归任务 回归constant_线性回归_15

是我们的算法的学习速率,如果过小会导致迭代次数过多,如果过大,则会在最优点产生震荡

从上面的计算中我们可以看到,对于一个线性回归方程来说对于每一个

用Transformer实现回归任务 回归constant_迭代_16

都需要经过很多次的迭代才能得到值,所以如果一个实例中有许多的特征,那么使用这种批梯度学习,当我们每次迭代一次的时候,都需要把整个数据集都计算一遍。为此我们采用增量梯度下降算法:

Repeat:{

  for j from 1 to m{

    

用Transformer实现回归任务 回归constant_线性回归_17


  }

}

  这样会大大减少我们的计算数量,但是使用增量梯度下降算法,有时会使我们的算法精确度下降。我们可以直接求出参数值而不使用需要迭代的方法,即正规方程法。在介绍这个方程之前首先要回顾几个关于矩阵和行列式的性质。

  我们对一个函数J对

用Transformer实现回归任务 回归constant_用Transformer实现回归任务_06

求导可以表示为:

用Transformer实现回归任务 回归constant_用Transformer实现回归任务_19


而关于一个m*n维的矩阵A,他的梯度可以写成

用Transformer实现回归任务 回归constant_梯度下降算法_20


对于一个n*n的矩阵,它的迹是:

用Transformer实现回归任务 回归constant_用Transformer实现回归任务_21


并且有如下关于矩阵和梯度的性质:

用Transformer实现回归任务 回归constant_梯度下降算法_22


而在训练过程中,我们可以把训练集的整个输入和输出分别用两个矩阵表示成输入集和输出集

输入集:

用Transformer实现回归任务 回归constant_线性回归_23


输出集:

用Transformer实现回归任务 回归constant_梯度下降算法_24


所以:

用Transformer实现回归任务 回归constant_线性回归_25


就可以得到在梯度下降中的J的另一种表现形式:

用Transformer实现回归任务 回归constant_迭代_26


通过矩阵的相关性质化简可以得到J的梯度推导:

用Transformer实现回归任务 回归constant_用Transformer实现回归任务_27

=

用Transformer实现回归任务 回归constant_线性回归_28

我嗯要尽量使的我们的梯度小,所以最小就是0,所以令

用Transformer实现回归任务 回归constant_用Transformer实现回归任务_27

=0,我们得到了

用Transformer实现回归任务 回归constant_梯度下降算法_30

=0,

通过矩阵的性质可以很容易的得到:

用Transformer实现回归任务 回归constant_线性回归_31


从而得到了我们

用Transformer实现回归任务 回归constant_用Transformer实现回归任务_06


以上就是在第一章中,Andrew Ng介绍的三种有

用Transformer实现回归任务 回归constant_用Transformer实现回归任务_06

的方式。