机器学习小组知识点4&5:批量梯度下降法(BGD)和随机梯度下降法(SGD)的代码实现Matlab版1

机器学习小组知识点4&5:批量梯度下降法(BGD)和随机梯度下降法(SGD)的代码实现Matlab版

这里趁着脑子还清醒就把代码敲出来了:
亲测是没有bug的,欢迎大家来找虫。

clear all
close all
clc

%% initialization
% input x & y
x1 = [1 3 2104];        y1 = 400;
x2 = [1 3 1600];        y2 = 330;
x3 = [1 3 2400];        y3 = 369;
x4 = [1 2 1416];        y4 = 232;
x5 = [1 4 3000];        y5 = 540;

X = [x1;x2;x3;x4;x5];
Y = [y1;y2;y3;y4;y5];

N = 5;      % the number of sample

% parameter
theta_new = zeros(length(x1),1);

% iteration number
itn = 2e2;

% tolerance
tol = 1e-20;

% learning rate(stepsize)
alpha_BGD = 0.00000001;
alpha_SGD = 0.0000001;
%% main function

i = 1;       %itn index
theta_old = theta_new; 
error = 1.0;
k = 1; % SGD sample index

enenrgy = zeros(itn,1);

option = input('Enter the case(number) you want: \n 1 -> BGD. \n 2 -> SGD.\n ' )

while((i <= itn) && (error >= tol))

    switch option        

        case 1            
            % BGD
            sum_temp = 0;
                for jj = 1:N
                    sum_temp = sum_temp + ( Y(jj) - X(jj,:)*theta_old )*X(jj,:)';
                end
            theta_new = theta_old + alpha_BGD*sum_temp;

        case 2
            % SGD            
            theta_new = theta_old + alpha_SGD*( Y(k) - X(k,:)*theta_old )*X(k,:)';  

            if k == 5
                k = 1;
            else
                k = k+1;
            end

       end


    error = norm(X*theta_new-Y)^2;
    theta_old = theta_new;

    energy(i) = error;


    i = i + 1;
end

figure,plot(1:length(energy),energy),title('error(energy)');
itn = i-1
theta = theta_new
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77

如果输出图的话,大家会看到SGD误差振荡下降。说明了SGD的噪音太多然而BGD却一路向下。

				
				

算法-BGD/SGD/MBGD简单实现 - huangqihao723的博客

         梯度下降法,也称最速下降法,用当前位置负梯度作为搜索方向,靠近目标值的时候收敛速度会下降;

如果为凸函数,则目标值为全局最优值,否则,会陷入局部最优的情况

        




梯度下降法matlab实现 - yangqiang200608的博客

11-20 6020

梯度下降法又称为最速下降法,是求解无约束优化问题最简单和最古老的方法之一。对无约束最优化问题:... 来自: yangqiang200608的博客

		

【Machine Learning实验1】batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降)

上面是…

来自: carrierlxksuper的专栏



		

   在很多介绍梯度下降的书籍里…

来自: kevin_123c的博客



(1)线性回归的定义

(2)单变量线性回归
(3)cost function:评价线性回归是否拟合训练集的方法
(4)梯度下降:解决线性回归的方法之一
(5)f…

来自: 开心妙妙屋



		




		

y=[1.1;2.2;2.7;3.8];
rate=0.001;
w = zeros(1,size(x,2));
iter = 100;
while(ite…

来自: na_jssd的专栏



		

首先SGD详细原理网上一大堆,自己可以百度一下,不懂的一起可以交流一下,现在这里也会给出部分原理和例子实现。

这里考…

来自: caokaifa的博客



		

梯度下降能帮助我们找到局部最优值,取得…

来自: Duplan的专栏



no suited ad found

测试文件输入格式如下:

2 10 0.01 10
2104 3 399900
1600 3 329900
2400 3 369000
1416 …

来自: u014403897的专栏



        
m_buddy
m_buddy

关注 218篇文章

panghaomingme
panghaomingme

关注 107篇文章

Miss_yuki
Miss_yuki

关注 75篇文章

换一批

ReLU函数的数学公式很简单ReLU(x)=max(x,0),但其对DNN的贡献是巨大的。
若DN…

来自: tandyky的专栏



		

         这里只是运用BP感知器的一些知识,用delta法则方式解决一个简单的线性或者非线性可分问题,比如这里围绕的就是坐标系下的8个点,这8个点很明显的划分两类,现…

来自: 我爱智能



天津退休女教授巧用数学理论自创交易心法 一年8倍 惊诧众人 合美投资 · 燨燚
		

/* GitHub stylesheet for MarkdownPad (http://markdownpad.com) /
/
Author: Nicolas Hery - …

来自: utopiar有点乌托邦



			




			




			




			

偷偷告诉你一个天津不用上班就能轻松赚钱的办法 赟昌投资 · 燨燚

随机梯度下降算法的MATLAB实现

11-4

随机梯度下降算法SDG的MATLAB实现,数据集可到UCI数据库里下载... 使用随机梯度算法对高斯核模型进行最小二乘学习法的MATLAB程序源码分析 随机梯度下降(SGD) 梯度下...

MATLAB多种优化算法介绍

11-7

包括MATLAB优化算法分析书籍的32章每一章的详细代码说明,涉及多种优化算法... 最优化方法系列:SGD、Adam Adam优化器如何...MATLAB智能优化算法PDF及程序 立即下载 3...

		
  1. 批量梯度下降法BGD

  2. 随机梯度下降法SGD

  3. 小批量梯度下降法MBGD

  4. 总结


    来自: qwj的博客



     	

文档下载全部免费!
详情请点击资源页进行下载
http://download.csdn.net/detail/eric2016_l…

来自: Eric2016_Lv的博客



		




			




		

机器学习中常常将具体的问题抽象为数学表达,再通过最优化算法求取相关参数的最优值。其中最常用的便是基于梯度的优化算法。则可以将其总结为批量梯度下降法(BGD)、随机梯度下降法(SGD)、小…

来自: m_buddy的博客



今天介绍随机梯度下降法和反向传播,首先介绍梯度下降法。

1.梯度下降法

梯度下降法是从初始值开始,向…

来自: Miss_yuki的博客



		

具体介绍不在累述,本文主要可视化三种梯度下降的差异
先附上手动推导过程:


来自: qq_26347025的博客



		

梯度法:
由一阶泰勒级数展开式,f(x+dx) = f(x) + sum(i,df/dx(i)*dx(i)) + r(x,dx)。其中r(x,dx)为余项,当dx很小时,可忽略余项。…

来自: 小刀的专栏



		

我们把要最小化或者最大化的函数称为目标…

来自: u012507022的博客



以均方误差作为目标函数(损失函数),目的是使其值最小化,用于优化上式。

二、优化方式(Gradient Descent)
1、最速梯度下降法
a、对目标函数求导

b、沿…

来自: llx1990rl的专栏



		

M 训练样本的数量
x 输入变量,又称特征
y 输出变量,又称目标
(x, y) 训练样本,对应监督学习的输入和输出
表示第i组的x  
表示第i组的y
h(x)表示对应算法的函数
是算…

来自: Qer的博客



		




		

简单来说,有一堆实数数据,数据的格式如下:
x1,x2,x3,⋯,xn,y
所有的这些数据称为训练集,其中x称为feature,y称为target。
现在又有一些数据:
x1,x2,x…

来自: u014625162的博客



请参考线性回归 梯度下降知识点
一、线性回归(Linear Regression…

来自: 越努力越幸运越幸福



			




		

深度学习优化函数详解(0)– 线性回归问题
深度学习优化函数详解(1)– Gradient Descent 梯度下降法
深度学习优化函数详解(2)– SGD 随…

来自: 史丹利复合田的博客



		

梯度下降用处广泛,既可以用于回归也可以用于分类,在神经网络中更是作为主流方法完成网络参数估计任务。

方便起见,用二维点表示我们的训练数据集。

        …

来自: zsfcg的专栏



		

最大似然估计…

来自: Eric2016_Lv的博客



揭秘:原来眼袋重这么容易消除,白买了那么多眼霜! 崇贺商贸 · 燨燚

...和随机梯度下降法(SGD)的代码实现Matlab版 - Eric20..._CSDN博客

10-15

利用Matlab构建深度前馈神经网络以及各类优化算法的应用(SGD、mSGD、AdaGrad、RMSProp...Matlab 6篇 C++ 3篇 数据挖掘 25篇 股票入门基础 48篇 cuda程序 1篇...

		

其实通过模型来预测一个user对一个item的评分,思想类似线性回归做预测,大致如下
定义一个预测模型(数学公式),
然后确定一个损失函数,
将已有数据作为训练集,
不断…

来自: linger(心怀梦想,活在当下,知乎ID:linger liu)



		

python数据挖掘系列教程
梯度下降法算法详情参考:https://www.cnblogs.com/pinard/p/5970503.html随机梯度下…

来自: 全栈工程师开发手册(原创)



		

   批量梯度下降法(Batch Gradient Descent,简称BGD)是梯度下降法最原始的形式,它的具体思路是在更新每一参数时都使用所有的样本来进行更新,其…

来自: sinat_32329183的博客



		




		

当m很大时,所需要的时间将会很长,该梯度下降法也称为批量梯度下降法(batch gradient descent).“批量”就是表示我们需要每…

来自: ymshan92的专栏



新出的微投资赚钱方式,2018聪明的天津人都在闷声发大财! 白水塘商贸 · 燨燚
		

随机梯度下降法是用来求参数的优化算法,具体算法不过多阐述,此处采用线性拟合来实现SGD,同时使用TensorFlow进行计算,具体思路注释写的较为清楚,直接附上代码:


来自: renxingkai的博客



		




		

yi=ω1xi,1+ω2xi,2+ωjxi,j+…+by_i = \omega_1x_{i,1}+\omega_2x_…

来自: just_do_it_123的博客



		

clear
clc
% training sample data;
% p0=3;
% p1=7;
% x=1:4;
% y=p0+p1*x;
x=[2.014,1.416,1.534,0.852]…

来自: Leo_whj的博客



			

33岁小伙半年用手机玩投资,存款吓坏了父母! 福泰尔 · 燨燚
		

sgd算法是一种天生的串行的算法,当数据量大的时候们希望通过使用多个机器并行计算的…

来自: 金字塔上的蜗牛的专栏



        

你可能感兴趣的:(机器学习小组知识点4&5:批量梯度下降法(BGD)和随机梯度下降法(SGD)的代码实现Matlab版1)