在coursera上看了Andrew Ng的《Machine Learning》课程,里面讲到了正规方程(Normal Equation),现在在此记录一下推导过程。
假设函数(Hypothesis Function)为:

hθ(x)=θ0+θ1x1+θ2x2++θnxn h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n
<script type="math/tex; mode=display" id="MathJax-Element-5560">h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+\cdots+\theta_nx_n</script>
此处我们可以令 x0=1 x 0 = 1 <script type="math/tex" id="MathJax-Element-5561">x_0=1</script>.
代价函数(Cost Function):
J(θ)=J(θ0,,θn)=12mi=1m(hθ(x(i))y(i))2 J ( θ ) = J ( θ 0 , … , θ n ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2
<script type="math/tex; mode=display" id="MathJax-Element-5562">J(\theta)=J(\theta_0,\ldots,\theta_n)=\frac {1} {2m} \sum_{i=1}^{m} {(h_\theta(x^{(i)})-y^{(i)})^2}</script>
我们想要代价函数的最小解,对代价函数进行求导。因为对于向量我们有 zTz=iz2i z T z = ∑ i z i 2 <script type="math/tex" id="MathJax-Element-5563">z^Tz=\sum_{i} z_i^2</script>,所以:
J(θ)=12m(Xθy)T(Xθy) J ( θ ) = 1 2 m ( X θ − y ) T ( X θ − y )
<script type="math/tex; mode=display" id="MathJax-Element-5564">J(\theta)=\frac {1}{2m}(X\theta-y)^T(X\theta-y)</script>
因为 12m 1 2 m <script type="math/tex" id="MathJax-Element-5565">\frac {1} {2m}</script>部分对最终的解没影响,为了便于书写和计算,我们可以先将这部分舍去。对方程的转置进行化简:
J(θ)=(θTXTyT)(Xθy) J ( θ ) = ( θ T X T − y T ) ( X θ − y )
<script type="math/tex; mode=display" id="MathJax-Element-5566">J(\theta)=(\theta^TX^T-y^T)(X\theta-y)</script>
J(θ)=θTXTXθ(Xθ)TyyTXθ+yTy J ( θ ) = θ T X T X θ − ( X θ ) T y − y T X θ + y T y
<script type="math/tex; mode=display" id="MathJax-Element-5567">J(\theta)=\theta^TX^TX\theta-(X\theta)^Ty-y^TX\theta+y^Ty</script>
因为 xθy x θ 和 y <script type="math/tex" id="MathJax-Element-5568">x\theta和y</script>都是矢量,所以这两者相乘先后顺序没有关系,所以可以化简成:
J(θ)=θTXTXθ2(Xθ)Ty+yTy J ( θ ) = θ T X T X θ − 2 ( X θ ) T y + y T y
<script type="math/tex; mode=display" id="MathJax-Element-5569">J(\theta)=\theta^TX^TX\theta-2(X\theta)^Ty+y^Ty</script>
接着方程 J(θ)θ J ( θ ) 对 θ <script type="math/tex" id="MathJax-Element-5570">J(\theta)对\theta</script>进行求导:
θJ(θ)=2XTXθ2XTy=0 ∂ ∂ θ J ( θ ) = 2 X T X θ − 2 X T y = 0
<script type="math/tex; mode=display" id="MathJax-Element-5571">\frac {\partial}{\partial\theta}J(\theta)=2X^TX\theta-2X^Ty=0</script> 1
θJ(θ)=0θ ∂ ∂ θ J ( θ ) = 0 时 , 得 到 最 合 适 θ <script type="math/tex" id="MathJax-Element-5572">\frac {\partial}{\partial\theta}J(\theta)=0时,得到最合适\theta</script>
XTXθ=XTy X T X θ = X T y
<script type="math/tex; mode=display" id="MathJax-Element-5573">X^TX\theta=X^Ty</script>
两边同时乘以 XTX X T X <script type="math/tex" id="MathJax-Element-5574">X^TX</script>的逆矩阵,得:
θ=(XTX)1XTy θ = ( X T X ) − 1 X T y
<script type="math/tex; mode=display" id="MathJax-Element-5575">\theta=(X^TX)^{-1}X^Ty</script>
此即为正规方程。当 θ=(XTX)1XTy θ = ( X T X ) − 1 X T y <script type="math/tex" id="MathJax-Element-5576">\theta=(X^TX)^{-1}X^Ty</script>时,代价方程有最优解。


  1. 关于矩阵、向量、标量的一些求导https://blog.csdn.net/xidianliutingting/article/details/51673207
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐