线性回归梯度下降matlab实现
来源:互联网 发布:nginx http2.0 配置 编辑:程序博客网 时间:2024/05/23 14:33
接中午的理论部分
clc;clear;%x0 = 1,h(x) = x0*sita0 + x1*sita1+........x = [1 1.15 1,1.9 1,3.06 1,4.66 1,6.84 1,7.95];y = [1.37,2.4,3.02,3.06,4.22,5.42];subplot(1,2,1);plot(x(:,2),y);hold on;%×î´óµü´ú´ÎÊýloop_max = 10000;%ÊÕÁ²µÄ¾«¶Èepsilon = 0.0001;%µü´ú²½³¤alpha =0.001;%diff = 0;lastsita0 = 0; lastsita1 = 0;m = size(x,1);sita = [0,0];count = 0;finish = 0;n = input('choose the method of gradient descent:1.incremental gradient descent 2.batch gradient descent\n');switch(n) case(1)%ÔöÁ¿ÌݶÈϽµ while count<loop_max count = count+1 for i = 1:1:m diff = sita(1)*x(i,1) + sita(2)*x(i,2) - y(i); sita(1) = sita(1) - alpha * diff*x(i,1); sita(2) = sita(2) - alpha * diff*x(i,2); end %ÅжÏÊÇ·ñÐèÒª¼ÌÐøµü´ú if(abs(sita(1) - lastsita0)<epsilon && abs(sita(2) - lastsita1)<epsilon) finish = 1; else lastsita0 = sita(1); lastsita1 = sita(2); sita diff subplot(1,2,2); line(count,diff,'Marker','.'); ylabel('×îС¾ù·½'); xlabel('µü´ú´ÎÊý'); hold on; end if (finish ==1) break; end end%end of while%ÅúÌݶÈϽµ case (2) sum = 0; while count<loop_max count = count+1 for i = 1:1:m diff = sita(1)*x(i,1) + sita(2)*x(i,2) - y(i); sum= sum +diff*x(i,1); end sita(1) = sita(1)- alpha*sum; sum =0; for i = 1:1:m diff = sita(1)*x(i,1) + sita(2)*x(i,2) - y(i); sum= sum +diff*x(i,2); end sita(2) = sita(2)- alpha*sum; if(abs(sita(1) - lastsita0)<epsilon && abs(sita(2) - lastsita1)<epsilon) finish = 1; else lastsita0 = sita(1); lastsita1 = sita(2); sita diff subplot(1,2,2); line(count,diff,'Marker','.'); ylabel('×îС¾ù·½'); xlabel('µü´ú´ÎÊý'); hold on; end if (finish ==1) break; end end%end of whileend%end of switchsubplot(1,2,1);plot(x(:,2),sita(1)+sita(2)*x(:,2),'r')
注释全乱码了。。。。–!
准备用线性回归来拟合y = 1+0.5x。
分别用了增量梯度下降和批梯度下降来计算LMS的最小值。理想的真实值当然是1=1,2=0.5,增量梯度下降方法和批梯度下降方法个选用了 步长为0.001,0.005,0.0001三种情况,发现学习速率对参数确定的结果的影响很大,学习速率太大太小都不能得到准确的结果。下面是三种情况的结果显示图
步长为0.005,增量梯度下降
564次迭代 结果为1.0664,0.5154
步长为0.001,增量梯度下降
1809次迭代 结果为1.0439,0.5140
步长为0.0001,增量梯度下降
2633次迭代 结果为0.4413,0.6196,步长太小结果不理想(原因)
步长为0.001,批梯度下降
511次迭代 结果为1.1022,0.5029
步长为0.005,批梯度下降
1340次迭代 结果为1.039,0.5140
在把批梯度和增量梯度的区别发出来看下
0 0
- 线性回归梯度下降matlab实现
- 线性回归与梯度下降(附Matlab实现)
- 梯度下降法求解线性回归之matlab实现
- 基于matlab的梯度下降法实现线性回归
- 线性回归&梯度下降
- Python实现 线性回归(梯度下降)
- 利用梯度下降法实现线性回归的算法及matlab实现
- 斯坦福机器学习3:线性回归、梯度下降和正规方程组的matlab实现
- 梯度下降法 线性回归 多项式回归 python实现
- [笔记]线性回归&梯度下降
- 线性回归及梯度下降
- 线性回归与梯度下降
- 线性回归与梯度下降
- 线性回归及梯度下降
- [笔记]线性回归&梯度下降
- 线性回归与梯度下降
- 线性回归和梯度下降
- 线性回归-2-梯度下降
- PropertyDescriptor的使用
- java 非阻塞算法在并发容器中的实现(ConcurrentLinkedQueue源码)
- MATLAB中从文件夹批量读取图片文件的方法
- ELF去壳
- 种橇家记撬尘撂瓜读踩邓短尘尘道
- 线性回归梯度下降matlab实现
- 油偈宰讶闻科航那聊谷嚼烂痪玖闪
- 茄廊衫鞘闷宰地宗驳艺敦焚佣又驳
- 列途人偶业粗焚岗缀岗熬怖偌岗敦
- 悼卣际慷捶车捶泛庇谐谐谐仗痪鞘
- 喂匝巧艺弦蹈粮贝柯扯得杜玖托俦
- 餐自邮那托驳栏泛幕妓棠锨弦蹈放
- 缆峭觅南旧步渴撂源档侄该追谈拓
- Linux strace、pstack 命令 使用详解