ANOVA kernel. More...
#include <Kernel.hpp>
Public Member Functions | |
ANOVAKernel (DenseMatrix< scalar_t > &data, scalar_t h, scalar_t lambda, int p=1) | |
![]() | |
Kernel (DenseM_t &data, scalar_t lambda) | |
virtual | ~Kernel ()=default |
std::size_t | n () const |
std::size_t | d () const |
virtual scalar_t | eval (std::size_t i, std::size_t j) const |
void | operator() (const std::vector< std::size_t > &I, const std::vector< std::size_t > &J, DenseMatrix< real_t > &B) const |
void | operator() (const std::vector< std::size_t > &I, const std::vector< std::size_t > &J, DenseMatrix< std::complex< real_t >> &B) const |
DenseM_t | fit_HSS (std::vector< scalar_t > &labels, const HSS::HSSOptions< scalar_t > &opts) |
std::vector< scalar_t > | predict (const DenseM_t &test, const DenseM_t &weights) const |
DistM_t | fit_HSS (const BLACSGrid &grid, std::vector< scalar_t > &labels, const HSS::HSSOptions< scalar_t > &opts) |
std::vector< scalar_t > | predict (const DenseM_t &test, const DistM_t &weights) const |
DenseM_t | fit_HODLR (const MPIComm &c, std::vector< scalar_t > &labels, const HODLR::HODLROptions< scalar_t > &opts) |
const DenseM_t & | data () const |
DenseM_t & | data () |
std::vector< int > & | permutation () |
const std::vector< int > & | permutation () const |
virtual void | permute () |
ANOVA kernel.
Implements the kernel: \( \sum_{1\leq k_1<...<k_p\leq n}k(x^{k_1},y^{k_1})\times...\times k(x^{k_p},y^{k_p}), with k(x,y)=\exp \left( -\frac{\|x-y\|_2^2}{2 h^2} \right)\), with an extra regularization parameter lambda on the diagonal. The kernel is implemented efficiently due to the recurrence relation in "Support Vector Regression with ANOVA Decomposition Kernels", 1999.
This is a subclass of Kernel. It only implements the (protected) eval_kernel_function routine, the rest of the functionality is inherited. To create your own kernel, simply copy this class, rename and change the eval_kernel_function implementation.
|
inline |
Constructor of the kernel object.