JWS C Library
C language utility library
bmm.c File Reference

Bernoulli mixture model and parameter fitting using EM. More...

#include <jwsc/config.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include <math.h>
#include <inttypes.h>
#include "jwsc/base/limits.h"
#include "jwsc/vector/vector.h"
#include "jwsc/vector/vector_math.h"
#include "jwsc/matrix/matrix.h"
#include "jwsc/matrix/matrix_math.h"
#include "jwsc/matblock/matblock.h"
#include "jwsc/prob/mv_pmf.h"
#include "jwsc/stat/stat.h"
#include "jwsc/stat/kmeans.h"
#include "jwsc/stat/bmm.h"
Include dependency graph for bmm.c:

Go to the source code of this file.

Functions

static void bmm_e_step_d (const Matrix_d *mu, const Vector_d *pi, Matrix_d *gamma, const Matrix_u32 *x)
 E-step in the EM algorithm.
static void bmm_m_step_d (Matrix_d *mu, Vector_d *pi, const Matrix_d *gamma, const Matrix_u32 *x)
 M-step in the EM algorithm.
double bmm_log_likelihood_d (const Matrix_d *mu, const Vector_d *pi, const Matrix_u32 *x)
 Computes the double precision Bernoulli mixture model log-likelihood.
void bmm_kmeans_init_d (Matrix_d **mu_out, Vector_d **pi_out, const Matrix_u32 *x, uint32_t K)
 Initializes the double precision Bernoulli mixture model using the kmeans clustering algorithm.
void train_bmm_d (Matrix_d **mu_out, Vector_d **pi_out, const Matrix_u32 *x, uint32_t K)
 Trains a double precision Bernoulli mixture model.

Detailed Description

Bernoulli mixture model and parameter fitting using EM.

Author:
Joseph Schlecht
License:
Creative Commons BY-NC-SA 3.0

Definition in file bmm.c.


Function Documentation

static void bmm_e_step_d ( const Matrix_d mu,
const Vector_d pi,
Matrix_d gamma,
const Matrix_u32 x 
) [static]

E-step in the EM algorithm.

Definition at line 68 of file bmm.c.

static void bmm_m_step_d ( Matrix_d mu,
Vector_d pi,
const Matrix_d gamma,
const Matrix_u32 x 
) [static]

M-step in the EM algorithm.

Definition at line 119 of file bmm.c.

double bmm_log_likelihood_d ( const Matrix_d mu,
const Vector_d pi,
const Matrix_u32 x 
)

Computes the double precision Bernoulli mixture model log-likelihood.

Parameters:
muMultivariate Bernoulli means.
piMixture component weights.
xBinary data.

Definition at line 173 of file bmm.c.

void bmm_kmeans_init_d ( Matrix_d **  mu_out,
Vector_d **  pi_out,
const Matrix_u32 x,
uint32_t  K 
)

Initializes the double precision Bernoulli mixture model using the kmeans clustering algorithm.

If one of the arguments is already allocated, it is assumed to be initialized as well.

Minimum cluster membership is 1 sample.

Parameters:
mu_outMultivariate Bernoulli parameters.
pi_outMixture component weights.
xData.
KNumber of mixture components.

Definition at line 232 of file bmm.c.

void train_bmm_d ( Matrix_d **  mu_out,
Vector_d **  pi_out,
const Matrix_u32 x,
uint32_t  K 
)

Trains a double precision Bernoulli mixture model.

If *mu_out and *pi_out are not initialized, bmm_kmeans_init_d() is used to do so.

Parameters:
mu_outResult parameter. Parameters for mixture components.
pi_outResult parameter. Mixture component weights.
xData to train the BMM with.
KNumber of mixture components.

Definition at line 311 of file bmm.c.