Package gov.sandia.cognition.math.matrix

Examples of gov.sandia.cognition.math.matrix.Matrix


      final LogitMixParticle particle = particleEntry.getKey();

      final MultivariateGaussian predictivePrior = particle.getLinearState().clone();
      KalmanFilter kf = particle.getRegressionFilter();
      final Matrix G = kf.getModel().getA();
      final Matrix F = data.getObservedData();
      predictivePrior.setMean(G.times(predictivePrior.getMean()));
      predictivePrior.setCovariance(
          G.times(predictivePrior.getCovariance()).times(G.transpose())
            .plus(kf.getModelCovariance()));
      final Vector betaMean = predictivePrior.getMean();

      final int particleCount;
      if (particleEntry.getValue() instanceof MutableDoubleCount) {
        particleCount = ((MutableDoubleCount)particleEntry.getValue()).count;
      } else {
        particleCount = 1;
      }
      for (int p = 0; p < particleCount; p++) {
        for (int j = 0; j < 10; j++) {
          final LogitMixParticle predictiveParticle =
              particle.clone();

          predictiveParticle.setPreviousParticle(particle);
          predictiveParticle.setBetaSample(betaMean);
          predictiveParticle.setLinearState(predictivePrior);

          final UnivariateGaussian componentDist =
              filter.evDistribution.getDistributions().get(j);

          predictiveParticle.setEVcomponent(componentDist);
         
          /*
           * Update the observed data for the regression component.
           */
          predictiveParticle.getRegressionFilter().getModel().setC(F);

          final Matrix compVar = MatrixFactory.getDefault().copyArray(
              new double[][] {{componentDist.getVariance()}});
          predictiveParticle.getRegressionFilter().setMeasurementCovariance(compVar);
         
          final double compPredPriorObsMean =
               F.times(betaMean).getElement(0)
View Full Code Here


      final Vector dataSample = VectorFactory.getDenseDefault().copyArray(new
        double[] {1d});
      final double phi = Math.exp(-trueGlobalMean - dataSample.dotProduct(trueBetas));
      final double pi = 1d / (1d + phi);
      final Vector y = VectorFactory.getDenseDefault().createVector1D(rng.nextDouble() <= pi ? 1d : 0d);
      final Matrix dataDesign = MatrixFactory.getDenseDefault().copyRowVectors(dataSample);
      observations.add(ObservedValue.create(i, y, dataDesign));
    }

    /*
     * Instantiate PL filter by first providing prior parameters/distributions.
View Full Code Here

    final MultivariateGaussian initialPrior = new MultivariateGaussian(
        VectorFactory.getDefault().copyValues(0d, 0d),
        MatrixFactory.getDefault().copyArray(new double[][] {
            {10d, 0d},
            {0d, 10d}}));
    final Matrix F = MatrixFactory.getDefault().copyArray(new double[][] {
        {1d, 1d}});
    final Matrix G = MatrixFactory.getDefault().copyArray(new double[][] {
        {1d, 0d},
        {0d, 1d}});
    final Matrix modelCovariance = MatrixFactory.getDefault().copyArray(new double[][] {
        {0d, 0d},
        {0d, 0d}});
    final LogitFSWFFilter plFilter =
        new LogitFSWFFilter(initialPrior, F, G, modelCovariance, rng);
    plFilter.setNumParticles(10000);
View Full Code Here

      KalmanFilter currentFilter = this.stateFilters.get(currentClass);
      if (currentState == null) {
        currentState = currentFilter.createInitialLearnedObject().sample(random);
      } else {
        final Matrix G = currentFilter.getModel().getA();
        Matrix modelCovSqrt = CholeskyDecompositionMTJ.create(
            (DenseMatrix) currentFilter.getModelCovariance()).getR();
        currentState = MultivariateGaussian.sample(G.times(currentState), modelCovSqrt, random);
      }
      currentState.plusEquals(currentFilter.getModel().getB().times(
          currentFilter.getCurrentInput()));

      final Matrix F = currentFilter.getModel().getC();
      Vector observationMean = F.times(currentState);
      Matrix measurementCovSqrt = CholeskyDecompositionMTJ.create(
          (DenseMatrix) currentFilter.getMeasurementCovariance()).getR();
      Vector observation = MultivariateGaussian.sample(observationMean,
          measurementCovSqrt, random);
 
      results.add(new SimHmmObservedValue<Vector, Vector>(i, currentClass,
View Full Code Here

  @Override
  public MultivariateGaussian getEmissionFunction(MultivariateGaussian state, int classId) {
    KalmanFilter kf = this.stateFilters.get(classId);
    final Vector mean = kf.getModel().getC().times(state.getMean());
    final Matrix cov = kf.getModel().getC().times(state.getCovariance())
        .times(kf.getModel().getC().transpose())
        .plus(kf.getMeasurementCovariance());
    final MultivariateGaussian likelihood = new MultivariateGaussian(
        mean, cov);
    return likelihood;
View Full Code Here

       * Fruewirth-Schnatter's method for upper utility sampling, where
       * instead of sampling the predictors, we use the mean.
       */
      final MultivariateGaussian predictivePrior = particle.getLinearState().clone();
      KalmanFilter kf = particle.getRegressionFilter();
      final Matrix G = kf.getModel().getA();
      final Matrix F = data.getObservedData();
      predictivePrior.setMean(G.times(predictivePrior.getMean()));
      predictivePrior.setCovariance(
          G.times(predictivePrior.getCovariance()).times(G.transpose())
            .plus(kf.getModelCovariance()));
      final Vector betaSample =
          predictivePrior.sample(getRandom());
//          predictivePrior.getMean();
      final double predPriorObsMean =
            F.times(betaSample).getElement(0);

      final int particleCount;
      if (particleEntry.getValue() instanceof MutableDoubleCount) {
        particleCount = ((MutableDoubleCount)particleEntry.getValue()).count;
      } else {
        particleCount = 1;
      }
      for (int p = 0; p < particleCount; p++) {
        final double dSampledAugResponse = sampleAugResponse(predPriorObsMean, isOne);

        Vector sampledAugResponse = VectorFactory.getDefault().copyValues(dSampledAugResponse);

        for (int j = 0; j < 10; j++) {
          final LogitMixParticle predictiveParticle = particle.clone();
          predictiveParticle.setPreviousParticle(particle);
          predictiveParticle.setBetaSample(betaSample);
          predictiveParticle.setAugResponseSample(sampledAugResponse);
          predictiveParticle.setLinearState(predictivePrior);

          final UnivariateGaussian componentDist =
              this.evDistribution.getDistributions().get(j);

          predictiveParticle.setEVcomponent(componentDist);
         
          /*
           * Update the observed data for the regression component.
           */
          predictiveParticle.getRegressionFilter().getModel().setC(F);

          // TODO would be great to have a 1x1 matrix class here...
          final Matrix compVar = MatrixFactory.getDefault().copyArray(
              new double[][] {{componentDist.getVariance()}});
          predictiveParticle.getRegressionFilter().setMeasurementCovariance(compVar);
         
          final double compPredPriorObsMean =
               F.times(betaSample).getElement(0)
View Full Code Here

      final MultivariateGaussian postBeta = particle.getPriorBeta().clone();

      final ScaledInverseGammaCovDistribution postObsCov = particle.getPriorObsCov();

      final Matrix augCovLassoSample = this.augLassoDist.sample(random);
      final Matrix obsCovSample = postObsCov.sample(random);
     
      /*
       * Update sufficient stats.
       * TODO FIXME not done
       */
 
View Full Code Here

      final Vector y = observation.getObservedValue();
      /*
       * Now, we compute the predictive dist, so that we can evaluate the likelihood.
       */
      final Matrix X = observation.getObservedData();
      final Vector priorPredObsMean = X.times(particle.getPriorBeta().getMean());
      Matrix priorPredObsCov = X.times(
          particle.getPriorBeta().getCovariance())
          .times(X.transpose()).plus(particle.augLassoSample);
      priorPredObsCov.times(particle.priorObsCovSample);

      final MultivariateGaussian priorPredictiveObsDist=
          new MultivariateGaussian(priorPredObsMean, priorPredObsCov);

      return priorPredictiveObsDist.getProbabilityFunction().logEvaluate(y);
View Full Code Here

    public DataDistribution<LassoRegressionDistribution> createInitialParticles(int numParticles) {

      final DefaultDataDistribution<LassoRegressionDistribution> initialParticles =
          new DefaultDataDistribution<LassoRegressionDistribution>(numParticles);
      for (int i = 0; i < numParticles; i++) {
        final Matrix priorBetaCovSmpl = this.priorBetaCov.sample(this.rng);
        final Matrix augLassoSmpl = this.augLassoDist.sample(this.rng);
        final LassoRegressionDistribution particleMvgDPDist =
            new LassoRegressionDistribution(this.priorBeta.clone(),
                this.priorBetaCov.clone(), augLassoSmpl, priorBetaCovSmpl);
        initialParticles.increment(particleMvgDPDist);
      }
View Full Code Here

    for (Entry<LogitMixParticle, ? extends Number> particleEntry : target.asMap().entrySet()) {
      final LogitMixParticle particle = particleEntry.getKey();

      final MultivariateGaussian predictivePrior = particle.getLinearState().clone();
      KalmanFilter kf = particle.getRegressionFilter();
      final Matrix G = kf.getModel().getA();
      final Matrix F = data.getObservedData();
      predictivePrior.setMean(G.times(predictivePrior.getMean()));
      predictivePrior.setCovariance(
          G.times(predictivePrior.getCovariance()).times(G.transpose())
            .plus(kf.getModelCovariance()));
      final Vector betaMean = predictivePrior.getMean();

      final int particleCount;
      if (particleEntry.getValue() instanceof MutableDoubleCount) {
        particleCount = ((MutableDoubleCount)particleEntry.getValue()).count;
      } else {
        particleCount = 1;
      }
      for (int p = 0; p < particleCount; p++) {

        for (int j = 0; j < 10; j++) {
          final LogitMixParticle predictiveParticle = particle.clone();
          predictiveParticle.setPreviousParticle(particle);
          predictiveParticle.setBetaSample(betaMean);
          predictiveParticle.setLinearState(predictivePrior);

          final UnivariateGaussian componentDist =
              this.evDistribution.getDistributions().get(j);

          predictiveParticle.setEVcomponent(componentDist);
         
          /*
           * Update the observed data for the regression component.
           */
          predictiveParticle.getRegressionFilter().getModel().setC(F);

          // TODO would be great to have a 1x1 matrix class here...
          final Matrix compVar = MatrixFactory.getDefault().copyArray(
              new double[][] {{componentDist.getVariance()}});
          predictiveParticle.getRegressionFilter().setMeasurementCovariance(compVar);
         
          final double compPredPriorObsMean =
               F.times(betaMean).getElement(0)
View Full Code Here

TOP

Related Classes of gov.sandia.cognition.math.matrix.Matrix

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.