到目前为止,咱们一直在使用梯度降低法来求解(经过一步步迭代来收敛到全局最小值)。相反地,正规方程提供的一种求解θ的解法。因此咱们再也不须要运行迭代算法,而是能够直接一次性求解θ的最优值。算法
事实上,正规方程也有优势,也有一些缺点。但在讲它的优缺点和如何使用正规方程以前,让咱们先对这个算法有一个直观的理解。下面咱们来看一个例子。函数
咱们假设有一个很是简单的代价函数J(θ)。它就是一个实数θ的函数。因此如今假设θ只是一个标量,或者只是一个实数值,而函数是θ的二次函数。因此它的图像以下所示。学习
那么,怎么最小化一个二次函数呢?咱们知道,咱们能够对函数进行求导并让导数值为0。这样,咱们就会求得使J(θ)最小的θ值。这是θ为实数的一个简单的例子。可是,咱们一般碰到的问题中,θ不是一个实数,而是一个n+1维的参数向量,代价函数J是这个向量的函数,也就是θ0,θ1,θ2,……θn的函数。(J(θ0,θ1,……θn)=(1/2m)Σ(hθ(xi)-yi)2) [Q1:这里是m仍是n呢?首先,咱们要搞清楚n和m表明什么。n表示特征量的数目,m表示样本的数量。]spa
咱们要如何最小化这个代价函数?设计
事实上,微积分告诉咱们有一个方法能作到:就是逐个对参数θj求J的偏导数,而后把它们所有置零。若是咱们这样作,而且求出θ0,θ1,……θn的值。这样就能获得最小化代价函数J的值。若是你真的作完微积分,并求出θ0,θ1,……θ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的逆矩阵。具体的说,若是令A=XTX(XT是一个矩阵,XTX也是一个矩阵),那么(XTX)-1就是矩阵A的逆(A-1)。先计算XTX,再计算它的逆。
还记得咱们以前讲过的特征缩放吗?事实上,若是咱们使用正规方程,咱们就不须要特征缩放。若是你使用正规方程,即便你的特征量的取值如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远大于此,那么这个时候使用梯度降低法会好点。