欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

监督学习应用(Linear Regression)与梯度下降

程序员文章站 2022-05-27 09:53:58
...

监督学习应用(LinearRegression)与梯度下降

变量定义

m = 训练数据数目
x = 输入变量(特征) features
y = 输出变量(目标) target
(x, y) 训练数据
ith trainning example= {x(i),y(i)} 第i份训练数据

算法流程

graph TD

A[Trainning Set]-->B[Learning Algorithm]
B-->C[H, hypothesis 目标函数]

subgraph 

D[X_test]-->C
C-->E[Y_test]

end

Linear Regression

假设x0=1, 则:
线性回归的假设函数为:

{h(x)=i=0nθixi=ΘTXn=features 特征数目

于是,我们的目标就是使得:

i=1m(hθ(x(i))y(i))2
最小
为了后期的计算方便,我们的目标修改为:
J(θ)=12i=1m(hθ(x(i))y(i))2

search Algorithm使得J(θ)最小

  1. 假设,初始化Θ=0
  2. 保持改变Θ,直到使得J(θ)最小

那么,如何改变Θ ??

梯度下降算法

为了使得J(θ)最小,我们求其偏导,则可以以此确定每一个参数的前进方向。
Θi:=ΘiαddΘiJ(Θi)

简单的推导:

dJ(Θi)dΘi=212i=1m(hθ(x(i))y(i))di=1m(hθ(x(i))y(i))dΘih(x)=i=0nθixi=ΘTX,y is realdi=1m(hθ(x(i))y(i))dΘi=xidJ(Θi)dΘi=i=1m(hθ(x(i)y(i)))xi

从而:
Θi:=Θiαi=1m(hθ(x(i)y(i)))xi
其中α是控制“步长”,控制前进的幅度。

如何确定J(θ)已经最小?
J(θ)的值变化不大或者足够小的时候,我们可以认为他已经收敛,那么算法停止。

随机梯度下降算法(增量梯度下降算法)

当m很大的时候,梯度下降算法将消耗大量的时间和内存。而增量梯度下降算法则是可以节约大量的时间。

Repeat{for j=1 to m{for all i Θi:=Θiα(hθ(x(j))y(j))x(j)}}

随机梯度算法通常得到一个接近于全局最优解的可行解,但是一般不会差距太大。

一种更加广泛的表达方式

令:

ΔθJ=[dJdθ0dJdθn]

则:
{Θ:=ΘαΔθJ ΘRn+1 ΔθJRn+1

设函数f是一个m×n空间到一维空间的映射:

f:Rm×nR ,则f(A),ARm×n

ΔAf(A)=[dfdA11dfdA1ndfdAm1dfdAmn]

tr(A)=i=1nAii ,也写作:trA

Facts:trAB=trBAtrABC=trCAB=trBCAf(A)=trABΔAtrAB=BTtrA=trATΔAtrABATC=CAB+CTABT

由以上的定理,我们可以进行以下的推导:
XΘ=[(x(1))T(x(n))T]Θ=[x(1)TΘx(n)TΘ]=[hθ(x(1))hθ(x(m))]

同理,
y=[(y(1))(y(n))]$,$XΘy=[h(x(1)y(1))h(x(m)y(m))]

矩阵转置再相乘:12(XΘy)T(XΘy)=12i=1m(h(x(i))y(i))2
于是:
ΔθJ(θ)=Δθ12(XΘy)T(XΘy)=12Δθ(ΘTXTXΘΘTXTyyTXΘ+yTy)=12Δθtr(ΘTXTXΘΘTXTyyTXΘ+yTy)=12Δθ(trΘTXTXΘ2tryTXΘ)=12(XTXΘ+XTXΘXTy)=XTXΘXTy

因为目标是使得Jθ最小,则,我们令其最小为0:
XTXΘ=XTyΘ=XTyXTX

参考自【斯坦福】机器学习(Machine Learning)- 吴恩达(Andrew Ng)

相关标签: ML