GP 回帰を調査していますが、理解できない動作が発生しています。基本的に、振動性ゲンツ関数 (基本的には周期波) での GP の収束を示したかったため、この図に導かれましたポイント)
これは問題ありませんが、エラーが発生し始めるまでに時間がかかる理由が気になりました。結果の 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