GaussianKernel Class Reference

The standard Gaussian kernel. More...

Public Member Functions

 GaussianKernel ()
 Default constructor; sets bandwidth to 1.0. More...

 
 GaussianKernel (const double bandwidth)
 Construct the Gaussian kernel with a custom bandwidth. More...

 
double Bandwidth () const
 Get the bandwidth. More...

 
void Bandwidth (const double bandwidth)
 Modify the bandwidth. More...

 
template
<
typename
VecTypeA
,
typename
VecTypeB
>
double ConvolutionIntegral (const VecTypeA &a, const VecTypeB &b)
 Obtain a convolution integral of the Gaussian kernel. 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 Gamma () const
 Get the precalculated constant. 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
Archive
>
void serialize (Archive &ar, const uint32_t)
 Serialize the kernel. More...

 

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.

Definition at line 34 of file gaussian_kernel.hpp.

Constructor & Destructor Documentation

◆ GaussianKernel() [1/2]

GaussianKernel ( )
inline

Default constructor; sets bandwidth to 1.0.

Definition at line 40 of file gaussian_kernel.hpp.

◆ GaussianKernel() [2/2]

GaussianKernel ( const double  bandwidth)
inline

Construct the Gaussian kernel with a custom bandwidth.

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

Definition at line 48 of file gaussian_kernel.hpp.

Member Function Documentation

◆ Bandwidth() [1/2]

double Bandwidth ( ) const
inline

Get the bandwidth.

Definition at line 135 of file gaussian_kernel.hpp.

◆ Bandwidth() [2/2]

void Bandwidth ( const double  bandwidth)
inline

Modify the bandwidth.

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

Definition at line 139 of file gaussian_kernel.hpp.

◆ ConvolutionIntegral()

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

Definition at line 127 of file gaussian_kernel.hpp.

References GaussianKernel::Evaluate(), LMetric< TPower, TTakeRoot >::Evaluate(), and GaussianKernel::Normalizer().

◆ Evaluate() [1/2]

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

Definition at line 65 of file gaussian_kernel.hpp.

References LMetric< TPower, TTakeRoot >::Evaluate().

Referenced by GaussianKernel::ConvolutionIntegral().

◆ Evaluate() [2/2]

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

Definition at line 78 of file gaussian_kernel.hpp.

◆ Gamma()

double Gamma ( ) const
inline

Get the precalculated constant.

Definition at line 146 of file gaussian_kernel.hpp.

◆ Gradient()

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

Definition at line 92 of file gaussian_kernel.hpp.

◆ GradientForSquaredDistance()

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

Definition at line 104 of file gaussian_kernel.hpp.

◆ Normalizer()

double Normalizer ( const size_t  dimension)
inline

Obtain the normalization constant of the Gaussian kernel.

Parameters
dimension
Returns
the normalization constant

Definition at line 114 of file gaussian_kernel.hpp.

References M_PI.

Referenced by GaussianKernel::ConvolutionIntegral().

◆ serialize()

void serialize ( Archive &  ar,
const uint32_t   
)
inline

Serialize the kernel.

Definition at line 150 of file gaussian_kernel.hpp.


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