|
mlpack
master
|
This class represents the Gamma distribution. More...
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. More... | |
| double | Alpha (const size_t dim) const |
| Get the alpha parameter of the given dimension. More... | |
| double & | Alpha (const size_t dim) |
| Modify the alpha parameter of the given dimension. More... | |
| double | Beta (const size_t dim) const |
| Get the beta parameter of the given dimension. More... | |
| double & | Beta (const size_t dim) |
| Modify the beta parameter of the given dimension. More... | |
| size_t | Dimensionality () const |
| Get the dimensionality of the distribution. 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... | |
| 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, size_t dim) const |
| arma::vec | Random () const |
| This function returns an observation of this distribution. More... | |
| 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... | |
Private Member Functions | |
| bool | Converged (const double aOld, const double aNew, const double tol) |
| This is a small function that returns true if the update of alpha is smaller than the tolerance ratio. More... | |
Private Attributes | |
| arma::vec | alpha |
| Array of fitted alphas. More... | |
| arma::vec | beta |
| Array of fitted betas. More... | |
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:
Definition at line 51 of file gamma_distribution.hpp.
| mlpack::distribution::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. |
| mlpack::distribution::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. |
| mlpack::distribution::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. |
|
inline |
Destructor.
Definition at line 83 of file gamma_distribution.hpp.
References LogProbability(), Probability(), Random(), and Train().
|
inline |
Get the alpha parameter of the given dimension.
Definition at line 183 of file gamma_distribution.hpp.
|
inline |
Modify the alpha parameter of the given dimension.
Definition at line 185 of file gamma_distribution.hpp.
|
inline |
Get the beta parameter of the given dimension.
Definition at line 188 of file gamma_distribution.hpp.
|
inline |
Modify the beta parameter of the given dimension.
Definition at line 190 of file gamma_distribution.hpp.
|
inlineprivate |
This is a small function that returns true if the update of alpha is smaller than the tolerance ratio.
| aOld | old value of parameter we want to estimate (alpha in our case). |
| aNew | new value of parameter (the value after 1 iteration from aOld). |
| tol | Convergence tolerance. Relative measure (see documentation of GammaDistribution::Train). |
|
inline |
Get the dimensionality of the distribution.
Definition at line 193 of file gamma_distribution.hpp.
| void mlpack::distribution::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({x^( - 1)}{() * ^} * e ^ {-{x}{}})
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. |
Referenced by ~GammaDistribution().
| void mlpack::distribution::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
{x^( - 1)}{() * ^} * e ^ {-{x}{}}
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. |
Referenced by ~GammaDistribution().
| double mlpack::distribution::GammaDistribution::Probability | ( | double | x, |
| size_t | dim | ||
| ) | const |
| arma::vec mlpack::distribution::GammaDistribution::Random | ( | ) | const |
This function returns an observation of this distribution.
Referenced by ~GammaDistribution().
| void mlpack::distribution::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. |
Referenced by ~GammaDistribution().
| void mlpack::distribution::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 mlpack::distribution::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. |
|
private |
Array of fitted alphas.
Definition at line 197 of file gamma_distribution.hpp.
|
private |
Array of fitted betas.
Definition at line 199 of file gamma_distribution.hpp.
1.8.11