问题标签 [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-3.x - 从 GaussianProcessor 迁移到 GaussianProcessRegressor
我正在尝试使用 scikit-Learn 库迁移一些旧的 python 代码。
这样做时,我遇到了现在完全重新实现为GaussianProcessRegressor的GaussianProcess类。
我能够通过替换获得一个正在运行的脚本
和
除了现在我在调用 predict() 时得到完全不同的结果......
知道如何使用新 API 转换自相关方法 (corr) 和不同的 theta 值吗?
machine-learning - 如何使用 scikit-learn GaussianProcessRegressor 重现 GPy GPRegression 的结果?
GPRegression
( GPy
) 和GaussianProcessRegressor
( )都scikit-learn
使用相似的初始值和相同的优化器 ( lbfgs
)。为什么结果差异很大?
结果
python - 具有非高斯似然和拉普拉斯推理函数的多任务/多输出 GPy Coregionalized Regression
我想在 GPy 中执行 coregionalized 回归,但是我使用的是伯努利似然,然后作为高斯估计,我使用拉普拉斯推理。PjkRbf
下面的代码显示了我通常如何使用此设置(使用我的自定义内核)运行单输出 GP :
现在我正在尝试运行相同的设置,但作为多输出。这是我一直无法做到的。
我已经尝试使用GPCoregionalizedRegression
带有 ICM 内核的类,如下面的代码所示:
运行此代码会引发 AssertionError,并带有很长的堆栈跟踪,但最后一部分显示以下内容。可能性不能断言为高斯。
这是因为我无法将拉普拉斯推理传递给GPCoregionalizedRegression
模型。
任何人都可以就如何解决这个问题提供建议,或者如果有不同的模型我可以使用伯努利似然法和拉普拉斯推理方法来执行多输出回归?
gpflow - 我可以为 GPflow 中的不同数据类型指定不同的内核吗?
对于我的模型,有两种不同类型的数据。让我们说类型 X1 的数据和类型 X2 的数据。
是否可以为两种数据类型实现不同的内核?那么从 X1 类型的数据开始,使用内核 X1,从 X2 类型的数据开始,使用内核 X2?(我使用VGP模型)
背景是我知道两种数据类型之一的超参数,而不是另一种数据类型的超参数。
谢谢你的帮助!
python - 具有恒定的手动设置相关性的 SKlearn 高斯过程
我想对一个简单的一维测试函数使用高斯过程近似来说明一些事情。我想迭代相关矩阵的几个不同值(因为这是一维的,它只是一个值)并显示不同值对近似值的影响。我的理解是,“theta”是这个参数。因此,我想手动设置 theta 值,并且不希望对其进行任何优化/更改。我认为常量内核和 clone_with_theta 函数可能会得到我想要的东西,但我没有让它工作。这是我到目前为止所拥有的:
python - 有没有办法定义“异构”内核设计以将线性算子合并到 GPflow(或 GPytorch/GPy/...)的回归中?
我正在尝试使用线性运算符执行 GP 回归,例如 Särkka 的这篇论文中所述:https://users.aalto.fi/~ssarkka/pub/spde.pdf在这个例子中,我们可以从方程(8 )我需要一个不同的核函数用于完整协方差矩阵中的四个协方差块(训练和测试数据)。
这绝对是可能且有效的,但我想将其包含在(最好)GPflow 或 GPytorch、GPy 等的内核定义中。
但是,在Gpflow中的内核设计文档中,唯一的可能性是定义一个作用于所有协方差块的协方差函数。原则上,上面的方法应该是直接添加我自己(核函数表达式可以解析得出),但我看不到任何将“异构”核函数合并到回归或核类中的方法。我尝试咨询其他软件包,例如Gpytorch和Gpy,但同样,内核设计似乎不允许这样做。
也许我在这里遗漏了一些东西,也许我对底层实现不够熟悉来评估这一点,但如果有人以前做过这个或看到(什么应该是相当直接的?)实现可能性,我会很高兴找出答案。
非常感谢您的回答!
亲切的问候
python - 高斯过程回归 - 解释行为
我正在研究 GP 回归,但我遇到了一些我不理解的行为。基本上,我想展示 GP 在振荡 Genz 函数(基本上是一个周期波)上的收敛性,这让我看到了这张图片Gp 收敛,抱歉缺少标签(x 轴:num 个样本,y 轴:2000 年的相对误差测量点)
这没关系,但我很好奇为什么错误开始下降之前花了这么长时间。绘制生成的 GP 拟合我得到了这个(忙碌的)图GP 拟合是橙色的,真正的函数是蓝色的。我不明白的是在它开始捕捉真正的功能之前会发生什么。我认为它与内核有关。此处的图使用了 length_scale = 1 的 RBF 内核(我也尝试了更高和更低的值,但得到了相同的结果)。
我有点期待它有一个更流畅的行为,即使它无法捕捉到真实的模型。所以,对于我的问题:为什么我会看到这种“尖峰”行为?我可以做些什么来改变它(内核或其他)?
python - 如何将高斯过程回归应用于系列问题?
我一直在研究以下问题,我希望使用高斯过程回归器(GPR)进行回归:
Input (X): [list1, list2, list3, ....] # All the lists (or arrays) may not be of the same size
Output(y): [value1, value2, value3, ....] # Equal and corresponding to the number of input lists
代码:
但是此代码一次仅适用于一个列表(在 X 内)的一个值,而不适用于作为输入的整个列表。
我尝试了各种表示,并且也能够实现多个特征的表示,但是这个问题已经困扰了我几个星期。我只需要知道如何克服下面的几个障碍。我无法执行以下操作:
- 为 GPR 输入 3D 形状数据
- (由于上述原因)输入一个时间序列作为输入,一个值作为输出
我已经能够使用深度学习神经网络实现相同的功能,但由于我拥有的数据量很少,我想检查机器学习模型的相同之处。如果无法使用 GPR,任何有关使用其他 ML 模型(如支持和相关向量机)的建议也将非常有帮助。
编辑1:
根据回复,我将更详细地描述我的场景。我有 124 种材料,每种材料的前 50 次试运行。因此,我有以下数据框:
“材料 ID”、“试验”和“应变比”列是我拥有的 3 个特征。因此,124 种材料、每种材料的 50 次试验和 3 个特征构成了所需的 3D 形状(124、50、3)。输出是材料的断裂点,我需要使用前 50 次试验的可用特征来预测断裂点发生在哪个试验(可能是第 100 次试验或第 100 次)。我希望将输入的这种 3D 形状传递给 GPR 和 SVM/RVM,但它不被接受,因为只允许对此类模型进行 2D 输入。我需要将每种材料的 50 次试验作为一个列表传递(基本上是一个时间序列,在此基础上预测未来某个时间点的断点)。
在过去的几天里,我能够实现该结构,其中任何一个特征都可以作为输入列表传递给模型,以预测断点,这是模型的目标。因此,输入列表的形状为 (124, 50),因为我只能传递一个特征。
代码:
输入和输出的形状:
正如从形状中更好地解释的那样,时间序列中的 50 个先前点预测未来某处的一个点。
GPR 代码很简单:
但是,我希望找到一种方法将所有 3 个特征一起作为输入来预测断点,这是我实际的也是唯一的查询。但形状
不会被 GPR 接受。
未来我还会添加更多功能,为了便于理解,我在这里使用了 3 个功能。我已经多次阅读文档以获取线索,以及其他网站和教程,但没有一个有答案。
python - 使用泊松似然的 GP 回归
我正在尝试使用泊松似然来实现 GP 回归。我按照GPy中的例子做了
当我尝试使用 GPflow 做同样的事情时,我以以下方式实现
当我使用 GP 流程实现这一点时,超参数并没有从初始化值移动。另外,我得到了非常不同的结果,我做错了什么吗?