如何防止高斯过程中的过拟合

机器算法验证 scikit-学习 正则化 高斯过程 过拟合
2022-03-12 21:36:20

我正在一个相对较小的数据集上训练高斯过程模型,该数据集有 8 个输入特征和 75 个输入数据。

我尝试了不同的内核,发现以下内核(2 RBF + 白噪声)效果最好。

from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF, WhiteKernel

k1 = sigma_1**2 * RBF(length_scale=length_scale_1) 
k2 = sigma_2**2 * RBF(length_scale=length_scale_2)  
k3 = WhiteKernel(noise_level=sigma_3**2)  # noise terms

kernel = k1 + k2 + k3

我使用 10-fold cv 计算 R^2 分数,发现平均训练 R^2 始终> 0.999,但平均验证 R^2 约为0.65

看起来模型过拟合了。我想知道我们可以做些什么来防止高斯过程中的过度拟合。

在线性回归中,我们可以添加正则化,在神经网络中,我们可以添加正则化dropout

高斯过程呢?

2个回答

当您的数据集太小时,高斯过程很容易过度拟合,特别是当您对协方差结构的先验知识较弱时(因为协方差核的最佳超参数集通常没有意义)。

此外,当样本很小时(特别是当它们是从实验的空间填充设计中抽取时),高斯过程在交叉验证中的表现通常很差。

限制过拟合:

  • 根据您的先验知识,将 RBF 内核超参数的下限设置为尽可能高的值
  • 尝试(逐步)增加噪声内核,或使用sklearn'salpha参数GaussianProcessRegressor(增加与 GPR 似乎最过度拟合的一些训练点相对应的值)。

高斯过程是非常灵活的模型,容易过拟合。对于 75 个样本,我建议您使用更简单的模型,以便更好地解释输出。

如果您想了解将正则化应用于 GP 的不同方法,我建议您查看此演示文稿和此相关问题