Аппаратные образцы из подобранного гауссовского процесса не похожи на предсказанное среднее

Я подбираю гауссовский процесс на основе второго графика, показанного здесь, и беру из него образцы. Однако нарисованные выборки не похожи на подобранную функцию и, как правило, сильно отличаются от предсказанного среднего (в частности, они не такие гладкие и имеют резкие изменения) и не проходят (или близко) к заданным точкам данных (красный точек на сюжете).

Пример графика (черная линия - это прогнозируемое среднее, синяя и оранжевая линии - образцы):

После многих прогонов результат всегда будет одинаковым (даже если не совсем таким). Есть идеи, что вызывает это и как я могу сделать нарисованные образцы более похожими на среднее значение?

Код, используемый для создания графика:

import numpy as np

from matplotlib import pyplot as plt

from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF, WhiteKernel as White


rng = np.random.RandomState(0)
X = rng.uniform(0, 5, 20)[:, np.newaxis]
y = 0.5 * np.sin(3 * X[:, 0]) + rng.normal(0, 0.5, X.shape[0])

kernel = 1.0 * RBF(length_scale=1.0, length_scale_bounds=(1e-2, 1e3)) \
    + White(noise_level=1e-5, noise_level_bounds=(1e-10, 1e+1))
gp = GaussianProcessRegressor(kernel=kernel, alpha=0.0)
gp.fit(X, y)

X_ = np.linspace(0, 5, 100)
y_mean, y_cov = gp.predict(X_[:, np.newaxis], return_cov=True)

plt.figure(figsize=(14,7))
plt.plot(X_, y_mean, 'k', lw=3, zorder=9)
plt.fill_between(X_, y_mean - np.sqrt(np.diag(y_cov)),
                 y_mean + np.sqrt(np.diag(y_cov)),
                 alpha=0.5, color='k')
plt.scatter(X[:, 0], y, c='r', s=50, zorder=10, edgecolors=(0, 0, 0))
plt.title("Initial: %s\nOptimum: %s\nLog-Marginal-Likelihood: %s"
          % (kernel, gp.kernel_, gp.log_marginal_likelihood(gp.kernel_.theta)))
y_samples = gp.sample_y(X_.reshape(-1, 1), 2)
plt.plot(X_, y_samples, lw=2)
plt.tight_layout()

1 ответ

Недавно я изучаю процесс терапевта и пытаюсь дать интуитивное объяснение :

Задний план:

Истинная (игрушечная) функция для изучения - это синусоидальная функция: (0,5 * синус x) + корректировка нормального распределения (среднее значение =0, стандартное отклонение =0,5)

Регрессор гауссовского процесса пытается учиться и соответствовать (на основе некоторых заданных обучающих пар (X, y) / априорное распределение) и последовательно прийти к некоторому апостериорному распределению. Чем больше очков обучения дается, тем лучше качество прогноза.

Текущий код и демонстрация

Регрессор GP попытается дать прогнозируемое среднее значение + доверительный диапазон (например, одна SD в данном случае). В случае данной функции, связанной с синусом, ее истинная форма обычно похожа на красную линию с учетом моего третьего приложения (обратите внимание, что красная линия, построенная из 100 контрольных точек, временами может сильно отличаться от других, частично из-за случайной нормальной настройки на уравнение синуса.

Я прилагаю еще три случая: i) 80 предыдущих точек обучения и ii) 10 предыдущих точек обучения, iii) с графиком истинной апостериорной функции для 100 X входных данных для сравнения с текущим случаем из 20 точек (пожалуйста, обратите внимание, что график из 10 точек обучения показывает переоборудование в одном регионе и недостаточное в других)

[ Чего нам следует ожидать от образца, предоставленного gp.sample_y?

В нашем прогнозе в основном следует руководствоваться прогнозируемым средним (черный) и уровнем достоверности (серый). То, что вы пробуете из sample_y, является "одной из многих" реализаций процесса. Интуитивно это похоже на то, как если бы вы бросали кости из N граней в течение периода времени T, и, поскольку вы можете дополнительно разделить T и подразделить N, это становится бесконечной комбинацией. Даже если мы сохраняем диапазон и все целые числа, это все равно огромная комбинация возможных подраспределений (выборок).

Таким образом, независимо от того, в предшествующем или апостериорном распределении: i) эти выборки точно НЕ такие гладкие, как совокупность (как и любые отдельные игры); и ii) многие из них ведут себя по-разному, но iii) в совокупности они образуют определенные Гауссов узор.

В моем ограниченном понимании выборка - это всего лишь возможное происшествие из многих, и большую часть времени результат находится в пределах или близко к диапазону достоверности, и прогноз обычно основывается на прогнозируемом среднем значении (черная линия)

Ссылка: https://peterroelants.github.io/posts/gaussian-process-tutorial/

Другие вопросы по тегам