Код: Выделить всё
X Y
0.00001 -6.8200000000000003
0.00014 -6.8073846153846160
0.00042 -6.6818333333333326
0.00200 0.5002400000000000
0.00545 -0.0163174311926606
0.00545 -0.0163174311926606
0.00545 -0.0163174311926606
0.00552 -0.0317916666666667
0.00604 -0.1288741721854305
0.00756 -0.2954391534391534
0.00987 -0.3925845997973657
0.02201 -0.2940145454545455
0.02618 -0.2296286259541984
0.04000 -0.1075512500000000
0.05737 -0.0801517421602787
0.05761 -0.0801819444444445
0.05762 -0.0801947916666667
0.05767 -0.0801204506065858
0.05771 -0.0801724436741768
0.05772 -0.0801856152512998
0.05773 -0.0801980935875217
0.05782 -0.0801769896193772
0.05783 -0.0801899653979239
0.05788 -0.0801169257340242
0.05789 -0.0801297063903282
0.05804 -0.0801881034482759
0.05948 -0.0800737815126051
0.07886 -0.0843219264892269
0.10000 -0.0866689000000000
Код: Выделить всё
GP_regression. | value | constraints | priors
rbf.variance | 1.9537980554282994 | +ve |
rbf.lengthscale | 0.47928874454359643 | +ve |
Gaussian_noise.variance | 0.0 | +ve fixed |
Код: Выделить всё
L = cholesky(K + np.eye(len(X)) * 1e-11, lower=True) # Add jitter for stability
# Solve for alpha (K * alpha = Y)
alpha_imag= cho_solve((L, True), Y)
def gp_surrogate_model_imag(x_star):
x_star = np.atleast_1d(x_star)
x_star = x_star.reshape(-1,1)
# Normalize input
x_star_norm = (x_star - X_mean_old) / X_std_old
# Compute covariance vector k(X^*, X)
k_star = kernel.K(x_star_norm, X)
Y_surrogate = k_star @ alpha_imag
# Convert back to original scale (denormalization)
Y_surrogate = Y_surrogate * Y_std_old + Y_mean_old
return Y_surrogate.item()
Однако, когда я вычисляю различия между Y и Y* в точках обучения, я получаю различия порядка 10^-5.
Это проблема моей реализации, или такие небольшие различия ожидаются, даже если дисперсия шума зафиксирована равной 0 в ГПы?
Подробнее здесь: https://stackoverflow.com/questions/798 ... ing-points
Мобильная версия