Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/10/12 20:42:30 (12 years ago)
Author:
gkronber
Message:

#1902 worked on GPR: added line chart, made parameters of mean and covariance functions readable, removed target variable scaling, moved noise hyperparameter for likelihood function to the end of the parameter list, added methods to calculate the predicted variance, removed limits for scale of covariance functions and introduced exception handling to catch non-spd or singular cov matrixes, implemented rational quadratic covariance function, added unit test case from GBML book (however it does not work as the book seemingly uses a noise-less likelihood function)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Tests/HeuristicLab.Algorithms.DataAnalysis-3.4/GaussianProcessModelTest.cs

    r8463 r8473  
    5656
    5757        var dHyp = model.GetHyperparameterGradients();
    58         Assert.AreEqual(-2.0171e+003, dHyp[0], 1);
    59         Assert.AreEqual(-248.7932, dHyp[1], 1E-2);
     58        Assert.AreEqual(-248.7932, dHyp[0], 1E-2);
    6059        var dHypCovExpected = new double[] { -0.5550e4, -5.5533e4, -0.2511e4, -2.7625e4, -1.3033e4, 0.0289e4, -2.7625e4 };
    61         AssertEqual(dHypCovExpected, dHyp.Skip(2).ToArray(), 1);
     60        AssertEqual(dHypCovExpected, dHyp.Skip(1).Take(7).ToArray(), 1);
     61        Assert.AreEqual(-2.0171e+003, dHyp.Last(), 1);
     62
    6263
    6364        var predTrain = model.GetEstimatedValues(problemData.Dataset, new int[] { 0, 400 }).ToArray();
    6465        Assert.AreEqual(310.5930, predTrain[0], 1e-3);
    6566        Assert.AreEqual(347.9993, predTrain[1], 1e-3);
     67
     68        var predTrainVar = model.GetEstimatedVariance(problemData.Dataset, problemData.TrainingIndices).ToArray();
    6669      }
    6770
    6871      {
    69         var hyp = new double[] { 0.716427415979145, 0.029973094285941, 0.455535210579926, 3.438647883940457, 1.464114485889487, 3.001788584487478, 3.815289323309630, 4.374914122810222, 3.001788584487478 };
     72        var hyp = new double[] { 0.029973094285941, 0.455535210579926, 3.438647883940457, 1.464114485889487, 3.001788584487478, 3.815289323309630, 4.374914122810222, 3.001788584487478, 0.716427415979145 };
    7073        var model = new GaussianProcessModel(problemData.Dataset, targetVariable, allowedInputVariables, rows, hyp,
    7174                                             meanFunction,
     
    7477
    7578        var dHyp = model.GetHyperparameterGradients();
    76         Assert.AreEqual(0.8621, dHyp[0], 1e-3);
    77         Assert.AreEqual(-0.0046, dHyp[1], 1e-3);
     79        Assert.AreEqual(-0.0046, dHyp[0], 1e-3);
    7880        var dHypCovExpected = new double[] { 0.2652, -0.2386, 0.1706, -0.1744, 0.0000, 0.0000, -0.1744 };
    79         AssertEqual(dHypCovExpected, dHyp.Skip(2).ToArray(), 1e-3);
     81        AssertEqual(dHypCovExpected, dHyp.Skip(1).Take(7).ToArray(), 1e-3);
     82        Assert.AreEqual(0.8621, dHyp.Last(), 1e-3);
    8083
    8184        var predTrain = model.GetEstimatedValues(problemData.Dataset, new int[] { 0, 400 }).ToArray();
     
    8386        Assert.AreEqual(356.6076, predTrain[1], 1e-3);
    8487      }
     88
     89      /*
     90      {
     91        // example from GPML book
     92        var hyp = new double[] {
     93          341.0, // mean 341 ppm
     94          // SE iso (long term trend)
     95          Math.Log(67.0 / 45.0), // length scale 67 years
     96          Math.Log(Math.Sqrt(66)), // magnitude 66ppm
     97                   
     98          // product of SEiso and periodic
     99          Math.Log(90.0 / 45.0), // decay-time 90 years
     100          Math.Log(Math.Sqrt(2.4)), // magnitude 2.4ppm
     101
     102          Math.Log(1.3), // smoothness
     103          Math.Log(1), // period 1 year
     104          Math.Log(Math.Sqrt(2.4)), // magnitude 2.4ppm
     105
     106          // short term variation
     107          Math.Log(1.2 / 45.0), // typical length 1.2 years
     108          Math.Log(Math.Sqrt(0.66)), // magnitude 0.66ppm
     109          Math.Log(0.78), // shape (very small)
     110
     111          // SEiso (correlated noise)
     112          Math.Log(1.6 / 45.0 / 12.0), // 1.6 months
     113          Math.Log(Math.Sqrt(0.18)), // amplitude of correlated noise 0.18ppm
     114          Math.Log(Math.Sqrt(0.19)),  // theta11 0.19ppm noise
     115          };
     116
     117        covarianceFunction.Terms.Add(new CovarianceRQiso());
     118        covarianceFunction.Terms.Add(new CovarianceSEiso()); // correlated noise
     119        var model = new GaussianProcessModel(problemData.Dataset, targetVariable, allowedInputVariables, Enumerable.Range(0, 545), hyp,
     120                                             new MeanConst(),
     121                                             covarianceFunction);
     122        Assert.AreEqual(-108.5, model.NegativeLogLikelihood, 1);
     123      }
     124       */
    85125    }
    86126
Note: See TracChangeset for help on using the changeset viewer.