高斯过程的matlab程序实现及其参数优化
x=(-7.5:1:7.5)';
y=sin(x);
预测点:
xstar=(-7.5:0.5:7.5)';
超参数初始值:
loghyper = [log(1.0); log(1.0); log(0.1)]; %分别为length-scale,sigmaf,sigman并取ln对数
求最大似然估计和倒数或者预测均值和方差
[nlZ dnlZ] = GPR(loghyper, x,y)
[mu, S2] = GPR(loghyper, x,y,xstar)
协方差中的(欧式距离)^2函数
function C = SQDIST(Sample,Pre);
%求样本的欧氏距离并放入对应的协方差矩阵中,可以看作
% for i=1:n
% for j=1:n
% K(i,j)=norm(x(i,:)-x(j,:))^2;
% end
% end
if nargin==1[n,D1] = size(Sample);C=zeros(n);for d = 1:D1 C=C+(repmat(Sample(:,d), 1 ,m) - repmat(Sample(:,d)', n,1)).^2; end
end
%求样本与样本点间的欧氏距离并放入对应的协方差矩阵中,可以看作
% for i=1:m
% for j=1:n
% K(i,j)=norm(x(i,:)-xpre(j,:))^2;
% end
% end
if nargin==2[n,D1] = size(Sample);[m,D2] = size(Pre);C=zeros(n,m);for d = 1:D1 C=C+(repmat(Sample(:,d), 1 ,m) - repmat(Pre(:,d)', n,1)).^2; end
end
end
函数->求预测值和方差或者求最大似然估计及其梯度
function [outputArg1,outputArg2] = GPR(inputloghyper, inputx,inputy,inputxstar)
% m个dim维的样本
% inputx:m*dim
% inputy:m*1
% inputxstar:n*dim
% inputloghyper:log(hyper)=[theta(1),theta(2),theta(3)]
ell = exp(inputloghyper(1)); % characteristic length-scale
sf2 = exp(2*inputloghyper(2)); % sigmaf
sn2 = exp(2*inputloghyper(3)); % sigman:noise variance
[m,dim]=size(inputx);
%按照公式2.31求协方差矩阵%
Kxx=zeros(m,m);
KKxx=sf2*exp(-0.5*SQDIST(inputx/ell,inputx/ell));
Kxx=Kxx+KKxx;
KKxx=sn2*eye(size(inputx,1));
Kxx=Kxx+KKxx;
%cholesky分解
L=chol(Kxx)';
alpha=L'\(L\inputy);
%求最大似然估计及其梯度
if nargin==3% minlogpyx,求最大似然估计的相反数,优化时求minimizeoutputArg1=0.5*inputy'*alpha+sum(log(diag(L)))+0.5*m*(2*pi);%gradientoutputArg2 = zeros(size(inputloghyper));W = L'\(L\eye(m))-alpha*alpha';%求K的关于超参数的偏导数,这里注意,我们的参数是lnx,这里sf2的偏导数是exp(2*logtheta)' =2*exp(2*logtheta)=2*sf2,而不是sf^2'=2*sf=2*exp(logtheta)dell = sf2*exp(-SQDIST(inputx/ell)/2).*SQDIST(inputx/ell); dsf = 2*sf2*exp(-SQDIST(inputx/ell)/2);dsn = 2*sn2*eye(size(inputx,1));%求迹,这里参考GPML,但是为什么这样算还不知道,直接求迹不对,望大神指点迷津outputArg2(1)=sum(sum(W.*dell))/2;outputArg2(2)=sum(sum(W.*dsf))/2;outputArg2(3)=sum(sum(W.*dsn))/2;
end
%求预测值和方差
if nargin==4n=size(inputxstar,1);Kxxstar=zeros(m,n);KKxxstar=sf2*exp(-0.5*SQDIST(inputx/ell,inputxstar/ell));Kxxstar=Kxxstar+KKxxstar;%求均值fmean=Kxxstar'*alpha;outputArg1=fmean;v = L\Kxxstar;V=sf2+sn2-sum(v.*v)';%方差减去sn2V = V-exp(2*inputloghyper(3));outputArg2=V;
end
end
结果:
nlZ =48.6337
dnlZ =-14.49629.44110.5962
mu =-0.9273-0.6795-0.21670.28950.70270.94650.97010.75510.3491-0.1420-0.5949-0.9024-0.9908-0.8364-0.4765-0.00000.47650.83640.99080.90240.59490.1420-0.3491-0.7551-0.9701-0.9465-0.7027-0.28950.21670.67950.9273
S2 =0.00980.02180.00970.01550.00960.01430.00960.01400.00950.01390.00950.01390.00950.01390.00950.01390.00950.01390.00950.01390.00950.01390.00950.01400.00960.01430.00960.01550.00970.02180.0098
画图:mu+-2sigma
figure
f = [mu+2*sqrt(S2);flipdim(mu-2*sqrt(S2),1)];
fill([xstar; flipdim(xstar,1)], f, [7 7 7]/8, 'EdgeColor', [7 7 7]/8);
hold on
plot(xstar,mu,'k-','LineWidth',2);
plot(x, y, 'k+', 'MarkerSize', 17);
figure
errorbar(xstar, mu, 2*sqrt(S2), 'g');
hold on
plot(x, y, 'k+', 'MarkerSize', 17)
结果
高斯过程的matlab程序实现及其参数优化相关推荐
- matlab粒子群加约束条件_多目标粒子群(PSO)与MATLAB程序视频教程及动态优化问题约束条件...
[内容简介]<粒子群算法与应用和MATLAB程序详解视频>共15章186节视频,总学时1917分钟,合32小时.主要内容包括:粒子群算法(PSO)基本概念与算法流程,粒子群算法利用MATL ...
- 无功优化的matlab程序,遗传算法的无功优化matlab实现
[实例简介] 基于遗传算法的无功优化matlab实现方法软件包,调试基本通过,可直接下载应用,具体例子可以自己修改一下原代码. [实例截图] [核心代码] matlab实现方法软件包,调试基本通过,可 ...
- 18-考虑柔性负荷的综合能源系统低碳经济优化调度MATLAB程序
资源地址: 18考虑柔性负荷的综合能源系统低碳经济优化调度MATLAB程序_柔性负荷优化调度程序资源-CSDN文库 参考文献: 考虑柔性负荷的综合能源系统低碳经济优化调度_薛开阳 考虑用户侧柔性负荷的 ...
- Java外接Matlab程序(详细步骤)
检查Matlab中JDK版本和自己的JDK版本是否一致,不一致需要调整 步骤1:创建Matlab函数,函数文件名computeAdd.m,函数功能为返回两数相加之和. function result ...
- matlab中有解耦指令吗,powertrain-mounting_Opti 发动机悬置系统解耦率、固有频率以及参数优化程序 matlab 266万源代码下载- www.pudn.com...
文件名称: powertrain-mounting_Opti下载 收藏√ [ 5 4 3 2 1 ] 开发工具: matlab 文件大小: 397 KB 上传时间: 2014-02-12 ...
- PSO粒子群算法微电网优化调度(微电网孤岛运行优化调度)matlab程序
PSO粒子群算法微电网优化调度(微电网孤岛运行优化调度)matlab程序 [含风电.光伏.微型燃机.储能蓄电池.燃料电池] 参考文献:基于改进粒子群算法的微电网优化调度 摘 要:当今全球普遍面临着能源 ...
- 基于双层优化的微电网系统规划设计方法matlab程序(yalmip+cplex)
基于双层优化的微电网系统规划设计方法matlab程序(yalmip+cplex) 参考文献:基于双层优化的微电网系统规划设计方法 摘要:规划设计是微电网系统核心技术体系之一.从分布式电源的综合优化(组 ...
- 用matlab进行批量优化,多目标优化实例和matlab程序
<多目标优化实例和matlab程序>由会员分享,可在线阅读,更多相关<多目标优化实例和matlab程序(2页珍藏版)>请在人人文库网上搜索. 1.NSGA-II 算法实例目前的 ...
- 基于遗传算法的微电网经济运行优化matlab程序
基于遗传算法的微电网经济运行优化matlab程序 摘 要: 微电网作为智能电网的一部分,是分布式电源接入电网的一种有效手段,微电网经济运行是其中一个重要研究方面.考察微电网经济性,通常是从最小运行成本 ...
最新文章
- pytorch 归一化与反归一化
- java 状态迁移图_kafka 实战笔记
- 【C语言】第九章 复杂数据类型与结构体 题解
- Oracle 11gR2 ORA-12638 身份证明检索失败解决方法
- Python中直接查看对象值和使用print()输出的区别
- python actor_Python定义一个Actor任务
- C++ container member map
- easyswoole验证码的使用
- SAE J1939协议读取车辆故障码
- ubuntu18.04安装中文输入法ibus
- 华为管理学案例分析_华为战略管理案例分析.docx
- Powerdesigner下载安装
- python实现时序异常检测_时序预测 01 - 异常检测 Smoothed z-score algorithm 标准化的一些实践、调参总结 -Python/pandas/numpy...
- CSS3模拟小仓鼠一直奔跑的动画特效
- 服务器下多网站设置,网站配置多个服务器
- 【树莓派基础小实验笔记】1. 点亮LED二极管
- matlab绘图实验六,matlab 实验一 特殊函数与图形
- Linux·内核编译错误
- 【Nginx 流量控制】控制一秒处理多少请求
- swift json
热门文章
- Microsoft Remote Desktop远程连接Ubuntu 22.04桌面
- 国内个人免费在SCI、IEEE等数据库下载文献方法
- 关于检测浏览器是否支持flash的js代码
- windows10ftp搭建,实现主机与虚拟机文件传输文件,以及解决FTP文件夹错误,无法与服务器建立连接。
- Java设计模式:访问者模式,同一数据对象,不同访问者索取目的不同
- 每天记录学习的新知识 :Navigation
- 无线网络渗透-1: 802.11 AP扫描
- android操作系统的开发语言组成
- 2018年统计用区划代码和城乡划分代码(截止2018年10月31日)
- Sql Server 按姓氏笔画排序