mlpack
Public Member Functions | List of all members
mlpack::kernel::GaussianKernel Class Reference

The standard Gaussian kernel. More...

#include <gaussian_kernel.hpp>

Public Member Functions

 GaussianKernel ()
 Default constructor; sets bandwidth to 1.0.
 
 GaussianKernel (const double bandwidth)
 Construct the Gaussian kernel with a custom bandwidth. More...
 
template<typename VecTypeA , typename VecTypeB >
double Evaluate (const VecTypeA &a, const VecTypeB &b) const
 Evaluation of the Gaussian kernel. More...
 
double Evaluate (const double t) const
 Evaluation of the Gaussian kernel given the distance between two points. More...
 
double Gradient (const double t) const
 Evaluation of the gradient of Gaussian kernel given the distance between two points. More...
 
double GradientForSquaredDistance (const double t) const
 Evaluation of the gradient of Gaussian kernel given the squared distance between two points. More...
 
double Normalizer (const size_t dimension)
 Obtain the normalization constant of the Gaussian kernel. More...
 
template<typename VecTypeA , typename VecTypeB >
double ConvolutionIntegral (const VecTypeA &a, const VecTypeB &b)
 Obtain a convolution integral of the Gaussian kernel. More...
 
double Bandwidth () const
 Get the bandwidth.
 
void Bandwidth (const double bandwidth)
 Modify the bandwidth. More...
 
double Gamma () const
 Get the precalculated constant.
 
template<typename Archive >
void serialize (Archive &ar, const uint32_t)
 Serialize the kernel.
 

Detailed Description

The standard Gaussian kernel.

Given two vectors \( x \), \( y \), and a bandwidth \( \mu \) (set in the constructor),

\[ K(x, y) = \exp(-\frac{|| x - y ||^2}{2 \mu^2}). \]

The implementation is all in the header file because it is so simple.

Constructor & Destructor Documentation

◆ GaussianKernel()

mlpack::kernel::GaussianKernel::GaussianKernel ( const double  bandwidth)
inline

Construct the Gaussian kernel with a custom bandwidth.

Parameters
bandwidthThe bandwidth of the kernel ( \(\mu\)).

Member Function Documentation

◆ Bandwidth()

void mlpack::kernel::GaussianKernel::Bandwidth ( const double  bandwidth)
inline

Modify the bandwidth.

This takes an argument because we must update the precalculated constant (gamma).

◆ ConvolutionIntegral()

template<typename VecTypeA , typename VecTypeB >
double mlpack::kernel::GaussianKernel::ConvolutionIntegral ( const VecTypeA &  a,
const VecTypeB &  b 
)
inline

Obtain a convolution integral of the Gaussian kernel.

Parameters
aFirst vector.
bSecond vector.
Returns
The convolution integral.

◆ Evaluate() [1/2]

template<typename VecTypeA , typename VecTypeB >
double mlpack::kernel::GaussianKernel::Evaluate ( const VecTypeA &  a,
const VecTypeB &  b 
) const
inline

Evaluation of the Gaussian kernel.

This could be generalized to use any distance metric, not the Euclidean distance, but for now, the Euclidean distance is used.

Template Parameters
VecTypeType of vector (likely arma::vec or arma::spvec).
Parameters
aFirst vector.
bSecond vector.
Returns
K(a, b) using the bandwidth ( \(\mu\)) specified in the constructor.

◆ Evaluate() [2/2]

double mlpack::kernel::GaussianKernel::Evaluate ( const double  t) const
inline

Evaluation of the Gaussian kernel given the distance between two points.

Parameters
tThe distance between the two points the kernel is evaluated on.
Returns
K(t) using the bandwidth ( \(\mu\)) specified in the constructor.

◆ Gradient()

double mlpack::kernel::GaussianKernel::Gradient ( const double  t) const
inline

Evaluation of the gradient of Gaussian kernel given the distance between two points.

Parameters
tThe distance between the two points the kernel is evaluated on.
Returns
K(t) using the bandwidth ( \(\mu\)) specified in the constructor.

◆ GradientForSquaredDistance()

double mlpack::kernel::GaussianKernel::GradientForSquaredDistance ( const double  t) const
inline

Evaluation of the gradient of Gaussian kernel given the squared distance between two points.

Parameters
tThe squared distance between the two points
Returns
K(t) using the bandwidth ( \(\mu\)) specified in the constructor.

◆ Normalizer()

double mlpack::kernel::GaussianKernel::Normalizer ( const size_t  dimension)
inline

Obtain the normalization constant of the Gaussian kernel.

Parameters
dimension
Returns
the normalization constant

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