Package elki.clustering.em.models
Class TextbookMultivariateGaussianModel
- java.lang.Object
-
- elki.clustering.em.models.TextbookMultivariateGaussianModel
-
- All Implemented Interfaces:
EMClusterModel<NumberVector,EMModel>
public class TextbookMultivariateGaussianModel extends java.lang.Object implements EMClusterModel<NumberVector,EMModel>
Numerically problematic implementation of the GMM model, using the textbook algorithm. There is no reason to use this in practice, it is only useful to study the reliability of the textbook approach."Textbook" refers to the E[XY]-E[X]E[Y] equation for covariance, that is numerically not reliable with floating point math, but popular in textbooks.
Again, do not use this. Always prefer
MultivariateGaussianModel.- Since:
- 0.7.5
- Author:
- Erich Schubert
-
-
Field Summary
Fields Modifier and Type Field Description (package private) CholeskyDecompositioncholDecomposition of covariance matrix.(package private) double[][]covarianceCovariance matrix.(package private) doublelogNormNormalization factor.(package private) doublelogNormDetNormalization factor.(package private) double[]meanMean vector.(package private) double[][]priormatrixMatrix for prior conditioning.(package private) double[]tmpTemporary storage, to avoid reallocations.(package private) doubleweightWeight aggregation sum.(package private) doublewsumWeight aggregation sum.
-
Constructor Summary
Constructors Constructor Description TextbookMultivariateGaussianModel(double weight, double[] mean)Constructor.TextbookMultivariateGaussianModel(double weight, double[] mean, double[][] covariance)Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidbeginEStep()Begin the E step.voidcalculateModelLimits(double[] min, double[] max, ConstrainedQuadraticProblemSolver solver, double ipiPow, double[] minpnt, double[] maxpnt, double[] ret)Compute the weight of a Gaussian with respect to a bounding box.voidclone(TextbookMultivariateGaussianModel other)Copy the parameters of another model.doubleestimateLogDensity(NumberVector vec)Estimate the log likelihood of a vector.EMModelfinalizeCluster()Finalize a cluster model.voidfinalizeEStep(double weight, double prior)Finalize the E step.doublegetWeight()Get the cluster weight.doublemahalanobisDistance(NumberVector vec)Compute the Mahalanobis distance from the centroid for a given vector.voidsetWeight(double weight)Set the cluster weight.voidupdateE(double[] vec, double[][] covm, double sca, double wei)Add a set of points with covariance information, forKDTreeEM.voidupdateE(NumberVector vec, double wei)Process one data point in the E step-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface elki.clustering.em.models.EMClusterModel
finalizeFirstPassE, firstPassE, needsTwoPass
-
-
-
-
Field Detail
-
mean
double[] mean
Mean vector.
-
covariance
double[][] covariance
Covariance matrix.
-
chol
CholeskyDecomposition chol
Decomposition of covariance matrix.
-
tmp
double[] tmp
Temporary storage, to avoid reallocations.
-
logNorm
double logNorm
Normalization factor.
-
logNormDet
double logNormDet
Normalization factor.
-
weight
double weight
Weight aggregation sum.
-
wsum
double wsum
Weight aggregation sum.
-
priormatrix
double[][] priormatrix
Matrix for prior conditioning.
-
-
Constructor Detail
-
TextbookMultivariateGaussianModel
public TextbookMultivariateGaussianModel(double weight, double[] mean)Constructor.- Parameters:
weight- Cluster weightmean- Initial mean
-
TextbookMultivariateGaussianModel
public TextbookMultivariateGaussianModel(double weight, double[] mean, double[][] covariance)Constructor.- Parameters:
weight- Cluster weightmean- Initial meancovariance- initial covariance matrix
-
-
Method Detail
-
beginEStep
public void beginEStep()
Description copied from interface:EMClusterModelBegin the E step.- Specified by:
beginEStepin interfaceEMClusterModel<NumberVector,EMModel>
-
updateE
public void updateE(NumberVector vec, double wei)
Description copied from interface:EMClusterModelProcess one data point in the E step- Specified by:
updateEin interfaceEMClusterModel<NumberVector,EMModel>- Parameters:
vec- Vector to processwei- Weight of point ("responsibility" of the cluster)
-
updateE
public void updateE(double[] vec, double[][] covm, double sca, double wei)Add a set of points with covariance information, forKDTreeEM.- Parameters:
vec- sum of new pointscovm- sum of codeviatessca- scaling factor applied to vec and covm instead of weiwei- weight sum contribution
-
finalizeEStep
public void finalizeEStep(double weight, double prior)Description copied from interface:EMClusterModelFinalize the E step.- Specified by:
finalizeEStepin interfaceEMClusterModel<NumberVector,EMModel>- Parameters:
weight- weight of the clusterprior- MAP prior (0 for MLE)
-
mahalanobisDistance
public double mahalanobisDistance(NumberVector vec)
Compute the Mahalanobis distance from the centroid for a given vector.- Parameters:
vec- Vector- Returns:
- Mahalanobis distance
-
estimateLogDensity
public double estimateLogDensity(NumberVector vec)
Description copied from interface:EMClusterModelEstimate the log likelihood of a vector.- Specified by:
estimateLogDensityin interfaceEMClusterModel<NumberVector,EMModel>- Parameters:
vec- Vector- Returns:
- log likelihood.
-
getWeight
public double getWeight()
Description copied from interface:EMClusterModelGet the cluster weight.- Specified by:
getWeightin interfaceEMClusterModel<NumberVector,EMModel>- Returns:
- Cluster weight
-
setWeight
public void setWeight(double weight)
Description copied from interface:EMClusterModelSet the cluster weight.- Specified by:
setWeightin interfaceEMClusterModel<NumberVector,EMModel>- Parameters:
weight- Cluster weight
-
finalizeCluster
public EMModel finalizeCluster()
Description copied from interface:EMClusterModelFinalize a cluster model.- Specified by:
finalizeClusterin interfaceEMClusterModel<NumberVector,EMModel>- Returns:
- Cluster model
-
clone
public void clone(TextbookMultivariateGaussianModel other)
Copy the parameters of another model.- Parameters:
other- Other
-
calculateModelLimits
public void calculateModelLimits(double[] min, double[] max, ConstrainedQuadraticProblemSolver solver, double ipiPow, double[] minpnt, double[] maxpnt, double[] ret)Compute the weight of a Gaussian with respect to a bounding box.- Parameters:
min- Bounding box min will be modifiedmax- Bounding box max will be modifiedsolver- Quadratic solveripiPow- scaling constantminpnt- result array for argminmaxpnt- result array for argmaxret- Return array
-
-