Прогноз Sklearn Gaussian очень резкий даже при «гладком» ядре RBF - PullRequest
0 голосов
/ 11 июля 2019

Я использую sklearn для подгонки гауссовского процесса к данным.

В этом сокращенном примере я использую простые шумовые синусоидальные данные с ядром RBF

import numpy as np
import matplotlib.pyplot as plt
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF, ConstantKernel

X = np.random.uniform(-3.,3.,(200,1))
Y = np.sin(X) + np.random.randn(200,1)*0.05

kernel = RBF(length_scale=1)
gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=9)
gp.fit(X,Y)

x = np.linspace(-3, 3, 100)
y_pred, sigma = gp.predict(x.reshape(-1, 1), return_std=True)
plt.scatter(X,Y, c='r')
plt.plot(x, y_pred)

Это приводит к очень негладкому подогнанному прогнозу для относительно простой шумовой кривой с синусоидой. Это, похоже, имеет место независимо от значений параметра RBF length_scale или n_restarts_optimizer

gp

Из документации RBF sklearn, GP с этим ядром в качестве ковариационной функции имеют среднеквадратичные производные всех порядков и поэтому очень гладкие. Какие-нибудь идеи, почему среднее предсказание здесь так негладко?

edit: вставка изображения не работает: вот график вывода https://imgur.com/kIE9hOT

...