add MRD for regression benchmark

This commit is contained in:
Zhenwen Dai 2015-08-27 17:38:45 +01:00
parent 8f78431983
commit 9564287cf3
2 changed files with 31 additions and 3 deletions

View file

@ -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'

View file

@ -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)]