The Kernel interface the functionality required from an object
that implements a kernel function. A kernel is a function that takes two
arguments and returns a double that is equivalent to the inner-product
between two vectors in a high-dimensional space. That is, a kernel must
satisfy Mercer's conditions and produce a matrix that is positive
semi-definite. Typically the inner-product is not actually computed by
creating the high-dimensional representation, but instead is computed quickly
such that the result would be equivalent to operating in that
It is recommended that a Kernel implement
CloneableSerializable, though it is not required.
The role of a kernel is to evaluate some function that is equivalent to
an inner product in some vector space. The kernel must satisfy Mercer's
conditions in that the kernel matrix must be positive semi-definite.