26 #ifndef __NONPARAMETRICPROCESS_HPP__ 27 #define __NONPARAMETRICPROCESS_HPP__ 73 double getSignalVariance();
74 size_t nHyperParameters();
75 vectord getHyperParameters();
76 void setHyperParameters(
const vectord& theta);
96 vectord computeCrossCorrelation(
const vectord &query);
97 double computeSelfCorrelation(
const vectord& query);
105 score_type mScoreType;
106 learning_type mLearnType;
114 double selfcorrelation);
127 inline size_t KernelRegressor::nHyperParameters()
131 return mKernel.nHyperParameters()
132 + mMean.nParameters() + 1;
136 return mKernel.nHyperParameters();
140 inline vectord KernelRegressor::getHyperParameters()
142 using boost::numeric::ublas::subrange;
145 vectord result(nHyperParameters());
146 size_t nk = mKernel.nHyperParameters();
147 size_t nm = mMean.nParameters();
149 subrange(result,0,nk) = mKernel.getHyperParameters();
151 vectord mean = mMean.getParameters();
152 std::transform(mean.begin(), mean.end(), result.begin()+nk, (double (*)(double)) log);
154 result(nk+nm) = std::log(
mSigma);
159 return mKernel.getHyperParameters();
163 inline void KernelRegressor::setHyperParameters(
const vectord &theta)
165 using boost::numeric::ublas::subrange;
168 size_t nk = mKernel.nHyperParameters();
169 size_t nm = mMean.nParameters();
171 mKernel.setHyperParameters(subrange(theta,0,nk));
174 std::transform(theta.begin()+nk, theta.begin()+nk+nm,
175 result.begin(), (double (*)(double)) log);
176 mMean.setParameters(result);
178 mSigma = std::exp(theta(nk+nm));
182 mKernel.setHyperParameters(theta);
194 const size_t nSamples = mData.getNSamples();
195 matrixd corrMatrix(nSamples,nSamples);
200 inline vectord KernelRegressor::computeCrossCorrelation(
const vectord &query)
201 {
return mKernel.computeCrossCorrelation(mData.
mX,query); }
203 inline double KernelRegressor::computeSelfCorrelation(
const vectord& query)
204 {
return mKernel.computeSelfCorrelation(query); }
207 double selfcorrelation)
209 vectord newK(correlation);
210 utils::append(newK, selfcorrelation);
matrixd computeDerivativeCorrMatrix(int dth_index)
Computes the derivative of the correlation matrix with respect to the dth hyperparameter.
matrixd computeCorrMatrix()
Computes the Correlation (Kernel or Gram) matrix.
Kernel (covariance) functions.
void cholesky_add_row(TRIA &L, const VECTOR &v)
decompose the symmetric positive definit matrix A into product L L^T.
void computeCholeskyCorrelation()
Computes the Cholesky decomposition of the Correlation matrix.
void updateSurrogateModel()
Sequential update of the surrogate model by adding a new row to the Kernel matrix, more precisely, to its Cholesky decomposition.
Namespace of the library interface.
Abstract class to implement Bayesian regressors.
void fitSurrogateModel()
Computes the initial surrogate model and updates the kernel parameters estimation.
matrixd mL
Cholesky decomposition of the Correlation matrix.
Dataset model to deal with the vector (real) based datasets.
double mSigma
Signal variance.
virtual void precomputePrediction()=0
Sets the kind of learning methodology for kernel hyperparameters.
const double mRegularizer
Std of the obs. model (also used as nugget)
Abstract module for a Bayesian regressor.
Abstract class to implement non-parametric processes.
void addNewPointToCholesky(const vectord &correlation, double selfcorrelation)
Adds a new point to the Cholesky decomposition of the Correlation matrix.