diff --git a/benchmarks/regression/methods.py b/benchmarks/regression/methods.py index 245562e3..9325396d 100644 --- a/benchmarks/regression/methods.py +++ b/benchmarks/regression/methods.py @@ -54,13 +54,41 @@ class GP_RBF(RegressionMethod): def _fit(self, train_data): inputs, labels = train_data - self.model = GPy.models.GPRegression(inputs, labels,kernel=GPy.kern.RBF(inputs.shape[-1],ARD=True) +GPy.kern.Linear(inputs.shape[1], ARD=True) + GPy.kern.White(inputs.shape[1],0.01) ) + self.model = GPy.models.GPRegression(inputs, labels,kernel=GPy.kern.RBF(inputs.shape[-1],ARD=True) +GPy.kern.Linear(inputs.shape[1], ARD=True) ) self.model.likelihood.variance[:] = labels.var()*0.01 self.model.optimize() return True def _predict(self, test_data): return self.model.predict(test_data)[0] + +class SparseGP_RBF(RegressionMethod): + name = 'SparseGP_RBF' + + def _fit(self, train_data): + inputs, labels = train_data + self.model = GPy.models.SparseGPRegression(inputs, labels,kernel=GPy.kern.RBF(inputs.shape[-1],ARD=True) +GPy.kern.Linear(inputs.shape[1], ARD=True) ,num_inducing=100) + self.model.likelihood.variance[:] = labels.var()*0.01 + self.model.optimize() + return True + + def _predict(self, test_data): + return self.model.predict(test_data)[0] + +# class MRD_RBF(RegressionMethod): +# name = 'MRD_RBF' +# +# def _fit(self, train_data): +# inputs, labels = train_data +# Q = 5 +# self.model = GPy.models.MRD([inputs, labels],Q,kernel=GPy.kern.RBF(Q,ARD=True),num_inducing=50) +# self.model.Y0.likelihood.variance[:] = inputs.var()*0.01 +# self.model.Y1.likelihood.variance[:] = labels.var()*0.01 +# self.model.optimize() +# return True +# +# def _predict(self, test_data): +# return self.model.predict(self.model.Y0.infer_newX(test_data)[0])[0] class SVIGP_RBF(RegressionMethod): name = 'SVIGP_RBF' diff --git a/benchmarks/regression/run.py b/benchmarks/regression/run.py index ee4160e2..452d4ff5 100644 --- a/benchmarks/regression/run.py +++ b/benchmarks/regression/run.py @@ -3,7 +3,7 @@ from __future__ import print_function from evaluation import RMSE -from methods import GP_RBF, SVIGP_RBF +from methods import GP_RBF, SVIGP_RBF, SparseGP_RBF from tasks import Housing, WineQuality from outputs import ScreenOutput, CSVOutput, H5Output import numpy as np @@ -13,7 +13,7 @@ outpath = '.' prjname = 'regression' config = { 'evaluations':[RMSE], - 'methods':[GP_RBF, SVIGP_RBF], + 'methods':[GP_RBF, SVIGP_RBF, SparseGP_RBF], 'tasks':[WineQuality,Housing], 'repeats':2, 'outputs': [ScreenOutput(), CSVOutput(outpath, prjname), H5Output(outpath, prjname)]