mlpack  master
Public Member Functions | Private Attributes | List of all members
mlpack::distribution::LaplaceDistribution Class Reference

The multivariate Laplace distribution centered at 0 has pdf. More...

Public Member Functions

 LaplaceDistribution ()
 Default constructor, which creates a Laplace distribution with zero dimension and zero scale parameter. More...
 
 LaplaceDistribution (const size_t dimensionality, const double scale)
 Construct the Laplace distribution with the given scale and dimensionality. More...
 
 LaplaceDistribution (const arma::vec &mean, const double scale)
 Construct the Laplace distribution with the given mean and scale parameter. More...
 
size_t Dimensionality () const
 Return the dimensionality of this distribution. More...
 
void Estimate (const arma::mat &observations)
 Estimate the Laplace distribution directly from the given observations. More...
 
void Estimate (const arma::mat &observations, const arma::vec &probabilities)
 Estimate the Laplace distribution from the given observations, taking into account the probability of each observation actually being from this distribution. More...
 
double LogProbability (const arma::vec &observation) const
 Return the log probability of the given observation. More...
 
const arma::vec & Mean () const
 Return the mean. More...
 
arma::vec & Mean ()
 Modify the mean. More...
 
double Probability (const arma::vec &observation) const
 Return the probability of the given observation. More...
 
arma::vec Random () const
 Return a randomly generated observation according to the probability distribution defined by this object. More...
 
double Scale () const
 Return the scale parameter. More...
 
double & Scale ()
 Modify the scale parameter. More...
 
template<typename Archive >
void Serialize (Archive &ar, const unsigned int)
 Serialize the distribution. More...
 

Private Attributes

arma::vec mean
 Mean of the distribution. More...
 
double scale
 Scale parameter of the distribution. More...
 

Detailed Description

The multivariate Laplace distribution centered at 0 has pdf.

\[ f(x|\theta) = \frac{1}{2 \theta}\exp\left(-\frac{\|x - \mu\|}{\theta}\right) \]

given scale parameter $\theta$ and mean $\mu$. This implementation assumes a diagonal covariance, but a rewrite to support arbitrary covariances is possible.

See the following paper for more information on the non-diagonal-covariance Laplace distribution and estimation techniques:

@article{eltoft2006multivariate,
title={{On the Multivariate Laplace Distribution}},
author={Eltoft, Torbj\orn and Kim, Taesu and Lee, Te-Won},
journal={IEEE Signal Processing Letters},
volume={13},
number={5},
pages={300--304},
year={2006}
}

Note that because of the diagonal covariance restriction, much of the algebra in the paper above becomes simplified, and the PDF takes roughly the same form as the univariate case.

Definition at line 49 of file laplace_distribution.hpp.

Constructor & Destructor Documentation

mlpack::distribution::LaplaceDistribution::LaplaceDistribution ( )
inline

Default constructor, which creates a Laplace distribution with zero dimension and zero scale parameter.

Definition at line 56 of file laplace_distribution.hpp.

mlpack::distribution::LaplaceDistribution::LaplaceDistribution ( const size_t  dimensionality,
const double  scale 
)
inline

Construct the Laplace distribution with the given scale and dimensionality.

The mean is initialized to zero.

Parameters
dimensionalityDimensionality of distribution.
scaleScale of distribution.

Definition at line 65 of file laplace_distribution.hpp.

mlpack::distribution::LaplaceDistribution::LaplaceDistribution ( const arma::vec &  mean,
const double  scale 
)
inline

Construct the Laplace distribution with the given mean and scale parameter.

Parameters
meanMean of distribution.
scaleScale of distribution.

Definition at line 74 of file laplace_distribution.hpp.

Member Function Documentation

size_t mlpack::distribution::LaplaceDistribution::Dimensionality ( ) const
inline

Return the dimensionality of this distribution.

Definition at line 78 of file laplace_distribution.hpp.

References mean.

void mlpack::distribution::LaplaceDistribution::Estimate ( const arma::mat &  observations)

Estimate the Laplace distribution directly from the given observations.

Parameters
observationsList of observations.

Referenced by Random().

void mlpack::distribution::LaplaceDistribution::Estimate ( const arma::mat &  observations,
const arma::vec &  probabilities 
)

Estimate the Laplace distribution from the given observations, taking into account the probability of each observation actually being from this distribution.

double mlpack::distribution::LaplaceDistribution::LogProbability ( const arma::vec &  observation) const

Return the log probability of the given observation.

Referenced by Probability().

const arma::vec& mlpack::distribution::LaplaceDistribution::Mean ( ) const
inline

Return the mean.

Definition at line 134 of file laplace_distribution.hpp.

References mean.

arma::vec& mlpack::distribution::LaplaceDistribution::Mean ( )
inline

Modify the mean.

Definition at line 136 of file laplace_distribution.hpp.

References mean.

double mlpack::distribution::LaplaceDistribution::Probability ( const arma::vec &  observation) const
inline

Return the probability of the given observation.

Definition at line 83 of file laplace_distribution.hpp.

References LogProbability().

arma::vec mlpack::distribution::LaplaceDistribution::Random ( ) const
inline

Return a randomly generated observation according to the probability distribution defined by this object.

This is inlined for speed.

Returns
Random observation from this Laplace distribution.

Definition at line 99 of file laplace_distribution.hpp.

References Estimate(), mean, and scale.

double mlpack::distribution::LaplaceDistribution::Scale ( ) const
inline

Return the scale parameter.

Definition at line 139 of file laplace_distribution.hpp.

References scale.

double& mlpack::distribution::LaplaceDistribution::Scale ( )
inline

Modify the scale parameter.

Definition at line 141 of file laplace_distribution.hpp.

References scale.

template<typename Archive >
void mlpack::distribution::LaplaceDistribution::Serialize ( Archive &  ar,
const unsigned  int 
)
inline

Serialize the distribution.

Definition at line 147 of file laplace_distribution.hpp.

References mlpack::data::CreateNVP(), mean, and scale.

Member Data Documentation

arma::vec mlpack::distribution::LaplaceDistribution::mean
private

Mean of the distribution.

Definition at line 155 of file laplace_distribution.hpp.

Referenced by Dimensionality(), Mean(), Random(), and Serialize().

double mlpack::distribution::LaplaceDistribution::scale
private

Scale parameter of the distribution.

Definition at line 157 of file laplace_distribution.hpp.

Referenced by Random(), Scale(), and Serialize().


The documentation for this class was generated from the following file: