AndrewNg - 线性回归【2】正规方程组
梯度下降法是用来计算J(θ)的惯用方法之一,不过通常我们可以通过另一途径取代这种迭代算法。这样思考,如果我们直接对J求
1.矩阵求导
对于函数f : Rm×n↦R,即从m×n矩阵映射到实数的f,定义
举个栗子,假如A=[A11A21A12A22],f(A)=32A11+5A212+A21A22:
∇Af(A)=⎡⎣32A2210A12A21⎤⎦.
同时我们还要引进一个迹的概念:trA=∑ni=1Aii。当矩阵A、B、C、D满足一些简单的条件时,他们的迹有一些性质值得一提:
(1)trAB=trBA,(2)trABC=trCAB=trBCA,(3)trABCD=trDABC=trCDAB=trBCDA,(4)trA=trAT,(5)tr(A+B)=trA+trB,(6)traA=atrA.
而相应的,矩阵求导和迹结合起来还有一些性质:
(1)∇AtrAB=BT,(2)∇ATf(A)=(∇Af(A))T,(3)∇AtrABATC=CAB+CTABT,(4)∇A|A|=|A|(A−1)T
2.换个角度看最小二乘
给定一组训练集,定义矩阵X为
X=⎡⎣⎢⎢⎢⎢⎢——————(x(1))T(x(2))T⋮(x(m))T——————⎤⎦⎥⎥⎥⎥⎥
同时y⃗ 是X对应的m维样本分类结果向量:
所以根据上一节我们有hθ(x(i))=(x(i))Tθ,即:
Xθ−y⃗ =⎡⎣⎢⎢⎢⎢⎢(x(1))T(x(2))T⋮(x(m))T⎤⎦⎥⎥⎥⎥⎥−⎡⎣⎢⎢⎢⎢⎢y(1)y(2)⋮y(m)⎤⎦⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢hθ(x(1))−y(1)hθ(x(2))−y(2)⋮hθ(x(m))−y(m)⎤⎦⎥⎥⎥⎥⎥
因为有zTz=∑iz2i,所以:
12(Xθ−y⃗ )T(Xθ−y⃗ )=12∑i=1m(hθ(x(i))−y(i))2=J(θ).
那么现在我们要干的一件事,就变成了最小化J(求导取导数为0):
另∇θJ(θ)=0则有XTXθ=XTy⃗ 即θ=(XTX)−1XTy⃗ (注意:这里其实还有一个巧妙的地方就是XTX是可以写成⟨xi,xj⟩这样的形式,也就意味着这里可以使用核函数计算)。
至此,我们没有使用任何的迭代过程却求出了θ,是不是很爽!不过为什么这样的回归问题我们要选择使用最小二乘法作为我们的cost function J呢,欲知后事如何,且听下回分晓!