问题标签 [gaussian-process]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 使用具有相同超参数的 gpytorch 重现高斯过程的预测协方差的问题
我需要构建一个函数来给出高斯过程的后验协方差。这个想法是使用 GPytorch 训练 GP,然后获取学习的超参数,并将它们传递给我的内核函数。(由于几个原因,我不能直接使用 GPyTorch)。
现在的问题是我无法重现预测。这里是我写的代码。我整天都在努力,但我找不到问题所在。你知道我做错了什么吗?
python-3.x - Python 中的贝叶斯优化比指定的迭代次数更多
我正在使用 Python贝叶斯优化来优化 XGBoost 模型。
我将迭代次数指定为 10:
当我运行代码时,我看到迭代次数超过 10 并继续运行
这是为什么?
我的猜测是它与the有关,init_points
但我对此没有任何解释。
python - 使用 celerite2 (pymc3) 构建模型期间的 Theano TypeError
我最近从 celerite 切换到 celerite2 来建模恒星光曲线。我密切关注celerite 2 教程,根据我的需要进行调整。我的模型由一个平面均值、一个抖动项、一个粒化项和一个 SHO 项组成,用于模拟非径向振荡。
数据输入:
观察结果是通过以下方式从 lightkurve.KeplerLightCurve 对象转换而来的:
先验:
先验 (prior_*_m
和prior_*_sd
) 完全是 numpy float64 标量。
建筑模型:
我已经为大多数分布包含了一个形状参数,因为我希望我的代码能够将向量作为输入处理,以防我需要多个粒化/振荡项。
现在,当我运行此代码时,出现以下错误:
这对我来说毫无意义(老实说,正如大多数 theano 错误消息所做的那样)。为什么其中一个分支是布尔值?
我试过的
我已经尝试在代码中省略 shape 参数,因为我之前遇到过问题。
这会导致以下错误:
我也尝试过手动设置测试值,这会产生相同的错误。
这是我第一次在这里发帖,如果我忘记了任何重要信息,非常抱歉。在此先感谢您的帮助!
scikit-learn - 如何在 scikit-learn 的高斯过程回归中重新调整归一化标准差?
我正在使用 scikit-learn 进行高斯过程回归建模。我的数据没有标准化。该模型总是返回 0 到 1 之间的标准差值,这与我的数据不符。有谁知道如何重新调整标准偏差值以获得实际标准偏差?
python - 使用 python 进行边际似然优化
我正在尝试优化边际似然来估计高斯过程回归的参数。所以我用这种方式定义了边际对数似然:
其中要优化的参数是“l”和“sigma_n”。使用一些初始值和数据,该函数会返回一些值:
但是当我尝试用“最小化”优化参数时,我得到了这个:
我不知道为什么,但参数“l”似乎没有优化,但它与我固定的起始值匹配。
有什么建议吗?
python - 优化高斯过程回归的超参数时的不同结果
我正在研究高斯过程回归,我正在尝试使用 scikit-learn 的内置函数,并且还试图为此实现自定义函数。
这是使用 scikit-learn 时的代码:
这是我手动编写的代码:
正如你所看到的,我从这两种方法中得到的超参数是不同的,但是我使用了相同的数据(X,Y)和相同的最小化方法。
有人可以帮助我理解为什么以及如何获得相同的结果吗?!
scikit-learn - 高斯过程回归器的 SHAP 值为零
我正在尝试使用 SHAP 库获取高斯过程回归 (GPR) 模型的 SHAP 值。但是,所有 SHAP 值都为零。我正在使用官方文档中的示例。我只是将模型更改为 GPR。
运行上面的代码会得到以下图:
当我使用神经网络或线性回归时,上面的代码可以正常工作。
如果您知道如何解决此问题,请告诉我。
r - 用于时间序列预测的高斯过程回归不确定性估计
我有一个 2043 小时的时间序列。我的目标是通过高斯过程回归 (GPR) 模型训练和测试预测模型,包括其不确定性估计。我在应用 R 包caret + kernlab::train( )模型的联合的准时预测方面取得了很好的结果。我如何使用这些 R 包估计它的预测区间?
我的 .csv 数据可通过三个 Dropbox 链接获得:
目的是使用“ST3”和“ST4_lag1”回归量预测“ST4_lead1”。它们是我们在 data.frames 上的列。
从现在开始,我将展示我的代码。第一个窗口代码对我们双方都是通用的。您可以完全运行它。
我们已经完成了常见的培训和测试过程以及获得测试结果。
在第二个窗口代码中,我们将从预测对象中提取一些测试结果。顺便说一句,我希望预测会为我们带来所需的预测间隔,我需要帮助。
它为我们带来了测试结果图,如下所示。实线是观察到的数据,而红点是预测的估计值。
最后,在第三个窗口代码中,我们只计算回归的指标:
如我们所见,对于训练过程,R² = 0.76 和 MAE = 1.06;而对于测试对象,R² = 0.80 和 MAE = 1.36。这些对我们来说已经足够好了。
在 GPR 中,预测倒数基于每个预测点周围的高斯分布,由Rasmussen 和 Williams (2006)提供。我曾通过其他三种方式尝试过 GPR:仅使用kernlab::train( )、tgp::bgp( )和gplmr::train( )。这最后一个是由duckmayr亲切地建议的。对于所有这些,我找到了预测区间。然而,“ caret + kernlab::train() ”的联合使用(如我的代码所示)返回了更好的准时预测。我不知道为什么。
正如我在第一个和第二个窗口代码之间提到的,我可能期望从“预测”对象中,我们可以从每个预测点提取平均数据并添加(或减去)其标准偏差的 2 倍,允许y = average + - 2*标准差。但是,我不知道如何提取这个平均值,甚至是每个预测点的标准偏差。
简而言之,如何使用 caret + kernlab 包的联合使用来获得高斯过程回归的预测区间?
python - 时间序列回归 - 尝试使用 KRR 和高斯过程回归进行预测时遇到问题
我需要根据时间预测输出将是什么。我想这样做,这样我就可以在前 20% 的数据上训练我的模型,然后制作一个模型,该模型将遵循行为,并预测剩余的 80%。我正在处理的数据如下所示: 我的数据
但是当我尝试进行回归来做到这一点时,我要么得到一些偏离目标的东西(或者一些非常接近的东西,但它是线性的),这是不被接受的。
我可能认为我的问题是我的内核的选择,或者我进行回归的方式。现在我正在使用 sklearn 包进行如下操作:
但是经过几次预测后,预测只是变成了相同的稳定值,而不是数据中的曲线。此外,预测的标准变化变得非常大。 基于真实数据的 GPR 预测
在 python 中进行核岭回归时,我似乎也无法让曲线跟随数据。要么在几次预测中下降到 0,要么必须是线性预测。 KRR 模型,而是线性的 - 这还不够好
KRR 模型的制作如下(我知道内核=多项式,次数为 1,但我似乎无法找出/找到一个合适的内核来跟踪我的数据):
因此,如果可能的话,我想获得一些输入,说明应该如何完成,或者如果采用不同的方法来解决问题会更好。但我真的希望我能得到 KRR 来拟合数据,以及高斯过程回归。
kernel - 高斯过程回归中指数核函数的不同预测器长度尺度
我有一个 GPR 训练的模型,它有七个特征和一个响应变量。从文献(实际观察)中,我知道响应变量对特征 X 的依赖性最高,但根据预测变量长度尺度的倒数,特征 Y 的依赖性最高。我使用了指数核函数。我想知道实际观察与这些预测量表的指示之间是否存在相关性?或者这些预测量表是否只描述了模型的敏感性,而不考虑实际观察?对于指数核函数,还指出了单 sigma-L,那么独立预测量表和整体单 sigma-L 有什么区别?