ML笔记——正规方程

目录

    • 想法
    • 数学表示
    • 胡思乱想时刻


想法

对于一个连续的函数,比如: y=ax2+bx+c y = a x 2 + b x + c 的极值点可以通过求导来确定。
对于 y=2ax+b y ′ = 2 a x + b ,当 y=0 y ′ = 0 时,有 x=b2a x = − b 2 a ,此时取得极值。

数学表示

对于代价函数 J(θ)=12mmi=1(hθ(xi)yi)2, θn+1 J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 ,   θ ∈ R n + 1
令每一个 θj θ j , θjJ(θ)=0 ∂ ∂ θ j J ( θ ) = 0
解得 θ=(XTX)1XTY θ = ( X T X ) − 1 X T Y

胡思乱想时刻

  1. 这个“解得”莫名的离奇有木有?

    首先,重新考虑一下,假设函数 hθ(x)=nk=0θkxk h θ ( x ) = ∑ k = 0 n θ k x k
    将其表示成向量的形式就是
    hθ(x)=θTX h θ ( x ) = θ T X ,其中的 θ=θ0θ1θn, X=x0x1xn θ = [ θ 0 θ 1 ⋮ θ n ] ,   X = [ x 0 x 1 ⋮ x n ]
    当考虑有 m m 个训练数据时,
    X=x10x20xm0x11x21xm1x1nx2nxmn, Y=y1y2ym X = [ x 0 1 x 1 1 … x n 1 x 0 2 x 1 2 … x n 2 ⋮ ⋮ ⋱ ⋮ x 0 m x 1 m … x n m ] ,   Y = [ y 1 y 2 ⋮ y m ]
    hθ(x)y h θ ( x ) − y 可表示为:
    hθ(x)y=hθ(x1)y1hθ(x2)y2hθ(xm)ym=θ0x10+θ1x11+...+θnx1ny1θ0x20+θ1x21+...+θnx2ny2θ0xm0+θ1xm1+...+θnxmnym=x10x20xm0x11x21xm1x1nx2nxmnθ0θ1θny1y2ym=XθY h θ ( x ) − y = [ h θ ( x 1 ) − y 1 h θ ( x 2 ) − y 2 ⋮ h θ ( x m ) − y m ] = [ θ 0 x 0 1 + θ 1 x 1 1 + . . . + θ n x n 1 − y 1 θ 0 x 0 2 + θ 1 x 1 2 + . . . + θ n x n 2 − y 2 … θ 0 x 0 m + θ 1 x 1 m + . . . + θ n x n m − y m ] = [ x 0 1 x 1 1 … x n 1 x 0 2 x 1 2 … x n 2 ⋮ ⋮ ⋱ ⋮ x 0 m x 1 m … x n m ] [ θ 0 θ 1 ⋮ θ n ] − [ y 1 y 2 ⋮ y m ] = X θ − Y
    之后,对于每个 j j θjJ(θ)=0 ∂ ∂ θ j J ( θ ) = 0 可以写成
    1mmi=1(θ0xi0+θ1xi1+...+θnxinyi)xij=1mmi=1xij(hθ(xi)yi)=0 1 m ∑ i = 1 m ( θ 0 x 0 i + θ 1 x 1 i + . . . + θ n x n i − y i ) x j i = 1 m ∑ i = 1 m x j i ( h θ ( x i ) − y i ) = 0
    展开写成方程组的形式
    1m[x10(hθ(x1)y1)+x20(hθ(x2)y2)+...+xm0(hθ(xm)ym)]=01m[x11(hθ(x1)y1)+x21(hθ(x2)y2)+...+xm1(hθ(xm)ym)]=01m[x1n(hθ(x1)y1)+x2n(hθ(x2)y2)+...+xmn(hθ(xm)ym)]=0 { 1 m [ x 0 1 ( h θ ( x 1 ) − y 1 ) + x 0 2 ( h θ ( x 2 ) − y 2 ) + . . . + x 0 m ( h θ ( x m ) − y m ) ] = 0 1 m [ x 1 1 ( h θ ( x 1 ) − y 1 ) + x 1 2 ( h θ ( x 2 ) − y 2 ) + . . . + x 1 m ( h θ ( x m ) − y m ) ] = 0 ⋮ 1 m [ x n 1 ( h θ ( x 1 ) − y 1 ) + x n 2 ( h θ ( x 2 ) − y 2 ) + . . . + x n m ( h θ ( x m ) − y m ) ] = 0
    将上述方程在转化为向量的形式
    1mx10x11x1nx20x21x2nxm0xm1xmnhθ(x1)y1hθ(x2)y2hθ(xm)ym=0 1 m [ x 0 1 x 0 2 … x 0 m x 1 1 x 1 2 … x 1 m ⋮ ⋮ ⋱ ⋮ x n 1 x n 2 … x n m ] [ h θ ( x 1 ) − y 1 h θ ( x 2 ) − y 2 … h θ ( x m ) − y m ] = 0 →
    用向量 θ, X, Y θ ,   X ,   Y 表示得
    1mXT(XθY)=0 1 m X T ( X θ − Y ) = 0 →
    解得 θ=(XTX)1XTY θ = ( X T X ) − 1 X T Y
    :斯坦福机器学习中有关于正规方程的推导,推导过程涉及一些向量的定理;此外,网上也有较多的正规方程的推导过程,比如这个知乎专栏。还有就是要注意矩阵是否可逆,当数据选取不恰当时,引起矩阵中裂向量线性相关,导致矩阵不可逆;当所选数据量小于参数的个数时,方程无解,也会导致矩阵不可逆。

  2. 计算机语言能进行向量操作么?

    python中有导入numpy之后,可以进行矩阵操作,就像这样。
    至于C++,好像有这个。

你可能感兴趣的:(Machine,Learning)