[斯坦福大学2014机器学习教程笔记]第四章-正规方程

    到目前为止,咱们一直在使用梯度降低法来求解(经过一步步迭代来收敛到全局最小值)。相反地,正规方程提供的一种求解θ的解法。因此咱们再也不须要运行迭代算法,而是能够直接一次性求解θ的最优值。算法

    事实上,正规方程也有优势,也有一些缺点。但在讲它的优缺点和如何使用正规方程以前,让咱们先对这个算法有一个直观的理解。下面咱们来看一个例子。函数

    咱们假设有一个很是简单的代价函数J(θ)。它就是一个实数θ的函数。因此如今假设θ只是一个标量,或者只是一个实数值,而函数是θ的二次函数。因此它的图像以下所示。学习

    那么,怎么最小化一个二次函数呢?咱们知道,咱们能够对函数进行求导并让导数值为0。这样,咱们就会求得使J(θ)最小的θ值。这是θ为实数的一个简单的例子。可是,咱们一般碰到的问题中,θ不是一个实数,而是一个n+1维的参数向量,代价函数J是这个向量的函数,也就是θ0,θ1,θ2,……θn的函数。(J(θ01,……θn)=(1/2m)Σ(hθ(xi)-yi)2)  [Q1:这里是m仍是n呢?首先,咱们要搞清楚n和m表明什么。n表示特征量的数目,m表示样本的数量。]spa

    咱们要如何最小化这个代价函数?设计

    事实上,微积分告诉咱们有一个方法能作到:就是逐个对参数θj求J的偏导数,而后把它们所有置零。若是咱们这样作,而且求出θ01,……θn的值。这样就能获得最小化代价函数J的值。若是你真的作完微积分,并求出θ01,……θn的值,这个偏微分最终可能很复杂。blog

    下面让咱们来看一个例子。假如如今有m=4个训练样本。数学

    为了实现正规方程法,咱们要作的就是在数据集中再加上一列,对应额外特征变量的x0,它的取值永远是1。接下来咱们要作的,就是构建一个矩阵X。这个矩阵包括了全部训练样本的全部特征变量。咱们要对y值进行相似的操做。咱们取咱们想要预测的值,而后构建一个向量y。全部,X是一个m*(n+1)的矩阵,y是一个m维向量。最后,咱们用矩阵X和向量y计算θ值。设θ=(XTX)-1XTy,这样咱们就能获得使代价函数最小化的θ。table

    在通常状况下,假设如今有m个训练样本,从(x(1),y(1))一直到(x(m),y(m))和n个特征变量。全部每一个训练样本x(i)多是一个以下所示的向量(一个n+1维特征向量)。咱们接下来构建矩阵的方法也被称为设计矩阵。每一个训练样本都给出一个像下图左侧同样的特征向量,咱们要作的就是取第一个向量的转置,而后让第一个向量的转置称为设计矩阵X的第一行。同理,一直取到第m个向量的转置。变量

    举个具体的例子,假如咱们除了x0以外只有一个特征变量,那么咱们的设计矩阵X以下图所示。方法

    咱们就能获得一个m*2维矩阵。这就是如何构建矩阵X。而向量y就是把全部结果放在一块儿获得一个m维向量。

    最后构建好设计矩阵X和向量y以后,咱们就能够计算θ=(XTX)-1XTy。

    下面咱们就来说一下θ=(XTX)-1XTy这个式子。

  • 什么是(XTX)-1

            (XTX)-1是XTX的逆矩阵。具体的说,若是令A=XTX(XT是一个矩阵,XTX也是一个矩阵),那么(XTX)-1就是矩阵A的逆(A-1)。先计算XTX,再计算它的逆。

  • 在Octave中,计算这个量的命令为:pinv(X' *X) *X' *y。在Octave中X'用来表示X的转置。(X' *X)计算的是XTX;pinv是计算逆的函数,pinv(X' *X)计算的是XTX的逆;而后再乘XT,再乘y。
  • 根据数学知识,其实咱们能够证出θ=(XTX)-1XTy这个式子算出的θ值,能够最小化线性回归的代价函数J(θ)。

    还记得咱们以前讲过的特征缩放吗?事实上,若是咱们使用正规方程,咱们就不须要特征缩放。若是你使用正规方程,即便你的特征量的取值如0≤x1≤1,0≤x2≤1000,0≤x3≤0.00001,也没有关系。可是,若是使用的是梯度降低法,特征缩放就很是重要了

  • 咱们何时使用梯度降低法,何时使用正规方程法呢?下面咱们讲一下关于它们的优缺点。

          假如咱们有m个训练样本,n个特征变量。

梯度降低法 正规方程法

缺点:

1.须要选择学习速率α。这一般表示要运行不少次来尝试不一样的学习速率α。

2.须要更屡次的迭代(取决于具体细节,计算可能会很慢)。

缺点:

正规方程法为了求解参数θ须要求解 (XTX)-1,而 XTX是一个n*n的矩阵,对于大多数计算应用来讲,实现逆矩阵的计算代价以矩阵维度的三次方增加(O(n3))。所以,若是特征变量n的数目很大的话,计算这个逆矩阵的代价是很是大的。此时计算速度也会很是慢。

优势:

1.梯度降低法在特征变量不少的状况下,也能运行地很好,即便有上百万个特征变量。

优势:

1.不须要如今学习速率α,全部这就会很方便。

2.也不须要迭代,因此不须要画出J(θ)的曲线来检查收敛性,或者采起任何的额外步骤。

    因此,若是n很大的话,使用梯度降低算法会比较好。若是n比较小的话,正规方程法可能会好一点。那么,什么算大什么算小呢?

    若是n是上万的,那么这个时候应用正规方程法的求解速度会开始变得有点慢,此时可能梯度降低法会好点(可是也不是绝对的)。若是n远大于此,那么这个时候使用梯度降低法会好点。

相关文章
相关标签/搜索