public MultivariateGaussian.PDF getMean( Collection<? extends Vector> samples) { MultivariateGaussian.PDF pdf = MultivariateGaussian.MaximumLikelihoodEstimator.learn( samples,DEFAULT_VARIANCE); Matrix C = pdf.getCovariance().scale( 1.0/samples.size() ); pdf.setCovariance(C); return pdf; }
public MultivariateGaussian.PDF getMean( Collection<? extends Vector> samples) { MultivariateGaussian.PDF pdf = MultivariateGaussian.MaximumLikelihoodEstimator.learn( samples,DEFAULT_VARIANCE); Matrix C = pdf.getCovariance().scale( 1.0/samples.size() ); pdf.setCovariance(C); return pdf; }
public MultivariateGaussian.PDF getMean( Collection<? extends Vector> samples) { MultivariateGaussian.PDF pdf = MultivariateGaussian.MaximumLikelihoodEstimator.learn( samples,DEFAULT_VARIANCE); Matrix C = pdf.getCovariance().scale( 1.0/samples.size() ); pdf.setCovariance(C); return pdf; }
@Override public Matrix getMean() { final int p = this.getInputDimensionality(); double denominator = this.getDegreesOfFreedom() - p - 1.0; return this.getInverseScale().scale( 1.0 / denominator ); }
@Override public Matrix getMean() { final int p = this.getInputDimensionality(); double denominator = this.getDegreesOfFreedom() - p - 1.0; return this.getInverseScale().scale( 1.0 / denominator ); }
@Override public Matrix getMean() { final int p = this.getInputDimensionality(); double denominator = this.getDegreesOfFreedom() - p - 1.0; return this.getInverseScale().scale( 1.0 / denominator ); }
public Matrix differentiate( Vector input) { int M = input.getDimensionality(); Matrix dydx = MatrixFactory.getDefault().createIdentity(M,M).scale( this.getScaleFactor() ); return dydx; }
public Matrix differentiate( Vector input) { int M = input.getDimensionality(); Matrix dydx = MatrixFactory.getDefault().createIdentity(M,M).scale( this.getScaleFactor() ); return dydx; }
public Matrix differentiate( Vector input) { int M = input.getDimensionality(); Matrix dydx = MatrixFactory.getDefault().createIdentity(M,M).scale( this.getScaleFactor() ); return dydx; }
/** * Creates a new instance of BayesianLinearRegression * @param dimensionality * Sets up the parameters (except featureMap) for the given dimensionality * of objects in feature space. */ public BayesianLinearRegression( int dimensionality ) { this( DEFAULT_OUTPUT_VARIANCE, new MultivariateGaussian( VectorFactory.getDefault().createVector(dimensionality), MatrixFactory.getDefault().createIdentity(dimensionality,dimensionality).scale( DEFAULT_WEIGHT_VARIANCE ) ) ); }
/** * Creates a new instance of BayesianLinearRegression * @param dimensionality * Sets up the parameters (except featureMap) for the given dimensionality * of objects in feature space. */ public BayesianLinearRegression( int dimensionality ) { this( DEFAULT_OUTPUT_VARIANCE, new MultivariateGaussian( VectorFactory.getDefault().createVector(dimensionality), MatrixFactory.getDefault().createIdentity(dimensionality,dimensionality).scale( DEFAULT_WEIGHT_VARIANCE ) ) ); }
/** * Creates a new instance of BayesianLinearRegression * @param dimensionality * Sets up the parameters (except featureMap) for the given dimensionality * of objects in feature space. */ public BayesianLinearRegression( int dimensionality ) { this( DEFAULT_OUTPUT_VARIANCE, new MultivariateGaussian( VectorFactory.getDefault().createVector(dimensionality), MatrixFactory.getDefault().createIdentity(dimensionality,dimensionality).scale( DEFAULT_WEIGHT_VARIANCE ) ) ); }
/** * Creates a new instance of BayesianLinearRegression * @param dimensionality * Sets up the parameters (except featureMap) for the given dimensionality * of objects in feature space. */ public BayesianRobustLinearRegression( int dimensionality ) { this( new InverseGammaDistribution(), new MultivariateGaussian( VectorFactory.getDefault().createVector(dimensionality), MatrixFactory.getDefault().createIdentity(dimensionality,dimensionality).scale( DEFAULT_WEIGHT_VARIANCE ) ) ); }
/** * Creates a new instance of BayesianLinearRegression * @param dimensionality * Sets up the parameters (except featureMap) for the given dimensionality * of objects in feature space. */ public BayesianRobustLinearRegression( int dimensionality ) { this( new InverseGammaDistribution(), new MultivariateGaussian( VectorFactory.getDefault().createVector(dimensionality), MatrixFactory.getDefault().createIdentity(dimensionality,dimensionality).scale( DEFAULT_WEIGHT_VARIANCE ) ) ); }
/** * Creates a new instance of BayesianLinearRegression * @param dimensionality * Sets up the parameters (except featureMap) for the given dimensionality * of objects in feature space. */ public BayesianRobustLinearRegression( int dimensionality ) { this( new InverseGammaDistribution(), new MultivariateGaussian( VectorFactory.getDefault().createVector(dimensionality), MatrixFactory.getDefault().createIdentity(dimensionality,dimensionality).scale( DEFAULT_WEIGHT_VARIANCE ) ) ); }
@Override public void sampleInto( final Random random, final int sampleCount, final Collection<? super Vector> output) { final double[] varianceScales = this.getInverseGamma().sampleAsDoubles(random, sampleCount); MultivariateGaussian sampler = this.getGaussian().clone(); for( int n = 0; n < sampleCount; n++ ) { double varianceScale = varianceScales[n]; sampler.setCovariance( this.getGaussian().getCovariance().scale( varianceScale ) ); output.add( sampler.sample(random) ); } }
@Override public void sampleInto( final Random random, final int sampleCount, final Collection<? super Vector> output) { final double[] varianceScales = this.getInverseGamma().sampleAsDoubles(random, sampleCount); MultivariateGaussian sampler = this.getGaussian().clone(); for( int n = 0; n < sampleCount; n++ ) { double varianceScale = varianceScales[n]; sampler.setCovariance( this.getGaussian().getCovariance().scale( varianceScale ) ); output.add( sampler.sample(random) ); } }
public MultivariateStudentTDistribution createPredictiveDistribution( NormalInverseWishartDistribution posterior) { Vector mean = posterior.getGaussian().getMean(); double dofs = posterior.getInverseWishart().getDegreesOfFreedom() - posterior.getInverseWishart().getInputDimensionality() + 1.0; Matrix covariance = posterior.getInverseWishart().getInverseScale().scale( (posterior.getCovarianceDivisor()+1.0) / (posterior.getCovarianceDivisor()*dofs) ); Matrix precision = covariance.inverse(); return new MultivariateStudentTDistribution( dofs, mean, precision ); }
public MultivariateStudentTDistribution createPredictiveDistribution( NormalInverseWishartDistribution posterior) { Vector mean = posterior.getGaussian().getMean(); double dofs = posterior.getInverseWishart().getDegreesOfFreedom() - posterior.getInverseWishart().getInputDimensionality() + 1.0; Matrix covariance = posterior.getInverseWishart().getInverseScale().scale( (posterior.getCovarianceDivisor()+1.0) / (posterior.getCovarianceDivisor()*dofs) ); Matrix precision = covariance.inverse(); return new MultivariateStudentTDistribution( dofs, mean, precision ); }
public MultivariateStudentTDistribution createPredictiveDistribution( NormalInverseWishartDistribution posterior) { Vector mean = posterior.getGaussian().getMean(); double dofs = posterior.getInverseWishart().getDegreesOfFreedom() - posterior.getInverseWishart().getInputDimensionality() + 1.0; Matrix covariance = posterior.getInverseWishart().getInverseScale().scale( (posterior.getCovarianceDivisor()+1.0) / (posterior.getCovarianceDivisor()*dofs) ); Matrix precision = covariance.inverse(); return new MultivariateStudentTDistribution( dofs, mean, precision ); }