Changeset 15188 for stable/HeuristicLab.Algorithms.DataAnalysis/3.4/GaussianProcess/GaussianProcessModel.cs
- Timestamp:
- 07/10/17 19:19:26 (7 years ago)
- Location:
- stable
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
stable
- Property svn:mergeinfo changed
/trunk/sources merged: 14899,14918,15160,15163,15165,15187
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Algorithms.DataAnalysis
- Property svn:mergeinfo changed
/trunk/sources/HeuristicLab.Algorithms.DataAnalysis merged: 14899,14918,15160,15163,15165,15187
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Algorithms.DataAnalysis/3.4/GaussianProcess/GaussianProcessModel.cs
r15143 r15188 46 46 47 47 [Storable] 48 private double loocvNegLogPseudoLikelihood; 49 public double LooCvNegativeLogPseudoLikelihood { 50 get { return loocvNegLogPseudoLikelihood; } 51 } 52 53 [Storable] 48 54 private double[] hyperparameterGradients; 49 55 public double[] HyperparameterGradients { … … 128 134 this.trainingDataset = cloner.Clone(original.trainingDataset); 129 135 this.negativeLogLikelihood = original.negativeLogLikelihood; 136 this.loocvNegLogPseudoLikelihood = original.loocvNegLogPseudoLikelihood; 130 137 this.sqrSigmaNoise = original.sqrSigmaNoise; 131 138 if (original.meanParameter != null) { … … 217 224 alglib.spdmatrixcholeskyinverse(ref lCopy, n, false, out info, out matInvRep); 218 225 if (info != 1) throw new ArgumentException("Can't invert matrix to calculate gradients."); 226 227 // LOOCV log pseudo-likelihood (or log predictive probability) (GPML page 116 and 117) 228 var sumLoo = 0.0; 229 var ki = new double[n]; 230 for (int i = 0; i < n; i++) { 231 for (int j = 0; j < n; j++) ki[j] = cov.Covariance(x, i, j); 232 ki[i] += sqrSigmaNoise; 233 234 var yi = Util.ScalarProd(ki, alpha); 235 var yi_loo = yi - alpha[i] / (lCopy[i, i] / sqrSigmaNoise); 236 var s2_loo = 1.0 / (lCopy[i, i] / sqrSigmaNoise); 237 var err = ym[i] - yi_loo; 238 var nll_loo = 0.5 * Math.Log(2 * Math.PI * s2_loo) + 0.5 * err * err / s2_loo; 239 sumLoo += nll_loo; 240 } 241 loocvNegLogPseudoLikelihood = sumLoo; 242 219 243 for (int i = 0; i < n; i++) { 220 244 for (int j = 0; j <= i; j++)
Note: See TracChangeset
for help on using the changeset viewer.