2

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
4

1 に答える 1

0

最適化された長さのスケールは、そのドメイン スペースに比べて非常に小さいようです。このライブラリを掘り下げていたときも、非常に奇妙に感じました。いくつかのハイパーパラメータと最適化の数を変更しても、うまくいきませんでした。ガンマ値を変更してカーネル関数を matern に変更すると役立つ場合がありますが、それほど多くはありません。本当に必要に応じてカスタマイズしたい場合は、トーチの実装に似た gpytorch または GPML matlab ツールボックスを使用することをお勧めします。

于 2021-02-04T04:33:54.967 に答える