mlpack
Public Types | Public Member Functions | List of all members
mlpack::kde::KDE< KernelType, MetricType, MatType, TreeType, DualTreeTraversalType, SingleTreeTraversalType > Class Template Reference

The KDE class is a template class for performing Kernel Density Estimations. More...

#include <kde.hpp>

Public Types

typedef TreeType< MetricType, kde::KDEStat, MatType > Tree
 Convenience typedef.
 

Public Member Functions

 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...
 
KDEoperator= (const KDE &other)
 Copy a KDE model. More...
 
KDEoperator= (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.
 
TreeReferenceTree ()
 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.
 
KDEModeMode ()
 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.
 

Detailed Description

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
KernelTypeKernel function to use for KDE calculations.
MetricTypeMetric to use for KDE calculations.
MatTypeType of data to use.
TreeTypeType of tree to use; must satisfy the TreeType policy API.
DualTreeTraversalTypeType of dual-tree traversal to use.
SingleTreeTraversalTypeType of single-tree traversal to use.

Constructor & Destructor Documentation

◆ KDE() [1/3]

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
relErrorRelative error tolerance of the model.
absErrorAbsolute error tolerance of the model.
kernelInstantiated kernel object.
modeMode for the algorithm.
metricInstantiated metric object.
monteCarloWhether to use Monte Carlo estimations when possible.
mcProbProbability of a Monte Carlo estimation to be bounded by relative error tolerance.
initialSampleSizeInitial sample size for Monte Carlo estimations.
mcEntryCoefCoefficient 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.
mcBreakCoefCoefficient to control what fraction of the node's descendants evaluated is the limit before Monte Carlo estimation recurses.

◆ KDE() [2/3]

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
otherKDE object to copy.

◆ KDE() [3/3]

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
otherKDE object to take ownership of.

◆ ~KDE()

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.

Member Function Documentation

◆ Evaluate() [1/3]

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
querySetSet of query points to get the density of.
estimationsObject which will hold the density of each query point.

◆ Evaluate() [2/3]

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
queryTreeTree of query points to get the density of.
oldFromNewQueriesMappings of query points to the tree dataset.
estimationsObject which will hold the density of each query point.

◆ Evaluate() [3/3]

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
estimationsObject which will hold the density of each reference point.

◆ MCProb()

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).

◆ operator=() [1/2]

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
otherKDE model to copy.

◆ operator=() [2/2]

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
otherKDE model to copy.

◆ Train() [1/2]

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
referenceSetSet of reference data.

◆ Train() [2/2]

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
referenceTreeBuilt reference tree.
oldFromNewReferencesPermutations of reference points obtained during tree generation.

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