|
mlpack
|
This class represents the Gamma distribution. More...
#include <gamma_distribution.hpp>
Public Member Functions | |
| GammaDistribution (const size_t dimensionality=0) | |
| Construct the Gamma distribution with the given number of dimensions (default 0); each parameter will be initialized to 0. More... | |
| GammaDistribution (const arma::mat &data, const double tol=1e-8) | |
| Construct the Gamma distribution, training on the given parameters. More... | |
| GammaDistribution (const arma::vec &alpha, const arma::vec &beta) | |
| Construct the Gamma distribution given two vectors alpha and beta. More... | |
| ~GammaDistribution () | |
| Destructor. | |
| void | Train (const arma::mat &rdata, const double tol=1e-8) |
| This function trains (fits distribution parameters) to new data or the dataset the object owns. More... | |
| void | Train (const arma::mat &observations, const arma::vec &probabilities, const double tol=1e-8) |
| Fits an alpha and beta parameter according to observation probabilities. More... | |
| void | Train (const arma::vec &logMeanxVec, const arma::vec &meanLogxVec, const arma::vec &meanxVec, const double tol=1e-8) |
| This function trains (fits distribution parameters) to a dataset with pre-computed statistics logMeanx, meanLogx, meanx for each dimension. More... | |
| void | Probability (const arma::mat &observations, arma::vec &probabilities) const |
| This function returns the probability of a group of observations. More... | |
| double | Probability (double x, const size_t dim) const |
| This is a shortcut to the Probability(arma::mat&, arma::vec&) function for when we want to evaluate only the probability of one dimension of the gamma. More... | |
| void | LogProbability (const arma::mat &observations, arma::vec &logProbabilities) const |
| This function returns the logarithm of the probability of a group of observations. More... | |
| double | LogProbability (double x, const size_t dim) const |
| This function returns the logarithm of the probability of a single observation. More... | |
| arma::vec | Random () const |
| This function returns an observation of this distribution. | |
| double | Alpha (const size_t dim) const |
| Get the alpha parameter of the given dimension. | |
| double & | Alpha (const size_t dim) |
| Modify the alpha parameter of the given dimension. | |
| double | Beta (const size_t dim) const |
| Get the beta parameter of the given dimension. | |
| double & | Beta (const size_t dim) |
| Modify the beta parameter of the given dimension. | |
| size_t | Dimensionality () const |
| Get the dimensionality of the distribution. | |
This class represents the Gamma distribution.
It supports training a Gamma distribution on a given dataset and accessing the fitted alpha and beta parameters.
This class supports multidimensional Gamma distributions; however, it is assumed that each dimension is independent; therefore, a multidimensional Gamma distribution here may be seen as a set of independent single-dimensional Gamma distributions—and the parameters are estimated under this assumption.
The estimation algorithm used can be found in the following paper:
| GammaDistribution::GammaDistribution | ( | const size_t | dimensionality = 0 | ) |
Construct the Gamma distribution with the given number of dimensions (default 0); each parameter will be initialized to 0.
| dimensionality | Number of dimensions. |
| GammaDistribution::GammaDistribution | ( | const arma::mat & | data, |
| const double | tol = 1e-8 |
||
| ) |
Construct the Gamma distribution, training on the given parameters.
| data | Data to train the distribution on. |
| tol | Convergence tolerance. This is not an absolute measure: It will stop the approximation once the change in the value is smaller than tol. |
| GammaDistribution::GammaDistribution | ( | const arma::vec & | alpha, |
| const arma::vec & | beta | ||
| ) |
Construct the Gamma distribution given two vectors alpha and beta.
| alpha | The vector of alphas, one per dimension. |
| beta | The vector of betas, one per dimension. |
| void GammaDistribution::LogProbability | ( | const arma::mat & | observations, |
| arma::vec & | logProbabilities | ||
| ) | const |
This function returns the logarithm of the probability of a group of observations.
The logarithm of the probability of a value x is
\[ \log(\frac{x^{(\alpha - 1)}}{\Gamma(\alpha) \beta^\alpha} e^ {-\frac{x}{\beta}}) \]
for one dimension. This implementation assumes each dimension is independent, so the product rule is used.
| observations | Matrix of observations, one per column. |
| logProbabilities | Column vector of log probabilities, one per observation. |
| double GammaDistribution::LogProbability | ( | double | x, |
| const size_t | dim | ||
| ) | const |
This function returns the logarithm of the probability of a single observation.
| x | The 1-dimensional observation. |
| dim | The dimension for which to calculate the probability. |
| void GammaDistribution::Probability | ( | const arma::mat & | observations, |
| arma::vec & | probabilities | ||
| ) | const |
This function returns the probability of a group of observations.
The probability of the value x is
\[ \frac{x^{(\alpha - 1)}}{\Gamma(\alpha) \beta^\alpha} e^{-\frac{x}{\beta}} \]
for one dimension. This implementation assumes each dimension is independent, so the product rule is used.
| observations | Matrix of observations, one per column. |
| probabilities | Column vector of probabilities, one per observation. |
| double GammaDistribution::Probability | ( | double | x, |
| const size_t | dim | ||
| ) | const |
This is a shortcut to the Probability(arma::mat&, arma::vec&) function for when we want to evaluate only the probability of one dimension of the gamma.
| x | The 1-dimensional observation. |
| dim | The dimension for which to calculate the probability. |
| void GammaDistribution::Train | ( | const arma::mat & | rdata, |
| const double | tol = 1e-8 |
||
| ) |
This function trains (fits distribution parameters) to new data or the dataset the object owns.
| rdata | Reference data to fit parameters to. |
| tol | Convergence tolerance. This is not an absolute measure: It will stop the approximation once the change in the value is smaller than tol. |
| void GammaDistribution::Train | ( | const arma::mat & | observations, |
| const arma::vec & | probabilities, | ||
| const double | tol = 1e-8 |
||
| ) |
Fits an alpha and beta parameter according to observation probabilities.
This method is not yet implemented.
| observations | The reference data, one observation per column. |
| probabilities | The probability of each observation. One value per column of the observations matrix. |
| tol | Convergence tolerance. This is not an absolute measure: It will stop the approximation once the change in the value is smaller than tol. |
| void GammaDistribution::Train | ( | const arma::vec & | logMeanxVec, |
| const arma::vec & | meanLogxVec, | ||
| const arma::vec & | meanxVec, | ||
| const double | tol = 1e-8 |
||
| ) |
This function trains (fits distribution parameters) to a dataset with pre-computed statistics logMeanx, meanLogx, meanx for each dimension.
| logMeanxVec | Is each dimension's logarithm of the mean (log(mean(x))). |
| meanLogxVec | Is each dimension's mean of logarithms (mean(log(x))). |
| meanxVec | Is each dimension's mean (mean(x)). |
| tol | Convergence tolerance. This is not an absolute measure: It will stop the approximation once the change in the value is smaller than tol. |
1.8.13