|
| KDE (const double relError=KDEDefaultParams::relError, const double absError=KDEDefaultParams::absError, KernelType kernel=KernelType(), const KDEMode mode=KDEDefaultParams::mode, MetricType metric=MetricType(), const bool monteCarlo=KDEDefaultParams::monteCarlo, const double mcProb=KDEDefaultParams::mcProb, const size_t initialSampleSize=KDEDefaultParams::initialSampleSize, const double mcEntryCoef=KDEDefaultParams::mcEntryCoef, const double mcBreakCoef=KDEDefaultParams::mcBreakCoef) |
| Initialize KDE object using custom instantiated Metric and Kernel objects. More...
|
|
| KDE (const KDE &other) |
| Construct KDE object as a copy of the given model. More...
|
|
| KDE (KDE &&other) |
| Construct KDE object taking ownership of the given model. More...
|
|
KDE & | operator= (const KDE &other) |
| Copy a KDE model. More...
|
|
KDE & | operator= (KDE &&other) |
| Move a KDE model. More...
|
|
| ~KDE () |
| Destroy the KDE object. More...
|
|
void | Train (MatType referenceSet) |
| Trains the KDE model. More...
|
|
void | Train (Tree *referenceTree, std::vector< size_t > *oldFromNewReferences) |
| Trains the KDE model. More...
|
|
void | Evaluate (MatType querySet, arma::vec &estimations) |
| Estimate density of each point in the query set given the data of the reference set. More...
|
|
void | Evaluate (Tree *queryTree, const std::vector< size_t > &oldFromNewQueries, arma::vec &estimations) |
| Estimate density of each point in the query set given the data of an already created query tree. More...
|
|
void | Evaluate (arma::vec &estimations) |
| Estimate density of each point in the reference set given the data of the reference set. More...
|
|
const KernelType & | Kernel () const |
| Get the kernel.
|
|
KernelType & | Kernel () |
| Modify the kernel.
|
|
const MetricType & | Metric () const |
| Get the metric.
|
|
MetricType & | Metric () |
| Modify the metric.
|
|
Tree * | ReferenceTree () |
| Get the reference tree.
|
|
double | RelativeError () const |
| Get relative error tolerance.
|
|
void | RelativeError (const double newError) |
| Modify relative error tolerance (0 <= newError <= 1).
|
|
double | AbsoluteError () const |
| Get absolute error tolerance.
|
|
void | AbsoluteError (const double newError) |
| Modify absolute error tolerance (0 <= newError).
|
|
bool | OwnsReferenceTree () const |
| Check whether reference tree is owned by the KDE model.
|
|
bool | IsTrained () const |
| Check whether KDE model is trained or not.
|
|
KDEMode | Mode () const |
| Get the mode of KDE.
|
|
KDEMode & | Mode () |
| Modify the mode of KDE.
|
|
bool | MonteCarlo () const |
| Get whether Monte Carlo estimations are being used or not.
|
|
bool & | MonteCarlo () |
| Modify whether Monte Carlo estimations are being used or not.
|
|
double | MCProb () const |
| Get Monte Carlo probability of error being bounded by relative error.
|
|
void | MCProb (const double newProb) |
| Modify Monte Carlo probability of error being bounded by relative error. More...
|
|
size_t | MCInitialSampleSize () const |
| Get Monte Carlo initial sample size.
|
|
size_t & | MCInitialSampleSize () |
| Modify Monte Carlo initial sample size.
|
|
double | MCEntryCoef () const |
| Get Monte Carlo entry coefficient.
|
|
void | MCEntryCoef (const double newCoef) |
| Modify Monte Carlo entry coefficient. (newCoef >= 1).
|
|
double | MCBreakCoef () const |
| Get Monte Carlo break coefficient.
|
|
void | MCBreakCoef (const double newCoef) |
| Modify Monte Carlo break coefficient. (0 < newCoef <= 1).
|
|
template<typename Archive > |
void | serialize (Archive &ar, const uint32_t version) |
| Serialize the model.
|
|
template<typename KernelType = kernel::GaussianKernel, typename MetricType = mlpack::metric::EuclideanDistance, typename MatType = arma::mat, template< typename TreeMetricType, typename TreeStatType, typename TreeMatType > class TreeType = tree::KDTree, template< typename RuleType > class DualTreeTraversalType = TreeType<MetricType, kde::KDEStat, MatType>::template DualTreeTraverser, template< typename RuleType > class SingleTreeTraversalType = TreeType<MetricType, kde::KDEStat, MatType>::template SingleTreeTraverser>
class mlpack::kde::KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType >
The KDE class is a template class for performing Kernel Density Estimations.
In statistics, kernel density estimation is a way to estimate the probability density function of a variable in a non parametric way. This implementation performs this estimation using a tree-independent dual-tree algorithm. Details about this algorithm are available in KDERules.
- Template Parameters
-
KernelType | Kernel function to use for KDE calculations. |
MetricType | Metric to use for KDE calculations. |
MatType | Type of data to use. |
TreeType | Type of tree to use; must satisfy the TreeType policy API. |
DualTreeTraversalType | Type of dual-tree traversal to use. |
SingleTreeTraversalType | Type of single-tree traversal to use. |
template<typename KernelType, typename MetricType, typename MatType , template< typename TreeMetricType, typename TreeStatType, typename TreeMatType > class TreeType, template< typename > class DualTreeTraversalType, template< typename > class SingleTreeTraversalType>
mlpack::kde::KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType >::KDE |
( |
const double |
relError = KDEDefaultParams::relError , |
|
|
const double |
absError = KDEDefaultParams::absError , |
|
|
KernelType |
kernel = KernelType() , |
|
|
const KDEMode |
mode = KDEDefaultParams::mode , |
|
|
MetricType |
metric = MetricType() , |
|
|
const bool |
monteCarlo = KDEDefaultParams::monteCarlo , |
|
|
const double |
mcProb = KDEDefaultParams::mcProb , |
|
|
const size_t |
initialSampleSize = KDEDefaultParams::initialSampleSize , |
|
|
const double |
mcEntryCoef = KDEDefaultParams::mcEntryCoef , |
|
|
const double |
mcBreakCoef = KDEDefaultParams::mcBreakCoef |
|
) |
| |
Initialize KDE object using custom instantiated Metric and Kernel objects.
- Parameters
-
relError | Relative error tolerance of the model. |
absError | Absolute error tolerance of the model. |
kernel | Instantiated kernel object. |
mode | Mode for the algorithm. |
metric | Instantiated metric object. |
monteCarlo | Whether to use Monte Carlo estimations when possible. |
mcProb | Probability of a Monte Carlo estimation to be bounded by relative error tolerance. |
initialSampleSize | Initial sample size for Monte Carlo estimations. |
mcEntryCoef | Coefficient to control how much larger does the amount of node descendants has to be compared to the initial sample size in order for it to be a candidate for Monte Carlo estimations. |
mcBreakCoef | Coefficient to control what fraction of the node's descendants evaluated is the limit before Monte Carlo estimation recurses. |
template<typename KernelType, typename MetricType, typename MatType , template< typename TreeMetricType, typename TreeStatType, typename TreeMatType > class TreeType, template< typename > class DualTreeTraversalType, template< typename > class SingleTreeTraversalType>
mlpack::kde::KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType >::KDE |
( |
const KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType > & |
other | ) |
|
Construct KDE object as a copy of the given model.
This may be computationally intensive!
- Parameters
-
template<typename KernelType, typename MetricType, typename MatType , template< typename TreeMetricType, typename TreeStatType, typename TreeMatType > class TreeType, template< typename > class DualTreeTraversalType, template< typename > class SingleTreeTraversalType>
mlpack::kde::KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType >::KDE |
( |
KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType > && |
other | ) |
|
Construct KDE object taking ownership of the given model.
- Parameters
-
other | KDE object to take ownership of. |
template<typename KernelType , typename MetricType , typename MatType , template< typename TreeMetricType, typename TreeStatType, typename TreeMatType > class TreeType, template< typename > class DualTreeTraversalType, template< typename > class SingleTreeTraversalType>
mlpack::kde::KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType >::~KDE |
( |
| ) |
|
Destroy the KDE object.
If this object created any trees, they will be deleted. If you created the trees then you have to delete them yourself.
template<typename KernelType , typename MetricType , typename MatType, template< typename TreeMetricType, typename TreeStatType, typename TreeMatType > class TreeType, template< typename > class DualTreeTraversalType, template< typename > class SingleTreeTraversalType>
void mlpack::kde::KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType >::Evaluate |
( |
MatType |
querySet, |
|
|
arma::vec & |
estimations |
|
) |
| |
Estimate density of each point in the query set given the data of the reference set.
The result is stored in an estimations vector. Estimations might not be normalized.
- Dimension of each point in the query set must match the dimension of each point in the reference set.
- Use std::move if the query set is no longer needed.
- Precondition
- The model has to be previously trained.
- Parameters
-
querySet | Set of query points to get the density of. |
estimations | Object which will hold the density of each query point. |
template<typename KernelType , typename MetricType , typename MatType, template< typename TreeMetricType, typename TreeStatType, typename TreeMatType > class TreeType, template< typename > class DualTreeTraversalType, template< typename > class SingleTreeTraversalType>
void mlpack::kde::KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType >::Evaluate |
( |
Tree * |
queryTree, |
|
|
const std::vector< size_t > & |
oldFromNewQueries, |
|
|
arma::vec & |
estimations |
|
) |
| |
Estimate density of each point in the query set given the data of an already created query tree.
The result is stored in an estimations vector. Estimations might not be normalized.
- Dimension of each point in the queryTree dataset must match the dimension of each point in the reference set.
- Use std::move if the query tree is no longer needed.
- Precondition
- The model has to be previously trained and mode has to be dual-tree.
- Parameters
-
queryTree | Tree of query points to get the density of. |
oldFromNewQueries | Mappings of query points to the tree dataset. |
estimations | Object which will hold the density of each query point. |
template<typename KernelType , typename MetricType , typename MatType, template< typename TreeMetricType, typename TreeStatType, typename TreeMatType > class TreeType, template< typename > class DualTreeTraversalType, template< typename > class SingleTreeTraversalType>
void mlpack::kde::KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType >::Evaluate |
( |
arma::vec & |
estimations | ) |
|
Estimate density of each point in the reference set given the data of the reference set.
It does not compute the estimation of a point with itself. The result is stored in an estimations vector. Estimations might not be normalized.
- Precondition
- The model has to be previously trained.
- Parameters
-
estimations | Object which will hold the density of each reference point. |
template<typename KernelType , typename MetricType , typename MatType , template< typename TreeMetricType, typename TreeStatType, typename TreeMatType > class TreeType, template< typename > class DualTreeTraversalType, template< typename > class SingleTreeTraversalType>
void mlpack::kde::KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType >::MCProb |
( |
const double |
newProb | ) |
|
Modify Monte Carlo probability of error being bounded by relative error.
(0 <= newProb < 1).
template<typename KernelType , typename MetricType , typename MatType , template< typename TreeMetricType, typename TreeStatType, typename TreeMatType > class TreeType, template< typename > class DualTreeTraversalType, template< typename > class SingleTreeTraversalType>
KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType > & mlpack::kde::KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType >::operator= |
( |
const KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType > & |
other | ) |
|
Copy a KDE model.
- Parameters
-
template<typename KernelType , typename MetricType , typename MatType , template< typename TreeMetricType, typename TreeStatType, typename TreeMatType > class TreeType, template< typename > class DualTreeTraversalType, template< typename > class SingleTreeTraversalType>
KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType > & mlpack::kde::KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType >::operator= |
( |
KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType > && |
other | ) |
|
Move a KDE model.
- Parameters
-
template<typename KernelType , typename MetricType , typename MatType, template< typename TreeMetricType, typename TreeStatType, typename TreeMatType > class TreeType, template< typename > class DualTreeTraversalType, template< typename > class SingleTreeTraversalType>
void mlpack::kde::KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType >::Train |
( |
MatType |
referenceSet | ) |
|
Trains the KDE model.
It builds a tree using a reference set.
Use std::move if the reference set is no longer needed.
- Parameters
-
referenceSet | Set of reference data. |
template<typename KernelType , typename MetricType , typename MatType, template< typename TreeMetricType, typename TreeStatType, typename TreeMatType > class TreeType, template< typename > class DualTreeTraversalType, template< typename > class SingleTreeTraversalType>
void mlpack::kde::KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType >::Train |
( |
Tree * |
referenceTree, |
|
|
std::vector< size_t > * |
oldFromNewReferences |
|
) |
| |
Trains the KDE model.
Sets the reference tree to an already created tree.
- If TreeTraits<TreeType>::RearrangesDataset is false then it is possible to use an empty oldFromNewReferences vector.
- Parameters
-
referenceTree | Built reference tree. |
oldFromNewReferences | Permutations of reference points obtained during tree generation. |