之前刷过一次斯坦福大学吴恩达教授的Coursera公开课,但那次刷的时候我还太年轻,所以也没做笔记,而且到现在为止,也都快忘的差不多了。过不了多久就要开始保研复试了,这里想再花一个月的时间重新过一遍,也在优快云上做好记录。
一、多变量线性回归
在上一个小节中,我们介绍了单一变量进行线性回归的方法:假设函数h(x)、代价函数J(θ)、梯度下降法等等。
假设函数h(x)
但对于我们日常中的事物,单变量的情形是很少的, 大多数情况下都是多个变量共同决定一件事情的结果,那这个时候,我们就要对单变量的线性回归做一定的调整。
以上就是调整之后的假设函数h(x),可以看到其实并没有改变太多,只不过是把一个变量的情况拓展到了多个变量。
Gradient Descent
假设函数h(x)变化,代价函数也跟着变化,自然梯度下降的算法也会有所变化,但其实本质上都是将单变量拓展为多变量而已,没有什么特殊的,下面就只针对单变量和多变量的不同进行分析。
这张PPT中左边部分为单变量的梯度下降算法,右边为多变量的。可以看到,二者的形式很想,其实右边的θ0就是左边的θ0,右边的θ1,就是左边的θ1,不同的就是,右边还多了θ2、θ3,对应于多出来的特征的参数。
需要注意的是,这里无论出现多少个参数,他们都需要被同时更新!
特征归一化
这是多变量线性回归的一个特点,它需要对不同的变量进行特征归一化,也就是说要把不同变量的单位去掉,使其统一在一个量纲下进行计算,这样会有利于梯度下降法的运行。
上图展示了如果不进行梯度归一化的后果,左图是没有进行梯度归一化的J(θ),右图是进行梯度归一化之后的J(θ),图中的点表示Global Minimum,可以想象在左图中,如果学习率α选取的稍微大了一点,就会出现图中的情况,导致收敛速度慢甚至不收敛,如果学习率α选取很小倒是可以避免这种情况,但又会降低速度。而右图中就不会出现这样的问题。
上图是进行Mean Normalization,也是特征归一化的一部分,这个操作的目的是使训练数据的均值都为0,无论如何,这样也会提高梯度下降法运行的效率。
多项式回归
上面都将的是线性回归,那如果遇到变量和输出是非线性关系的,那怎么办呢?这里我们采用变量代换的思想,我们不改变假设函数,而仅仅改变数据的形式,可以看下面的例子:
我们的结果和size、size2、size3成线性关系,那我们是怎么做的呢?我们再构造一组数据为size2,令其为第二个特征,同样令size3为第三个特征,这样我们就可以继续构造线性函数来解决这个非线性问题啦!是不是很机智?
Normal Equation
在线性回归问题中,还有一个简便的解决方案,不需要迭代。这就是Normal Equation,正规方程。
这个方法在吴恩达教授的课程中并没有给出证明,所以我们在这一部分就只要背过一个公式就行了。
对,就是这个。看起来正规方程很简单是不是?但是不要忘了,这里面有一个对矩阵求逆的过程,这个过程是O(n3)的复杂度,如果n过大的话,对于计算机来说也需要花费很长的时间进行求解,那这个时候,就需要用迭代法了,迭代法的时间复杂度为O(k*n2)。
下面给出两个方法的优缺点对比:
- 梯度下降法需要选择学习率α,而正规方程法则不用
- 梯度下降法需要进行迭代,正规方程法不需要
- 梯度下降法适合工作于n比较大的时候,正规方程法适合工作于n比较小的时候
其实上边说了三条,也就记住最后一条就行了,n太大选择梯度下降,n小则选择正规方程。一般是以10,000作为界限。