在高斯过程回归 (GPR) 的标准 scikit-learn 实现中,(内核的)超参数是根据训练集选择的。
是否有一个易于使用的 GPR 实现(在 python 中),其中超参数(内核的)是基于单独的验证集选择的?或者交叉验证也是寻找合适超参数的一个很好的替代方法(经过优化以在多个 train-val 分割上表现良好)。(我更喜欢基于 scikit-learn GPR 的解决方案。)
详细说明:应该找到一组超参数 theta,在以下指标中表现良好:根据训练数据计算后验 GP(给定具有超参数 theta 的先验 GP)。然后评估验证数据相对于后验的负对数似然。对于 theta,这种负对数可能性应该是最小的。
换句话说,我想找到这样的“P [ valData | trainData,theta ]”是最大的。更准确地说,我想找到 theta 使得 sum_i log(P[ valData_i | trainData, theta ] 是最大的,其中 P[ valData_i | trainData, theta ] 是给定训练的验证数据点 valData_i 的高斯边际后验密度-给定具有超参数 theta 的先前 GP 的数据集。