上节中,我们讲了正规方程。在这节中,我们将学习正规方程以及不可逆性。本节的概念较为深入,所以可以将它看作是选学材料。
我们要讨论的问题如下:
当我们计算θ=(XTX)-1XTy的时候,万一矩阵XTX是不可逆的话怎么办?
如果懂一点线性代数的知识,我们就会知道有些矩阵可逆,而有些矩阵不可逆。我们称不可逆的矩阵称为奇异或退化矩阵。其实XTX不可逆的情况很少发生,在Octave里,如果你用pinv(X' *X) *X' *y来计算θ,事实上我们会得到正解。在Octave里有两个函数可以求解矩阵的逆,一个被称为pinv,另一个被称为inv。但是只要你使用pinv函数,它就能计算出你想要的θ值(即使矩阵XTX不可逆)。
矩阵XTX不可逆通常有两种最常见的原因。
- 第一个原因是:如果由于某些原因,你的学习问题包含了多余的特征。例如,在预测住房价格时,如果x1是以平方英尺为单位的房子面积,x2是以平方米为单位的房子面积。因为1米等于3.28英尺,所以这两个特征值将始终满足x1=(3.28)2*x2。如果你在线性代数上非常熟练,你会知道这两个特征是不是可以像这样用一个线性方程联系起来。如果这样的话,矩阵XTX是不可逆的。
- 第二个原因是:你在运行的学习算法有很多特征值(m≤n)。例如,现在有10个训练样本(即m=10),但有100个调整数量(即n=100)。接着你要找到合适的n+1维参数向量θ,这意味着你要从10个训练样本中你要找到一个101维的参数向量,有时会成功,但这并不是一个好主意。因为我们之后将会看到要配置101个参数时,10个训练样本还是有点少。稍后我们将看到为什么配置很多参数时,这些数据会太少了。但是,当我们碰到m≤n这种情况的时候,我们会看能否删除某些特征,或者使用一种叫做正则化的方法(在后面的课程将会讲到,在这个方法中,即使你有一个相对比较小的训练样本,它可以让你使用很多的特征,配置很多参数)。
[增加内容]θ=(XTX)-1XTy的推导过程
J(θ)=(1/2m)Σ(hθ(xi)-yi)2 (i从1一直加到m)
其中,hθ(x)=θT=θ0x0+θ1x1+θ2x2+……+θnxn。
将向量表达形式转为矩阵表达形式,我们有J(θ)=(1/2)(Xθ-y)2,其中X为m行n列的矩阵,θ为n行1列的矩阵。
下面对J(θ)进行如下变换:
J(θ)=(1/2)(Xθ-y)T(Xθ-y)
=(1/2)(XTθT-yT)(Xθ-y)
=(1/2)(θTXTXθ-θTXTy-yTXθ-yTy)
接下来对J(θ)求偏导,要用到dAB/dB=AT,dXTAX=2AX。
所以有:对J(θ)求偏导 = (1/2)(2XTXθ-XTy-(yTX)T-0)
= (1/2)(2XTXθ-XTy-yXT-0)
= XTXθ-XTy
令XTXθ-XTy=0,则有θ=(XTX)-1XTy。
或者吴恩达的斯坦福机器学习公开课cs229 第二节课后半段的推导过程如下:
总结:
如果你发现矩阵XTX是奇异矩阵或者是不可逆的,我们可以做的是:
- 看特征里是否有一些多余的特征。类似我们在上面举的x1和x2,是线性相关的或者互为线性函数的。如果确实有一些多余的特征,我们可以删除其中一个,无须两个特征都保留。删除至没有多余的特征为止。
- 如果没有多余的特征,就要检查是不是有过多的特征。如果特征数实在太多了,在少一些不影响的情况下,我们可以删除一些特征或者考虑使用正规化方法。