linear regression
2016-03-01 00:22
190 查看
一个训练集合S 有M个训练样本(xi,yi)(x_{i},y_{i}),其中x为n维的变量。用一次线性假设:
hΘ(x)=Θ0+Θ1x1+...+Θnxn=ΘTxh_{\Theta }(x)=\Theta _{0}+\Theta _{1}x_{1}+...+\Theta _{n}x_{n}=\Theta ^{T}x
则对于整个训练集合,costfunction为:
J(Θ)=12∑i=1M(hΘ(x(i))−y(i))2J(\Theta )=\frac{1}{2}\sum_{i=1}^{M}(h_{\Theta }(x^{(i)})-y^{(i)})^{2}
如果M=1,也就是说只有一个训练样本,则J(Θ)J(\Theta )对Θj\Theta _{j}求偏导得出:
∂∂ΘjJ(Θ)=∂∂Θj12(hΘ(x)−y)2=(hΘ(x)−y)xj\frac{\partial }{\partial \Theta _{j}}J(\Theta )=\frac{\partial }{\partial \Theta _{j}}\frac{1}{2}(h_{\Theta }(x)-y)^{2}=(h_{\Theta }(x)-y)x_{j}
我们要最小化J(Θ)J(\Theta ),采用梯度下降法Θ\Theta 的更新方式为:
Θj:=Θj−α∂∂jJ(Θ)\Theta _{j}:=\Theta _{j}-\alpha \frac{\partial }{\partial j}J(\Theta )
其中α\alpha 为学习速度。如果M=1,则:
Θj:=Θj−α(yi−hΘ(xi))xij\Theta _{j}:=\Theta _{j}-\alpha(y^{i}-h_{\Theta }(x^{i}))x_{j}^{i}
如果M不等于1:
Θj:=Θj−α∑i=1m(yi−hΘ(xi))xij\Theta _{j}:=\Theta _{j}-\alpha\sum_{i=1}^{m}(y^{i}-h_{\Theta }(x^{i}))x_{j}^{i}
每次Θj\Theta _{j}的更新j从0到n+1全部更新之后才再计算J(Θ)J(\Theta ),然后再更新Θ\Theta。由于每次计算Θj\Theta _{j}都需要用到全部的训练样本,所以这种方式叫做batch gradient descent。还有一种方法是每次更新Θj\Theta _{j}只需用到一个训练样本,直到用完全部集合中的样本,再从第一个样本重新更新Θj\Theta _{j}来计算J(Θ)J(\Theta ),一直到J(Θ)J(\Theta )不再变化或者变化范围小于某个阈值(自己设定)。
hΘ(x)=Θ0+Θ1x1+...+Θnxn=ΘTxh_{\Theta }(x)=\Theta _{0}+\Theta _{1}x_{1}+...+\Theta _{n}x_{n}=\Theta ^{T}x
则对于整个训练集合,costfunction为:
J(Θ)=12∑i=1M(hΘ(x(i))−y(i))2J(\Theta )=\frac{1}{2}\sum_{i=1}^{M}(h_{\Theta }(x^{(i)})-y^{(i)})^{2}
如果M=1,也就是说只有一个训练样本,则J(Θ)J(\Theta )对Θj\Theta _{j}求偏导得出:
∂∂ΘjJ(Θ)=∂∂Θj12(hΘ(x)−y)2=(hΘ(x)−y)xj\frac{\partial }{\partial \Theta _{j}}J(\Theta )=\frac{\partial }{\partial \Theta _{j}}\frac{1}{2}(h_{\Theta }(x)-y)^{2}=(h_{\Theta }(x)-y)x_{j}
我们要最小化J(Θ)J(\Theta ),采用梯度下降法Θ\Theta 的更新方式为:
Θj:=Θj−α∂∂jJ(Θ)\Theta _{j}:=\Theta _{j}-\alpha \frac{\partial }{\partial j}J(\Theta )
其中α\alpha 为学习速度。如果M=1,则:
Θj:=Θj−α(yi−hΘ(xi))xij\Theta _{j}:=\Theta _{j}-\alpha(y^{i}-h_{\Theta }(x^{i}))x_{j}^{i}
如果M不等于1:
Θj:=Θj−α∑i=1m(yi−hΘ(xi))xij\Theta _{j}:=\Theta _{j}-\alpha\sum_{i=1}^{m}(y^{i}-h_{\Theta }(x^{i}))x_{j}^{i}
每次Θj\Theta _{j}的更新j从0到n+1全部更新之后才再计算J(Θ)J(\Theta ),然后再更新Θ\Theta。由于每次计算Θj\Theta _{j}都需要用到全部的训练样本,所以这种方式叫做batch gradient descent。还有一种方法是每次更新Θj\Theta _{j}只需用到一个训练样本,直到用完全部集合中的样本,再从第一个样本重新更新Θj\Theta _{j}来计算J(Θ)J(\Theta ),一直到J(Θ)J(\Theta )不再变化或者变化范围小于某个阈值(自己设定)。
相关文章推荐
- android studio 新建项目错误
- 2016-02-29
- 网络编程中的序列化和反序列化
- CACurrentMediaTime , CFAbsoluteTimeGetCurrent, NSDate 区别
- 2016/3/1 淘宝 腾讯 网易 css初始化代码 以及最基础的初始化
- UItextFied 的属性
- PHP中isset,empty,is_null的使用方法和区别
- Android 中 ListView分组排序显示数据
- JSP通过Servlet提交表单数据并显示
- vim基本使用
- Linux设备模型(2)_Kobject
- UVa1587
- MySQL知识(二十四)——MySQL日志
- 利用Fiddler 解SSL加密 数据包
- 什么是usbmuxd? iDevice通过USB与桌面系统通信原理小科普
- Web 服务器基准测试,nginx+php vs Apache+php
- Web 服务器基准测试,nginx+php vs Apache+php
- Web 服务器基准测试,nginx+php vs Apache+php
- 巴什博弈_poj2368
- 模拟滤波器到数字滤波器的转化