def compute_mar_likelihood(X_train, X_test, y_train, sigma, l):
"""
compute log marginal likelihood for tuning parameters using Bayesian optimization
:param X_train: training data
:param X_test: test data
:param y_train: training targets
:param sigma: output variance
:param l: lengthscalar
:return: log marginal likelihood
"""
s = 0.0005 # noise variance and zero mean for noise
n = len(X_train)
# choose RBF kernel in this regression case
K_train = RBF_kernel(X_train, X_train, sigma, l)
L = np.linalg.cholesky(K_train + s * np.eye(n))
m = np.linalg.solve(L, y_train)
alpha = np.linalg.solve(L.T, m)
# compute log marginal likelihood
log_marg_likelihood = -.5 * np.dot(y_train.T, alpha) - np.log(np.diagonal(L)).sum(0) - n / 2.0 * np.log(2 * np.pi)
return log_marg_likelihood
tune_hyperparms_regression.py 文件源码
python
阅读 29
收藏 0
点赞 0
评论 0
评论列表
文章目录