mlpack::metric::MahalanobisDistance< t_take_root > Class Template Reference

The Mahalanobis distance, which is essentially a stretched Euclidean distance. More...

List of all members.

Public Member Functions

 MahalanobisDistance (const arma::mat &covariance)
 Initialize the Mahalanobis distance with the given covariance matrix.
 MahalanobisDistance (const size_t dimensionality)
 Initialize the Mahalanobis distance with the identity matrix of the given dimensionality.
 MahalanobisDistance ()
 Initialize the Mahalanobis distance with the empty matrix as covariance.
arma::mat & Covariance ()
 Modify the covariance matrix.
const arma::mat & Covariance () const
 Access the covariance matrix.
template<typename VecType1 , typename VecType2 >
double Evaluate (const VecType1 &a, const VecType2 &b)
 Evaluate the distance between the two given points using this Mahalanobis distance.

Private Attributes

arma::mat covariance
 The covariance matrix associated with this distance.

Detailed Description

template<bool t_take_root = false>
class mlpack::metric::MahalanobisDistance< t_take_root >

The Mahalanobis distance, which is essentially a stretched Euclidean distance.

Given a square covariance matrix $ Q $ of size $ d $ x $ d $, where $ d $ is the dimensionality of the points it will be evaluating, and given two vectors $ x $ and $ y $ also of dimensionality $ d $,

\[ d(x, y) = \sqrt{(x - y)^T Q (x - y)} \]

where Q is the covariance matrix.

Because each evaluation multiplies (x_1 - x_2) by the covariance matrix, it may be much quicker to use an LMetric and simply stretch the actual dataset itself before performing any evaluations. However, this class is provided for convenience.

Similar to the LMetric class, this offers a template parameter t_take_root which, when set to false, will instead evaluate the distance

\[ d(x, y) = (x - y)^T Q (x - y) \]

which is faster to evaluate.

Template Parameters:
t_take_root If true, takes the root of the output. It is slightly faster to leave this at the default of false.

Definition at line 61 of file mahalanobis_distance.hpp.


Constructor & Destructor Documentation

template<bool t_take_root = false>
mlpack::metric::MahalanobisDistance< t_take_root >::MahalanobisDistance (  )  [inline]

Initialize the Mahalanobis distance with the empty matrix as covariance.

Don't call Evaluate() until you set the covariance with Covariance()!

Definition at line 68 of file mahalanobis_distance.hpp.

template<bool t_take_root = false>
mlpack::metric::MahalanobisDistance< t_take_root >::MahalanobisDistance ( const size_t  dimensionality  )  [inline]

Initialize the Mahalanobis distance with the identity matrix of the given dimensionality.

Parameters:
dimensionality Dimesnsionality of the covariance matrix.

Definition at line 76 of file mahalanobis_distance.hpp.

template<bool t_take_root = false>
mlpack::metric::MahalanobisDistance< t_take_root >::MahalanobisDistance ( const arma::mat &  covariance  )  [inline]

Initialize the Mahalanobis distance with the given covariance matrix.

The given covariance matrix will be copied (this is not optimal).

Parameters:
covariance The covariance matrix to use for this distance.

Definition at line 85 of file mahalanobis_distance.hpp.


Member Function Documentation

template<bool t_take_root = false>
arma::mat& mlpack::metric::MahalanobisDistance< t_take_root >::Covariance (  )  [inline]

Modify the covariance matrix.

Returns:
Reference to the covariance matrix.

Definition at line 111 of file mahalanobis_distance.hpp.

References mlpack::metric::MahalanobisDistance< t_take_root >::covariance.

template<bool t_take_root = false>
const arma::mat& mlpack::metric::MahalanobisDistance< t_take_root >::Covariance (  )  const [inline]

Access the covariance matrix.

Returns:
Constant reference to the covariance matrix.

Definition at line 104 of file mahalanobis_distance.hpp.

References mlpack::metric::MahalanobisDistance< t_take_root >::covariance.

template<bool t_take_root = false>
template<typename VecType1 , typename VecType2 >
double mlpack::metric::MahalanobisDistance< t_take_root >::Evaluate ( const VecType1 &  a,
const VecType2 &  b 
) [inline]

Evaluate the distance between the two given points using this Mahalanobis distance.

If the covariance matrix has not been set (i.e. if you used the empty constructor and did not later modify the covariance matrix), calling this method will probably result in a crash.

Parameters:
a First vector.
b Second vector.

Member Data Documentation

template<bool t_take_root = false>
arma::mat mlpack::metric::MahalanobisDistance< t_take_root >::covariance [private]

The covariance matrix associated with this distance.

Definition at line 115 of file mahalanobis_distance.hpp.

Referenced by mlpack::metric::MahalanobisDistance< t_take_root >::Covariance().


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

Generated on 13 Aug 2014 for MLPACK by  doxygen 1.6.1