Придуманный пример ниже показывает, что регрессия гауссовского процесса с составным ядром может использоваться для подгонки трендов на разных масштабах длины. В приведенном ниже примере ядро с максимальным правдоподобием 0.492**2 * RBF(length_scale=9.97e+04) + 2.14**2 * RBF(length_scale=1e-05)
- показывает, что мы обнаружили две шкалы длин. Можно ли сделать прогноз по каждой шкале длины (или иначе декомпозировать окончательный прогноз), чтобы увидеть влияние каждой части ядра?
Лучшим примером является рассмотрение данных о CO2 в Мауна-Лоа вдокументация по адресу https://scikit -learn.org / stable / modules / gaussian_process.html . Это повторяет результаты в документе, указанном в документации. Однако в работе показаны графики медленного / быстрого / сезонного вклада компонентов ядра. Можем ли мы повторить этот вид анализа, используя scikit-learn
s GaussianProcessRegressor
?
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF, WhiteKernel, ConstantKernel
kernel = ConstantKernel() * RBF() + ConstantKernel() * RBF( )
gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=10)
import numpy as np
x = np.linspace(0, 10, 100)
y = 3*np.sin(x) + np.sin(x*5)
gp.fit(x.reshape(-1, 1), y)
print(gp.kernel_)
# We can make predictions using both components of the kernel:
# is it possible to make predictions on each component
# individually?
y_hat = gp.predict(x.reshape(-1, 1))