使用随机梯度算法对高斯核模型进行最小二乘学习法的MATLAB程序源码分析

  1. n=50;N=1000;x=linspace(-3,3,n)';X=linspace(-3,3,N)';
  2. pix=pi*x;y=sin(pix)./(pix)+0.1*x+0.05*randn(n,1);
  3. hh=2*0.3^2; t0=randn(n,1);e=0.1;
  4. for o=1:n*1000
  5. i=ceil(rand*n);
  6. ki=exp(-(x-x(i)).^2/hh);t=t0-e*ki*(ki'*t0-y(i));
  7. if(norm(t-t0)<0.000001),break,end
  8. t0=t;
  9. end
  10. K=exp(-(repmat(X.^2,1,n)+repmat(x.^2',N,1)-2*X*x')/hh);
  11. F=K*t;
  12. figure(1);clf;hold on;axis([-2.8 2.8 -0.5 1.2]);
  13. plot(X,F,'g-');plot(x,y,'bo');



刚学习MATLAB,看到书上这段源码试着研究了一下。原书(图解机器学习)中第七行if语句有点印刷错误。


第一行:此行主要是为了生成50个随机样本点和1000个测试点的x值(n=50;N=1000;x=linspace(-3,3,n)';X=linspace(-3,3,N)';)


linspace是Matlab中的均分计算指令,用于产生x1,x2之间的N点行线性的矢量。其中x1、x2、N分别为起始值、终止值、元素个数。若默认N,默认点数为100。
linspace后的单引号表示转置


第二行:此行主要是为了生成50个随机样本点的y值(pix=pi*x;y=sin(pix)./(pix)+0.1*x+0.05*randn(n,1);)

MATLAB中 /是传统意义上的矩阵的除法,而./是两个矩阵的对应元素相除  乘法、次方同理

randn(N,1)就是产生服从方差为1,均值为0 ( 即N(0,1) )的Gaussian分布的随机噪音


 

第三行:hh是高斯核模型(K(x,c)=exp(-||x-c||^2/2h^2))的分母   t0=randn(n,1); 初始化t0      e=0.1;设定梯度下降的步幅为0.1

 

第四行:进入循环体


第五行:ceil(x):大于x 的最小整数

1,rand  生成均匀分布的伪随机数。分布在(0~1)之间
   主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数
             rand(m,n,'double')生成指定精度的均匀分布的伪随机数,参数还可以是'single'
             rand(RandStream,m,n)利用指定的RandStream(随机种子)生成伪随机数


2,randn 生成标准正态分布的伪随机数(均值为0,方差为1)
   主要语法:和上面一样


3,randi 生成均匀分布的伪随机整数

主要语法:randi(iMax)在开区间(0,iMax)生成均匀分布的伪随机整数
randi(iMax,m,n)在开区间(0,iMax)生成mXn型随机矩阵
 r = randi([iMin,iMax],m,n)在开区间(iMin,iMax)生成mXn型随机矩阵


第六行:计算t直到满足第七行要求norm(t-t0)<0.000001

exp(x):e的x次方

第七行:满足则退出循环,否则继续

1、如果A为矩阵
n=norm(A) 
返回A的最大奇异值,即max(svd(A))
n=norm(A,p) 
根据p的不同,返回不同的值
p返回值

1     返回A中最大一列和,即max(sum(abs(A)))

2      返回A的最大奇异值,和n=norm(A)用法一样

inf    返回A中最大一行和,即max(sum(abs(A’)))

fro   A和A‘的积的对角线和的平方根,即sqrt(sum(diag(A'*A)))


2、如果A为向量
norm(A,p)
返回向量A的p范数。即返回 sum(abs(A).^p)^(1/p),对任意 1<p<+∞.
norm(A)
返回向量A的2范数,即等价于norm(A,2)。
norm(A,inf) 
返回max(abs(A))
norm(A,-inf) 
返回min(abs(A))

第七行if语句写错了,应该是if(norm(t-t0)<0.000001),break,end

 

第八行:刷新t0,继续下降


第九行:结束循环体

第十行:

repmat(A,m,n):处理大矩阵且内容有重复时使用,其功能是以A的内容堆叠在(MxN)的矩阵B中,B矩阵的大小由MxN及A矩阵的内容决定,如果A是一个3x4x5的矩阵,有B = repmat(A,2,3)则最后的矩阵是6x12x5

 

第十一行:


第十二行:设定绘制区域

第十三行:绘制N,绘制n


  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值