我正在研究 GP 回归,但我遇到了一些我不理解的行为。基本上,我想展示 GP 在振荡 Genz 函数(基本上是一个周期波)上的收敛性,这让我看到了这张图片Gp 收敛,抱歉缺少标签(x 轴:num 个样本,y 轴:2000 年的相对误差测量点)
这没关系,但我很好奇为什么错误开始下降之前花了这么长时间。绘制生成的 GP 拟合我得到了这个(忙碌的)图GP 拟合是橙色的,真正的函数是蓝色的。我不明白的是在它开始捕捉真正的功能之前会发生什么。我认为它与内核有关。此处的图使用了 length_scale = 1 的 RBF 内核(我也尝试了更高和更低的值,但得到了相同的结果)。
我有点期待它有一个更流畅的行为,即使它无法捕捉到真实的模型。所以,对于我的问题:为什么我会看到这种“尖峰”行为?我可以做些什么来改变它(内核或其他)?
kernel = RBF(length_scale = 1, length_scale_bounds = (1e-2, 1e2))
gp = GaussianProcessRegressor(kernel=kernel)
gp.fit(X, y)
def genz(x, method = 'default'):
d = x.shape[1]
a = 10/d
w = 1/2
num_points = x.shape[0]
funcval = np.empty([1,num_points])
for i in range(num_points):
funcval[0,i] = np.cos(2 * np.pi * w + np.sum(a * x[i,:]))
return funcval