预测算法|高斯过程回归GPR算法原理及其优化实现

在这里插入图片描述
在这里插入图片描述

目前,常用的机器学习方法主要有支持向量机(support vector machine,SVM)、反向传播神经网络(backpropagation neural network,BPNN)等非概率方法以及高斯过程回归(gaussian process regression,GPR)等概率方法。

而GPR作为一种非参数概率核模型[1],不仅可以用于预测,而且可以为预测中的每个点提供置信度区间,从而将预测的不确定性量化,并且GPR有着严格的统计学习理论基础,对处理高维数、小样本、非线性等复杂的问题具有很好的适应性。且GPR泛化能力强,与神经网络、支持向量机相比,具有容易实现、超参数自适应获取、非参数推断灵活以及输出具有概率意义等优点。

本文将介绍GPR的原理及其优化实现(很久前一位粉丝想看的内容)。​

00 目录

1 GPR模型原理

2 优化算法及其改进概述

3 结合优化算法的GPR预测模型

4 实验结果

5 源码获取

01 GPR模型原理

GPR是一个植根于贝叶斯统计的较为流行的非参数机器学习技术,因为它能够在小数据集上有出色的预测准确性 [2]而没有过拟合或欠拟合的问题[3],并且能够给出关于模型输出的不确定性的信息[4]。

GPR有三个主要步骤:

(1) 根据主观的先验知识选择合适的核函数并定义初始超参数;

(2) 使用概率分布生成先验模型并对其进行训练,即通过训练样本寻找最优超参数;

(3) 对测试样本进行预测,给出估计结果的均值和方差。

在其中,如何获得最优超参是值得研究的问题,常见如传统的基于梯度算法或现代智能优化算法的方法都可用于其中,而负对数边际似然(NLML)值通常被设置为目标函数。

下面具体讲解一下GPR的理论内容[5]:

1.1 预测

高斯过程定义为随机变量的集合,其中任意点都服从联合高斯分布。这些变量由均值u(x)和协方差函数(也即核函数)k(x,x’)确定,其中协方差函数表示为空间中任意两个随机输入变量对应的随机输出变量的中心矩,能够用于衡量训练集与测试集相似或相关的程度,是影响 GPR 模型预测性能的关键因素。他们被定义为:

在这里插入图片描述

高斯过程(GP)为可表现为如下:

在这里插入图片描述

由于高斯过程灵活且性质主要由核函数所决定,一般使用GPR进行建模时,可假设其均值函数μ(x)=0,并预先选择核函数的形式。

实际数据通常包含一定噪声,因此对于回归模型,把噪声ε加入到观察目标数据y中,可以得到GPR模型:
在这里插入图片描述

其中: x为输入向量,f为函数值,y为受噪声污染的观测值,进一步假设噪声:
在这里插入图片描述

可以得到观测值y的先验分布为:

在这里插入图片描述

以及观测值y和预测值f*的联合先验分布为:
在这里插入图片描述

其中:K(X,X)为n阶对称正定的协方差矩阵,K(X,x*)=K(x*,X)T为测试点x*与训练集的输入X之间的协方差矩阵。

由此可以计算出预测值f*的后验分布为:

在这里插入图片描述

其中,

在这里插入图片描述

f-即为f的估计值,cov(f*)为测试样本的协方差矩阵。

1.2 训练

GPR的训练其实是选择合适的协方差函数以及确定其最优超参数的过程。不同的协方差函数确定了在该高斯过程先验下目标函数可能具有的性质。比如,周期协方差函数表示目标函数具有周期性;平方指数协方差函数表示目标函数具有无穷阶导数,即处处光滑。在实际应用中,使用最广泛的为平方指数协方差函数,具体形式如下:

在这里插入图片描述

式中,σ2f为信号方差,S=dig(l^2),l为输入向量各个维度的带宽,也叫方差尺度。每种不同的协方差函数都存在一些像σ2f和l这样的超参数,超参数的取值决定了协方差函数的具体形状,同时也决定了从高斯过程中所采样函数的特征。参数集合θ={S,σ2f,σ2n}即为超参数,一般通过采用共轭梯度下降法等优化方法使求偏导后的负对数边际似然(negative log marginal likelihood,NLML)最小化来求解超参数。NLML表示为:
在这里插入图片描述

获得最优超参数后,利用预测部分的最后一张图中的式子即可获得测试点预测值及其方差。

关于理论部分是作者根据自己的理解作出的简要阐述,因此可能有错误或讲的不清楚的地方,也推荐大家看以下的文献进行深入研究:

Nonparametric modeling of ship maneuvering motion based on Gaussian process regression optimized by genetic algorithm
MathWorks关于GPR的推导:https://ww2.mathworks.cn/help/stats/gaussian-process-regression-models.html
文献5

GPR可以优化的地方之一在于其优化方法上,其本身的共轭梯度寻优方法对初始值有很强的依赖性,但目前初始值的设定没有理论依据,若初始值设置不当,可能会使其在搜索过程中陷入局部最优甚至无法收敛,因此这部分可以引入优化算法进行提升。

02 优化算法及其改进概述

前面的文章中作者介绍了许多种优化算法及其改进算法,本文中作者以PSO、GWO、WOA、SSA为例进行展示。

03 结合优化算法的GPR预测模型

优化算法主要作用是寻找最优超参数,以GWO的优化过程为例,GWO-GPR的流程图如下:
在这里插入图片描述

04 实验结果

以均方根差(Root Mean Square Error,RMSE) 、平均绝对百分误差( Mean Absolute Percentage Error,MAPE) 、平均绝对值误差 ( Mean Absolute Error,MAE) 和可决系数(coefficient of determination,R^2)作为评价标准。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

05 源码获取

代码注释详细,一般只需要替换数据集就行了,注意数据的行是样本,列是变量,源码提供2个版本。

1.免费版

其主要是GPR预测模型,数据为多数入单输出,Matlab编写,对于需要进行一些简单预测或者是想学习GPR算法的MATLAB实现的同学足够了。

获取方式——公众号(KAU的云实验台)后台回复**:GPR**

不过通过MATLAB调用GPR模型时卡卡发现有些数据集会出现预测值有NaN的问题,目前这个问题我还不能解决,有知道的朋友也可以告诉一下我,改进成功的话卡卡可以请你喝杯奶茶嘿嘿。

2.付费版

包含BP、GPR、PSO-GPR、GWO-GPR、WOA-GPR、SSA-GPR预测模型程序(MATLAB),程序的注释详细,并且此程序进行优化算法的替换更为简单,卡卡之前介绍过的智能优化算法及其改进都可以进行替换。

由于前面说到的NaN值的问题,因此购买此版本之前建议先在免费版尝试一下各位的数据集是否可用,观察效果后再决定。

获取方式——公众号(KAU的云实验台)后台回复:IGPR 或 点击文末“ 阅读原文 ”

在这里插入图片描述

在这里插入图片描述

[1] Rasmussen,C.E.,2004. Gaussian processes in machine learning.

[2] A. Kamath, R.A. Vargas-Hern´andez, R.V. Krems, T. Carrington, S. Manzhos, Neural networks vs Gaussian process regression for representing potential energy surfaces:A comparative study of fit quality and vibrational spectrum accuracy, J. Chem.Phys. 148 (2018).

[3] C.F.G.D. Santos, J.P. Papa, Avoiding overfitting: A survey on regularization methods for convolutional neural networks, ACM Comput. Surv. (CSUR) 54 (2022)1–25.

[4] Wenqi, F., Shitia, Z., Hui, H., Shaobo, D., Zhejun, H., Wenfei, L., Zheng, W., Tianfu, S.,Huiyun, L., 2018. Learn to make decision with small data for autonomous driving:deep gaussian process and feedback control. J. Adv. Transp., 8495264.

[5]何志昆,刘光斌,赵曦晶等.高斯过程回归方法综述[J].控制与决策,2013,28(8):1121-1129,1137.

另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。

如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看(ง •̀_•́)ง(不点也行)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/219706.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

keil5 兼容keil4 程序 并修改为ST-Link下载器 (按图操作即可)

1.下载keil4 程序支持包 安装到keil5目录 (一般会自动识别目录) 2.上述兼容包下载ok后,重启keil5 点击魔术棒设置ST-Link 完成以上操作 即可正常编译烧录

C语言-字符串

字符数组 char word[] {‘H’, ‘e’, ‘I’, ‘I’, ‘o’, ‘!’}; 这不是C语言的字符串, 因为不能用字符串的方式做计算: 字符串 char word[] {‘H’, ‘e’, ‘I’, ‘I’, ‘o’, ‘!’, ‘\0’}; 这是C语言的字符串: 以0&#xf…

今日问题:解决最新Chrome和chromedriver版本对不上的问题

from selenium import webdriver #from .chrome.webdriver import WebDriver as Chrome from selenium.webdriver.common.by import By from time import sleep driver webdriver.Chrome()driver.get("https://www.baidu.com/") driver.maximize_window()#窗口最大化…

Spring boot -- 学习HttpMessageConverter

文章目录 1. Json格式数据获取2. 为什么返回Json格式的数据2.1 注解SpringBootAppliaction2.1.1 SpringBootConfiguration2.1.2 ComponentScan2.1.3 EnableAutoConfiguration2.1.3.1 HttpMessageConvertersAutoConfiguration2.1.3.2 WebMvcAutoConfiguration 2.2 注解RestContr…

ValueError: not enough values to unpack (expected 3, got 2)

我在使用cv2.findContours函数中遇到以上错误,经查询找到该错误原因: 在 OpenCV 4.X 中,函数 cv2.findContours()仅有两个返回值, 其语法格式为: contours, hierarchy cv2.findContours( image, mode, method) 若不…

Git介绍与安装使用

目录 1.Git初识 1.1提出问题 1.2如何解决--版本控制器 1.3注意事项 2.Git安装 2.1Linux-centos安装 2.2Linux-ubuntu安装 2.3Windows安装 3.Git基本操作 3.1创建Git本地仓库 3.2配置Git 4.认识⼯作区、暂存区、版本库 1.Git初识 1.1提出问题 不知道你工作或学习时…

大文本限制录入文字后通过输入法鼠标单击还可继续超限额录入问题

textInpEl.on(keyup propertychange, "textarea", function () { var realMaxLength $(this).parent().parent().find(".maxNum").text(); //真实的最大长度 var endFontLen $(this).val().length; if (endFontLen < rea…

OpenCV-python:图像像素类型转换与归一化

目录 1.图像像素类型转换 2. 图像像素转换适用情形 3.图像归一化 4.归一化方法支持 5.归一化函数 6.知识笔记 1.图像像素类型转换 图像像素类型转换是指将图像的像素值从一种类型转换为另一种类型。常见的像素类型包括无符号整数类型&#xff08;如8位无符号整数、16位无符…

面向注解编程—Spring 注解看这一篇就够了(2)

面向注解编程—Spring注解大全&#xff08;AOP篇&#xff09; AOP英文全称&#xff1a;Aspect Oriented Programming&#xff08;面向切面编程、面向方面编程&#xff09;&#xff0c;其实说白 了&#xff0c;面向切面编程就是面向特定方法编程。 AOP的作用&#xff1a;在程序…

2024年口碑比较好的猫罐头有哪些?2024年口碑比较好的猫罐头盘点

想必铲屎官都知道给猫咪长期吃主食罐头的好处了吧&#xff01;主食罐头不仅营养丰富&#xff0c;还能让猫咪顺便补充水分。有时候猫咪食欲不佳&#xff0c;一罐主食罐头就能让它们胃口大开呢。 猫罐头侠登场&#xff01;养猫这么久了我就把我吃的不错的猫罐头分享一下&#xf…

彼此的远方

那天两个人互相表白了心意&#xff0c;在那天那刻确定了彼此相爱&#xff0c;没有鲜花&#xff0c;没有礼物。 男孩的世界曾陷入黑暗&#xff0c;冷清而又孤寂&#xff0c;女孩带着光和热来了&#xff0c;后来&#xff0c;女孩成为了男孩的太阳。女孩以为男孩是远方的风…

--enable-preview JDK预览新功能运行打包

--enable-preview JDK预览功能运行打包 1. 这里以JDK19的预览功能虚拟线程为例2. 解决方案&#xff1a;在pom文件中加入build 1. 这里以JDK19的预览功能虚拟线程为例 以下这段代码是无法运行的。会报错 SpringBootApplication public class SpringBootOkhttpApplication {pub…

Helplook VS Google Docs:一对一比较

还记得Google Docs在2006年一炮走红的时候吗&#xff1f;它很大程度地改变了协作方式&#xff0c;也减少了附加文件和频繁保存的麻烦。相比Microsoft Word&#xff0c;很多人更喜欢Google Docs的简单性。 但是时代也在不断地发展。像HelpLook这样的新竞争对手也可以提供先进的…

划时代!Eclipse AI编码新方式——Copilot4Eclipse即将发布

在本月早些时候&#xff0c;MyEclipse官方宣布了将于本月晚些时候发布全新插件Copilot4Eclipse&#xff0c;它是同类型插件中的第一个&#xff0c;能帮助开发者直接在Eclipse IDE中无缝地使用GitHub Copilot AI编码辅助。 MyEclipse一次性提供了巨量的Eclipse插件库&#xff0c…

【openssl】RSA 生成公钥私钥 |通过私钥获取公钥

通过博客&#xff1a;Window系统如何编译openssl 编译出openssl.exe&#xff08;位于apps文件夹下&#xff09;。 现在需要使用它获得公钥私钥、通过私钥获取公钥 目录 说明&#xff01;&#xff01;&#xff01; 一.定位openssl.exe目录 二、进入命令cmd 三、生成私钥 …

ES6之Symbol

ES6中为我们新增了一个原始数据类型Symbol&#xff0c;让我为大家介绍一下吧&#xff01; Symbol它表示是独一无二的值 Symbol要如何创建 第一种创建方式&#xff1a; let sy Symbol()第二种创建方式&#xff1a; let sy Symbol.for()具体独一无二在哪呢&#xff1f;它们的地…

一句话搞定R语言画图|生存曲线、密度、山脊等130+图形任你选

大家好&#xff0c;今天我们分享一个神奇的网站&#xff0c;提供各种可视化图片的代码和详解&#xff0c;生信小博士公众号内回复冒号后面的关键词领取网站地址&#xff1a;神奇网站 1.一R代码添加显著性 1#1----set.seed(123)library(ggplot2)library(ggstatsplot)ggbetweens…

客户案例:SMC2威胁感知升级,保障金融行业邮件安全

客户背景 某基金公司是一家在业界享有广泛声誉的综合型资产管理公司&#xff0c;总部位于广州&#xff0c;在北京、上海、香港等地区均设有公司&#xff0c;业务范围遍布全球&#xff0c;凭借其卓越的投资业绩和专业的基金管理服务&#xff0c;赢得了广大投资者的高度认可。 该…

浪潮信息KeyarchOS的飞跃之路

1.背景 在正式向大家介绍KOS之前&#xff0c;我们先关注这样一些问题。 传统操作系统在大规模数据处理、高性能计算和人工智能应用方面面临着一些瓶颈问题&#xff0c;包括存储和访问效率、数据传输和通信效率、并行计算性能等等问题。为了能够更好的改进这些问题&#xff0c…

盘后股价狂飙16% — GitLab的DevOps产品在AI时代展现强劲财务业绩

12月4日&#xff08;周一&#xff09;在美股收盘后&#xff0c;GitLab的股价狂飙16%&#xff01;人工智能驱动的DevOps产品继续凸显其平台能力的优势。 GitLab 12 月 4 日股价图 GitLab报告第三季度收入同比增长32%&#xff01;根据粗略统计&#xff0c;全球已经有接近1万家企…