我正在尝试进行基于方差的不确定性抽样,例如 Burr Settles 的“主动学习”一书,第 18 页,图 2.6。本书链接: http: //active-learning.net/
我使用来自 scikit-learn 的高斯过程回归器来拟合一维高斯函数。回归器的参数与此示例中的参数相同(无噪声情况)http://scikit-learn.org/stable/auto_examples/gaussian_process/plot_gpr_noisy_targets.html
kernel = C(1.0, (1e-3, 1e3)) * RBF(10, (1e-2, 1e2))
gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=9)
最初,我随机选择两个训练数据点并根据它们拟合曲线。下图显示了拟合(顶部)和方差(底部)
然后我在方差最大的地方再添加一个训练数据点,并重新拟合数据。
我重复这个过程进行了几次迭代,并且插值随着每次迭代而改进,正如预期的那样。例如,这是第 7 次迭代:
然而,在下一次迭代中,插值变得更糟。方差突然增加:
接下来的几次迭代又好了。例如,第 9 次迭代:
但是在第 11 次迭代中,我再次得到了很大的差异:
迭代 12 到 15 再次显示出非常小的方差 - 在这些迭代中曲线被很好地插值。我停在 15 点。
为什么这种突然增加的方差发生在某些步骤?如何避免?
当我更改参数 n_restarts_optimizer 时,仍然会观察到这种行为,但在不同的迭代步骤中。例如,当 n_restarts_optimizer=8 时,方差增加在第 9 次迭代。当 n_restarts_optimizer=7 时,方差增加在第 4、10、11 次迭代。当 n_restarts_optimizer=4 时,方差增加在第 7、14 次迭代.
当我将 RBF 内核中的参数 length_scale 从 10 更改为 1.0 时,我不再看到这种方差增加了。但是,当我使它更小(length_scale = 0.1)时,它再次出现。





