使用梯度下降进行一元线性回归

Step1:选择函数模型:y=wx+b
Step2:选择损失函数:


Step3:

Step4:根据公式:


来更新w和b,最终得到最优解。

梯度下降函数代码如下:

function [ww,bb,ee]=myGradientDes(x,y,w,b,s,n)
%x,y-样本,w-权值初始值,b-偏置项初始值,s-学习率,n-迭代次数
m=length(x);
for i=1:nerror=1/(2*m).*sum((b+w.*x-y).^2);ww(i)=w;bb(i)=b;ee(i)=error;b2=b-s*1/m.*sum((b+w.*x-y)*1);w2=w-s*1/m.*sum((b+w.*x-y).*x);b=b2;w=w2;
end
end

作者使用的是自己收集的身高体重的数据。
设置不同的学习率并打出损失函数和权值随迭代次数的变化曲线,代码如下:

%%设置不同学习率
LRate=[0.0015,0.15,0.3,0.6,1];
color={'r-','b-','y-','c-','m-'};
for i =1:5[w,b,e]=myGradientDes(x,y,-2,0,LRate(i),200);hold onplot(w,color{i});
end
legend('0.0015','0.15','0.3','0.6','1');
xlabel('迭代次数'),ylabel('w');
title('不同学习率下的w变化曲线');
figure
for i =1:5[w,b,e]=myGradientDes(x,y,-2,0,LRate(i),200);hold onplot(e,color{i});
end
legend('0.0015','0.15','0.3','0.6','1');
title('不同学习率下的损失函数值的变化曲线');
xlabel('迭代次数'),ylabel('LossFunction Value');

结果如下图所示

通过上图可以看出,学习率越小,找到最优解时,需要迭代的次数越多,且损失函数的值变化的较为缓慢;当学习率较大时,找到最优解时,需要迭代的次数较少,且损失函数的值变化的较为迅速。

(MATLAB)使用梯度下降进行一元线性回归相关推荐

  1. 梯度下降及一元线性回归[python代码](二)

    第一章.AI人工智能入门之梯度下降及一元线性回归(2) 目录 第一章.AI人工智能入门之梯度下降及一元线性回归(2) 一.线性回归是什么? 二.线性回归的应用 三.线性回归的一般形式 四.一元线性回归 ...

  2. 【视频】什么是梯度下降?用线性回归解释和R语言估计GARCH实例

    全文链接:http://tecdat.cn/?p=23606 梯度下降是一种优化算法,能够为各种问题找到最佳解决方案(点击文末"阅读原文"获取完整代码数据). 梯度下降是什么? 梯 ...

  3. python 梯度下降法实现一元线性回归

    一.简单过一下算法流程 ''' 梯度下降法实现一元线性回归 一元线性函数: y = ax + b 实际数据服从: y = x + 2 初始模型: y = 0.1*x + 0.1 ''' import ...

  4. 梯度下降原理及线性回归代码实现(python/java/c++)

    "梯度下降"顾名思义通过一步一步迭代逼近理想结果,当达到一定的精度或者超过迭代次数才退出,所以所获得的结果是一个近似值.在其他博客上面基本都有一个通俗的比喻:从山顶一步步下山.下面 ...

  5. 【机器学习】线性回归之梯度下降、多元线性回归概述

    线性回归是一种监督学习方法.  对每个样本来说: Hypothesis: 即: 其中, 为预测值, 为样本的第i个特征,且:  为该特征下的权重,bias偏差.线性回归就是要在已有的样本特征和标签下学 ...

  6. 梯度下降:求线性回归

    梯度下降的直线拟合 实现说明 给定若干个x,yx, yx,y并且求得一个最佳的y=ax+by = ax + by=ax+b,也就是二元一次方程组的解. 先放上给定的散点,以及求得的线性回归的直线的图片 ...

  7. 利用梯度下降法求解一元线性回归和多元线性回归

    文章目录 原理以及公式 [1]一元线性回归问题 [2]多元线性回归问题 [3]学习率 [4]流程分析(一元线性回归) [5]流程分析(多元线性回归) 归一化原理以及每种归一化适用的场合 一元线性回归代 ...

  8. matlab用梯度下降拟合回归直线

    看了神经网络的梯度下降(Gradient Descent)逼近的方法之后就写了一个拟合散点(y= kx+b)的程序,原理是使方差最小(对拟合直线来说这样的算法肯定不算是好算法). x=(1:10)'; ...

  9. 梯度下降求解一元二次函数

最新文章

  1. Android之ListView异步加载网络图片(优化缓存机制)
  2. 如何实现网络负荷分担
  3. Python打造一款多线程端口扫描器
  4. NSUserDefaults的一些用法
  5. 2013年06月电脑公司GHOSTXPSP3装机版◆年中推荐◆
  6. 怎么让员工服从管理_职场 | 在职场中,遇到不服从管理的员工,该怎么办呢?...
  7. ASP.NET 2.0 中Cookies的Expires属性详解
  8. c++ 编程规范技巧
  9. 《Adobe Audition CC经典教程》——1.5 使用外部连接器
  10. python播放WAVE文件
  11. 日历 C语言算法,【求助】万年历算法
  12. RS232和RS485标准在DB9公/母头上的接线定义
  13. vbv参数buffer init
  14. ASP与JSP的比较
  15. 运用js计算个人税收
  16. 什么是Android手机
  17. 【fecmall】fecyo-1.5.1开源版本发布 - 重构优惠券部分
  18. 2JS-操作BOM对象
  19. 是时候抛弃 Eclipse 转向 IntelliJ IDEA了
  20. 前端开发基础 HTML+CSS+JS

热门文章

  1. Spring MVC拦截器实现用户登录权限验证案例
  2. 计算机应用基础 东师 离线,东师1609计算机应用基础离线作业(8页)-原创力文档...
  3. linux脚本生成数字写入文本,4.2 编写Shell脚本(P80-85)——《Linux就该这么学》学习笔记16...
  4. c语言程序设计 江宝钏 实验九,c语言程序设计,江宝钏著,实验九
  5. mysql 取模分区_MySQL分区
  6. 小米路由器4 bootloader_无线路由器刷机中,Breed详细使用教程,一些注意事项
  7. 牛客网软件测试机考题库,为什么编程题本地测试通过,可是提交时却总报错。求大神们指点。...
  8. html form urlencode,form-data和x-www-form-urlencode的区别
  9. 传输分析_医院智能物流传输系统运营管理和效益分析
  10. 一步一步带你搭建SpringCloud微服务