机器学习Normal Equation的推导(不要求矩阵求导)

首先是代价函数 J ( θ ) J(\theta) J(θ)的定义为
J ( θ ) = 1 2 m ∑ i = 1 m ( θ 0 x 0 ( i ) + θ 1 x 1 ( i ) + ⋯ + θ n x n ( i ) − y ( i ) ) 2 J(\theta)=\frac{1}{2m}\sum_{i=1}^m(\theta_0x_0^{(i)}+\theta_1x_1^{(i)}+\cdots+\theta_nx_n^{(i)}-y^{(i)})^2 J(θ)=2m1i=1m(θ0x0(i)+θ1x1(i)++θnxn(i)y(i))2
对任意参数 θ j \theta_j θj求偏导,得
∂ J ( θ ) ∂ θ j = 1 m ∑ i = 1 m x j ( i ) ( θ 0 x 0 ( i ) + θ 1 x 1 ( i ) + ⋯ + θ n x n ( i ) − y ( i ) ) \frac{\partial J(\theta)}{\partial \theta_j}=\frac{1}{m}\sum_{i=1}^m x_j^{(i)}(\theta_0x_0^{(i)}+\theta_1x_1^{(i)}+\cdots+\theta_nx_n^{(i)}-y^{(i)}) θjJ(θ)=m1i=1mxj(i)(θ0x0(i)+θ1x1(i)++θnxn(i)y(i))
要求极值,则偏导等于0,有
1 m ∑ i = 1 m x j ( i ) ( θ 0 x 0 ( i ) + θ 1 x 1 ( i ) + ⋯ + θ n x n ( i ) − y ( i ) ) = 0 \frac{1}{m}\sum_{i=1}^m x_j^{(i)}(\theta_0x_0^{(i)}+\theta_1x_1^{(i)}+\cdots+\theta_nx_n^{(i)}-y^{(i)})=0 m1i=1mxj(i)(θ0x0(i)+θ1x1(i)++θnxn(i)y(i))=0
尝试把求和号打开,化成矩阵形式
[ x j ( 1 ) x j ( 2 ) ⋯ x j ( 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 ) ] = 0 \left[\begin{matrix} x_j^{(1)}&x_j^{(2)}&\cdots&x_j^{(m)} \end{matrix}\right] \left[\begin{matrix} \theta_0x_0^{(1)}+\theta_1x_1^{(1)}+\cdots+\theta_nx_n^{(1)}-y^{(1)}\\ \theta_0x_0^{(2)}+\theta_1x_1^{(2)}+\cdots+\theta_nx_n^{(2)}-y^{(2)}\\ \vdots \\ \theta_0x_0^{(m)}+\theta_1x_1^{(m)}+\cdots+\theta_nx_n^{(m)}-y^{(m)}\\ \end{matrix}\right] =0 [xj(1)xj(2)xj(m)]θ0x0(1)+θ1x1(1)++θnxn(1)y(1)θ0x0(2)+θ1x1(2)++θnxn(2)y(2)θ0x0(m)+θ1x1(m)++θnxn(m)y(m)=0
上面的第二个矩阵还可以再次展开为
[ θ 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 ] \left[\begin{matrix} \theta_0x_0^{(1)}+\theta_1x_1^{(1)}+\cdots+\theta_nx_n^{(1)}-y^{(1)}\\ \theta_0x_0^{(2)}+\theta_1x_1^{(2)}+\cdots+\theta_nx_n^{(2)}-y^{(2)}\\ \vdots \\ \theta_0x_0^{(m)}+\theta_1x_1^{(m)}+\cdots+\theta_nx_n^{(m)}-y^{(m)}\\ \end{matrix}\right]= \left[\begin{matrix} x_0^{(1)}&x_1^{(1)}&\cdots&x_n^{(1)}\\ x_0^{(2)}&x_1^{(2)}&\cdots&x_n^{(2)}\\ \vdots & \vdots & \ddots &\vdots\\ x_0^{(m)}&x_1^{(m)}&\cdots&x_n^{(m)}\\ \end{matrix}\right] \left[\begin{matrix} \theta_0\\ \theta_1\\ \vdots \\ \theta_n\\ \end{matrix}\right]- \left[\begin{matrix} y_1\\ y_2\\ \vdots \\ y_m\\ \end{matrix}\right] θ0x0(1)+θ1x1(1)++θnxn(1)y(1)θ0x0(2)+θ1x1(2)++θnxn(2)y(2)θ0x0(m)+θ1x1(m)++θnxn(m)y(m)=x0(1)x0(2)x0(m)x1(1)x1(2)x1(m)xn(1)xn(2)xn(m)θ0θ1θny1y2ym
所以,对于任一参数 θ j \theta_j θj,都有
[ x j ( 1 ) x j ( 2 ) ⋯ x j ( 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 ] ) = 0 \left[\begin{matrix} x_j^{(1)}&x_j^{(2)}&\cdots&x_j^{(m)} \end{matrix}\right] \left( \left[\begin{matrix} x_0^{(1)}&x_1^{(1)}&\cdots&x_n^{(1)}\\ x_0^{(2)}&x_1^{(2)}&\cdots&x_n^{(2)}\\ \vdots & \vdots & \ddots &\vdots\\ x_0^{(m)}&x_1^{(m)}&\cdots&x_n^{(m)}\\ \end{matrix}\right] \left[\begin{matrix} \theta_0\\ \theta_1\\ \vdots \\ \theta_n\\ \end{matrix}\right]- \left[\begin{matrix} y_1\\ y_2\\ \vdots \\ y_m\\ \end{matrix}\right] \right)=0 [xj(1)xj(2)xj(m)]x0(1)x0(2)x0(m)x1(1)x1(2)x1(m)xn(1)xn(2)xn(m)θ0θ1θny1y2ym=0
将所有参数 θ \theta θ得到的方程全部联立,就可以得到
[ 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 ) ] ( [ 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 ] ) = 0 \left[\begin{matrix} x_0^{(1)}&x_0^{(2)}&\cdots&x_0^{(m)}\\ x_1^{(1)}&x_1^{(2)}&\cdots&x_1^{(m)}\\ \vdots & \vdots & \ddots &\vdots\\ x_n^{(1)}&x_n^{(2)}&\cdots&x_n^{(m)}\\ \end{matrix}\right] \left( \left[\begin{matrix} x_0^{(1)}&x_1^{(1)}&\cdots&x_n^{(1)}\\ x_0^{(2)}&x_1^{(2)}&\cdots&x_n^{(2)}\\ \vdots & \vdots & \ddots &\vdots\\ x_0^{(m)}&x_1^{(m)}&\cdots&x_n^{(m)}\\ \end{matrix}\right] \left[\begin{matrix} \theta_0\\ \theta_1\\ \vdots \\ \theta_n\\ \end{matrix}\right]- \left[\begin{matrix} y_1\\ y_2\\ \vdots \\ y_m\\ \end{matrix}\right] \right)=0 x0(1)x1(1)xn(1)x0(2)x1(2)xn(2)x0(m)x1(m)xn(m)x0(1)x0(2)x0(m)x1(1)x1(2)x1(m)xn(1)xn(2)xn(m)θ0θ1θny1y2ym=0

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 ) ] , Θ = [ θ 0 θ 1 ⋮ θ n ] , Y = [ y 1 y 2 ⋮ y m ] X= \left[\begin{matrix} x_0^{(1)}&x_1^{(1)}&\cdots&x_n^{(1)}\\ x_0^{(2)}&x_1^{(2)}&\cdots&x_n^{(2)}\\ \vdots & \vdots & \ddots &\vdots\\ x_0^{(m)}&x_1^{(m)}&\cdots&x_n^{(m)}\\ \end{matrix}\right] ,\Theta=\left[\begin{matrix} \theta_0\\ \theta_1\\ \vdots \\ \theta_n\\ \end{matrix}\right], Y=\left[\begin{matrix} y_1\\ y_2\\ \vdots \\ y_m\\ \end{matrix}\right] X=x0(1)x0(2)x0(m)x1(1)x1(2)x1(m)xn(1)xn(2)xn(m),Θ=θ0θ1θn,Y=y1y2ym
则上述方程可写为
X T ( X Θ − Y ) = 0 X^T(X\Theta-Y)=0 XT(XΘY)=0
展开,再化简
X T X Θ − X T Y = 0 X T X Θ = X T Y Θ = ( X T X ) − 1 X T Y X^TX\Theta-X^TY=0\\ X^TX\Theta=X^TY\\ \Theta=(X^TX)^{-1}X^TY XTXΘXTY=0XTXΘ=XTYΘ=(XTX)1XTY
就可以得到Normal Equation
Θ = ( X T X ) − 1 X T Y \Theta=(X^TX)^{-1}X^TY Θ=(XTX)1XTY

直接使用这个式子求参数的话,可以避免多次迭代,而且求解出来的结果更加严格。缺点是对矩阵 X T X X^TX XTX求逆的时间复杂度是 O ( n 3 ) O(n^3) O(n3)的,当参数较多( n ≥ 1 0 5 n\ge 10^5 n105)时基本上就宣告破产了,应换用梯度下降。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值