好吧,你无意中碰上了冰山......

作为前奏,让我们明确指出方差和标准差的概念仅适用于标量变量;对于矢量变量(比如你自己的3d输出),方差的概念不再有意义,而是使用协方差矩阵(Wikipedia,Wolfram) .

继续前奏,你的 sigma 的形状确实如预期的那样根据 predict 方法的scikit-learn docs(即你的情况下没有编码错误):

返回:y_mean:array,shape =(n_samples,[n_output_dims])查询指向y_std的预测分布的平均值:array,shape =(n_samples,),optional查询点处预测分布的标准偏差 . 仅在return_std为True时返回 . y_cov:array,shape =(n_samples,n_samples),可选的联合预测分布的协方差,查询点 . 仅在return_cov为True时返回 .

结合我之前关于协方差矩阵的评论,第一个选择是尝试使用参数 return_cov=True 的 predict 函数(因为要求矢量变量的方差是没有意义的);但同样,这将导致16x16矩阵,而不是3x3矩阵(3个输出变量的协方差矩阵的预期形状)......

澄清了这些细节之后,让我们继续讨论这个问题的本质 .

问题的核心在于实践和相关教程中很少提及(甚至暗示)的事情:具有多个输出的高斯过程回归是 highly non-trivial ,仍然是一个活跃的研究领域 . 可以说,scikit-learn无法真正处理这个案例,尽管事实上它表面上似乎没有发出至少一些相关的警告 .

让我们在最近的科学文献中寻找对这种主张的一些佐证:

大多数GPR实现只模拟单个响应变量,因为相关多响应变量的协方差函数的制定很困难,这不仅描述了数据点之间的相关性,而且描述了响应之间的相关性 . 在本文中,我们提出了多响应GPR的协方差函数的直接公式,基于以下思想:尽管GPR对各种建模任务有很高的吸收率,但GPR方法仍然存在一些突出的问题 . 本文特别感兴趣的是需要对多个响应变量进行建模 . 传统上,一个响应变量被视为高斯过程,并且多个响应被独立建模而不考虑它们的相关性 . 这种实用且直接的方法在许多应用中被采用(例如[7,26,27]),尽管它并不理想 . 建模多响应高斯过程的关键是协方差函数的表达,其不仅描述数据点之间的相关性,还描述响应之间的相关性 .

典型的GP通常设计用于输出为单输出的场景一个标量 . 然而,多输出问题已经出现在各个领域,[...] . 假设我们尝试近似T输出{f(t},1≤t≤T,一个直观的想法是使用单输出GP(SOGP)使用相关的训练数据D(t)= {X来单独逼近它们(t),y(t)},见图1(a) . 考虑到输出以某种方式相关,单独建模可能会导致有 Value 信息的丢失 . 因此,越来越多的工程应用正在开始关于使用多输出GP(MOGP)的概念,如图1(b)所示,用于代理建模.MOGP的研究历史悠久,在地统计学界被称为多元克里格或共克里金; [...] MOGP处理输出以某种方式相关的基本假设的问题 . 因此,MOGP中的一个关键问题是利用输出相关性,使得输出可以利用彼此的信息以便提供与单独建模相比,它们具有更准确的预测效果 .

具有多个输出的过程的高斯过程分析受到以下事实的限制:与标量(单输出)情况相比,存在更少的良好类别的协方差函数 . [...]为多个输出找到“好的”协方差模型的难度可能会产生重要的实际后果 . 协方差矩阵的不正确结构会显着降低不确定性量化过程的效率,以及克里金推理的预测效率[16] . 因此,我们认为,协方差模型可能在共同克里金法中发挥更为深远的作用[7,17] . 当从数据推断出协方差结构时,这个论点适用,通常就是这种情况 .

因此,正如我所说,我的理解是,sckit-learn并不能真正处理这种情况,尽管事实上文档中没有提到或暗示过这样的事情(在以下问题上打开相关问题可能会很有趣)项目页面) . 这似乎也是this relevant SO thread以及this CrossValidated thread中有关GPML(Matlab)工具箱的结论 .

话虽如此,除了回复单独建模每个输出的选择(不是无效的选择,只要你记住你可能从你的3-D输出元素之间的相关性丢弃有用的信息),至少有一个Python工具箱似乎能够为多输出GP建模,即 runlmc (paper,code,documentation) .

高斯过程回归python_scikit-learn中的多输出高斯过程回归相关推荐

  1. 【Scikit-Learn 中文文档】高斯过程 - 监督学习 - 用户指南 | ApacheCN

    中文文档: http://sklearn.apachecn.org/cn/0.19.0/modules/gaussian_process.html 英文文档: http://sklearn.apach ...

  2. R语言广义线性模型函数GLM、R中有几种泊松回归扩展和变异、变时段泊松回归、零膨胀泊松回归、鲁棒泊松回归、pscl包的zeroinfl拟合零膨胀泊松回归、robust包中的glmRob函数拟合鲁棒模型

    R语言广义线性模型函数GLM.glm函数构建泊松回归模型.R中有几种泊松回归扩展和变异.变时段泊松回归.零膨胀泊松回归.鲁棒泊松回归.pscl包的zeroinfl拟合零膨胀泊松回归.robust包中的 ...

  3. R语言ggplot2可视化抑制可视化网格中的竖线输出、抑制可视化网格中的横线线输出、抑制背景网格输出实战

    R语言ggplot2可视化抑制可视化网格中的竖线输出.抑制可视化网格中的横线线输出.抑制背景网格输出实战 目录

  4. Python中sklearn中HistGradientBoostingRegressor回归器配置单调约束参数monotonic_cst提高回归模型的抗噪声以及局部扰动的能力

    Python中sklearn中HistGradientBoostingRegressor回归器配置单调约束参数monotonic_cst提高回归模型的抗噪声以及局部扰动的能力 目录

  5. 贝叶斯岭回归(BayesianRidge)、自动关联决策回归、高斯过程、核函数、及高斯回归、高斯过程分类

    贝叶斯岭回归(BayesianRidge).自动关联决策回归.高斯过程.核函数.及高斯回归.高斯过程分类 目录

  6. 编写程序,在文件file1.dat中存入字符串“good morning”,然后将file1.dat中的内容输出到屏幕上,并复制到文件file2.dat中

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p257 习题8 7.编写程序,在文件file1.dat中存入字符串"good morning ...

  7. 将Linux脚本中的正常输出,警告,错误等信息输出到文件中

    将Linux脚本中的正常输出,警告,错误等信息输出到文件中 转载于:https://www.cnblogs.com/lwmp/p/7700339.html

  8. python中的format什么意思中文-Python中format()格式输出全解

    格式化输出:format() format():把传统的%替换为{}来实现格式化输出 1.使用位置参数:就是在字符串中把需要输出的变量值用{}来代替,然后用format()来修改使之成为想要的字符串, ...

  9. python中怎么输出中文-python中使用print输出中文的方法

    看Python简明教程,学习使用print打印字符串,试了下打印中文,不行. 编辑环境:IDLE 上网搜了下解决办法,各种说法,试了两种: print u"学习" print (u ...

最新文章

  1. 怎么主动发起话题_约会的时候,多聊这4个话题,女人才会失去抵抗力
  2. Visual Assist使用详细说明
  3. 移植uboot第九步:支持yaffs映像烧写
  4. 简单网络管理协议(SNMP)实现linux系统信息网络监控
  5. Nginx 301跳转踩坑总结
  6. C++ const 关键字小结
  7. delphi开发LINUX程序,DELPHI开发LINUX包
  8. vim Ctrl+S锁定屏幕
  9. mach-o hook
  10. 【codevs1830】【BZOJ1951】古代猪文,数论综合
  11. 小米10青春版跑分流出:搭载骁龙720G芯片 下周一见!
  12. 从操作系统内核看设计模式--linux内核的facade模式
  13. H3C | S6X00系列交换机策略路由配置案例
  14. NMS(Non-maximum suppression)非极大抑制
  15. linux版本怎么安装qq游戏,QQ for Linux
  16. php直播平台原理,php直播平台源码的直播带货平台有何技巧,别说没告诉你
  17. android沉浸式状态理解
  18. 我与北窗青年的2020丶
  19. CSS hover改变背景图片过渡动画生硬
  20. HSB/HSL 滤镜

热门文章

  1. clean code
  2. hdu2847(2009多校第四场) 01串添加最少01使被k整除(暴力)
  3. 日志分析工具Awstats实战之Apache篇-多站点日志分析
  4. ERP 趣读 【转】
  5. SqlBulkCopy批量插入数据
  6. struts-step
  7. Oracle数据库的四种启动方式
  8. python制作印刷体数据集:数字符号数据集(字符串转图片)
  9. 剑指offer(C++)-JZ6:从尾到头打印链表(数据结构-链表)
  10. 华为机试HJ15:求int型正整数在内存中存储时1的个数