statistics-dirichlet-0.6.1: Functions for working with Dirichlet densities and mixtures on vectors.

Safe HaskellSafe-Infered






Data types

data DirichletMixture Source

A Dirichlet mixture.




dmWeights :: !(Vector Double)

Weights of each density.

dmDensities :: !Matrix

Values of all parameters of all densities. This matrix has length dmWeights rows.

dmComponents :: DirichletMixture -> IntSource

Number of components in a dirichlet mixture.

dmParameters :: DirichletMixture -> IntSource

Number of parameters each component has.

dmDensitiesL :: DirichletMixture -> [DirichletDensity]Source

Separated list of densities.

(!!!) :: DirichletMixture -> Int -> Vector DoubleSource

dm !!! i is the i-th density. No bounding checks are made.

empty :: Int -> Int -> Double -> DirichletMixtureSource

empty q n x is an "empty" Dirichlet mixture with q components and n parameters. Each component has size n, weight inversely proportional to its index and all alphas set to x.

type Component = (Double, [Double])Source

A list representation of a component of a Dirichlet mixture. Used by fromList and toList only.

fromList :: [Component] -> DirichletMixtureSource

fromList xs constructs a Dirichlet mixture from a non-empty list of components. Each component has a weight and a list of alpha values. The weights sum to 1, all lists must have the same number of values and every number must be non-negative. None of these preconditions are verified.

toList :: DirichletMixture -> [Component]Source

toList dm is the inverse of fromList, constructs a list of components from a Dirichlet mixture. There are no error conditions and toList . fromList == id.

fromDD :: DirichletDensity -> DirichletMixtureSource

Constructs a Dirichlet mixture of one component from a Dirichlet density.

Training data

data TrainingData Source

Pre-processed training vectors (see prepareTraining).

prepareTraining :: TrainingVectors -> TrainingDataSource

Prepares training vectors to be used as training data. Anything that depends only on the training vectors is precalculated here.

We also try to find columns where all training vectors are zero. Those columns are removed from the derivation process and every component will have zero value on that column. Note that at least one column should have non-zero training vectors.


derive :: DirichletMixture -> Predicate -> StepSize -> TrainingData -> Result DirichletMixtureSource

Derive a Dirichlet mixture using a maximum likelihood method as described by Karplus et al (equation 25) using CG_DESCENT method by Hager and Zhang (see Numeric.Optimization.Algorithms.HagerZhang05). All training vectors should have the same length, however this is not verified.

cost :: TrainingData -> DirichletMixture -> DoubleSource

Cost function for deriving a Dirichlet mixture (equation 18). This function is minimized by derive. Calculated using (17) and (54).

del_cost_w :: TrainingData -> DirichletMixture -> MatrixSource

Derivative of the cost function with respect w_{i,j}, defined by Equation (22). The result is given in the same size and order as the dmDensitites vector.