前言
本机器学习笔记是跟着原斯坦福大学吴恩达老师cs229课程学习后做的课后笔记。每次课程都会涉及到很多数学知识,我在记录课程核心内容的同时,会把数学基础知识在其它博文中单独记下,并在《机器学习笔记》系列博文中用到时给出链接。
笔记都是按照本人的理解去写的,给出的数学基础知识也只是本人薄弱的地方,并不适合所有人。如有问题欢迎给我留言。
数学公式使用Letex编辑,原文博客http://blog.csdn.net/rosetta
正规方程
上一节梯度下降法可以计算出能使 j j 最小化的 θ θ 值。另外还有一种能计算出使 j j 最小化的 θ θ 值的方法叫正规方程(Normal Equations),这种算法会更精确,并且不需要像梯度下降法一样需要迭代。
本节课需要用到大量的数学知识,主要是矩阵、矩阵求导、向量、梯度等数学概念,由于毕业后都数学都忘完了,为了搞清楚这些东西,花了好长一段时间,后续我会整理相关基础,下面先开始使用正规方程推导 θ θ 的过程。
先定义设计矩阵design matrix X X 为 m∗n m ∗ n 大小的矩阵,它表示训练样本,
X=⎧⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪−−−x(1)Tx(2)T⋮ x(m)T−−−⎫⎭⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪ X = ⟮ − x ( 1 ) T − − x ( 2 ) T − ⋮ − x ( m ) T − ⟯
定义
y⃗ y → 为
m m 维向量,它包含所有训练集中的目标结果值
y⃗ =⎧⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪y(1)y(2)⋮y(m)⎫⎭⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪ y → = ⟮ y ( 1 ) y ( 2 ) ⋮ y ( m ) ⟯
Xθ=⎧⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪x(1)Tθx(2)Tθ⋮x(m)Tθ⎫⎭⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪=⎧⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪hθ(x(1))hθ(x(2))⋮hθ(x(m))⎫⎭⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪ X θ = ⟮ x ( 1 ) T θ x ( 2 ) T θ ⋮ x ( m ) T θ ⟯ = ⟮ h θ ( x ( 1 ) ) h θ ( x ( 2 ) ) ⋮ h θ ( x ( m ) ) ⟯
所以
Xθ−y⃗ =⎧⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪hθ(x(1))−y(1)hθ(x(2))−y(2)⋮hθ(x(m))−y(m)⎫⎭⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪ X θ − y → = ⟮ h θ ( x ( 1 ) ) − y ( 1 ) h θ ( x ( 2 ) ) − y ( 2 ) ⋮ h θ ( x ( m ) ) − y ( m ) ⟯
对于向量
z z ,有公式
zTz=∑iz2i z T z = ∑ i z i 2 ,所以:
12(Xθ−y⃗ )T(Xθ−y⃗ )=12∑i=1m(hθ(xi)−y(i))2=J(θ) 1 2 ( X θ − y → ) T ( X θ − y → ) = 1 2 ∑ i = 1 m ( h θ ( x i ) − y ( i ) ) 2 = J ( θ )
为了求出最小的
θ θ ,需使
▽θJ(θ)=0⃗ ▽ θ J ( θ ) = 0 → ,则:
▽θJ(θ)=========▽θ12(Xθ−y⃗ )T(Xθ−y⃗ )12▽θ[(θTXT−y⃗ T)(Xθ−y⃗ )]12▽θ(θTXTXθ−θTXTy⃗ −y⃗ TXθ+y⃗ Ty⃗ )12▽θtr(θTXTXθ−θTXTy⃗ −y⃗ TXθ+y⃗ Ty⃗ )12▽θtr(θTXTXθ−y⃗ TXθ−y⃗ TXθ+y⃗ Ty⃗ )12▽θtr(θθTXTX−y⃗ TXθ−y⃗ TXθ+y⃗ Ty⃗ )12▽θ[tr(θθTXTX)−2tr(y⃗ TXθ)]12(XTXθ+XTXθ−2XTy⃗ )XTXθ−XTy⃗ (1)(2)(3)(4)(5)(6)(7)(8)(9) (1) ▽ θ J ( θ ) = ▽ θ 1 2 ( X θ − y → ) T ( X θ − y → ) (2) = 1 2 ▽ θ [ ( θ T X T − y → T ) ( X θ − y → ) ] (3) = 1 2 ▽ θ ( θ T X T X θ − θ T X T y → − y → T X θ + y → T y → ) (4) = 1 2 ▽ θ t r ( θ T X T X θ − θ T X T y → − y → T X θ + y → T y → ) (5) = 1 2 ▽ θ t r ( θ T X T X θ − y → T X θ − y → T X θ + y → T y → ) (6) = 1 2 ▽ θ t r ( θ θ T X T X − y → T X θ − y → T X θ + y → T y → ) (7) = 1 2 ▽ θ [ t r ( θ θ T X T X ) − 2 t r ( y → T X θ ) ] (8) = 1 2 ( X T X θ + X T X θ − 2 X T y → ) (9) = X T X θ − X T y →
式子9就叫做正规方程,则 XTXθ−XTy⃗ =0⃗ ,XTXθ=XTy⃗ , X T X θ − X T y → = 0 → , X T X θ = X T y → , 最终计算出 θ θ :
θ=(XTX)−1XTy⃗ (10) (10) θ = ( X T X ) − 1 X T y →
所以从上述推导过程来看,求
θ θ 不需要进行迭代,但需要求
XTX X T X 逆矩阵。
公式推导
下面详细解释上述公式的每一步推导过程:
1. 1到2式,做转置,使用公式 (AB)T=BTAT ( A B ) T = B T A T
2. 2到3式直接展开
3. 3到4式,实数的迹还是它本身,所以加入迹符号 tr t r 后值不变
4. 4到5式,因为 θTXTy⃗ θ T X T y → 是个实数,实数的转置还是它本身,所以 θTXTy⃗ =(θTXTy⃗ )T=y⃗ Xθ θ T X T y → = ( θ T X T y → ) T = y → X θ 。这里 θTXTy⃗ θ T X T y → 为什么是实数?
5. 5到6式,使用公式 trABC=trCAB=trBCA t r A B C = t r C A B = t r B C A ,所以 θTXTXθ=θθTXTX θ T X T X θ = θ θ T X T X
6. 6到7式,由于 y⃗ Ty⃗ y → T y → 和 θ θ 无关,所以对它求导为0,把这去掉,然后对式子做一个整理。
7. 7到8式,使用了两个公式,蓝色部分使用:
▽AtrABATC=CAB+CTABT ▽ A t r A B A T C = C A B + C T A B T
所以
▽θtr(θAIBθTATXTXC)=XTXCθAIB+XTXCTθAITBT=XTXθ+XTXθ ▽ θ t r ( θ ⏟ A I ⏟ B θ T ⏟ A T X T X ⏟ C ) = X T X ⏟ C θ ⏟ A I ⏟ B + X T X ⏟ C T θ ⏟ A I T ⏟ B T = X T X θ + X T X θ
樱红色使用公式:
▽AtrAB=BT ▽ A t r A B = B T
所以
▽θtr(y⃗ TXBθA)=XTy⃗ BT ▽ θ t r ( y → T X ⏟ B θ ⏟ A ) = X T y → ⏟ B T
如有疑问之处欢迎加我微信交流,请备注“CSDN博客”
![机器学习笔记(2)---监督学习之正规方程_第1张图片](http://img.e-com-net.com/image/info8/ec2fb78038384e27bfb5df5e1cd54064.jpg)