public interface MercerKernel<T>
extends java.util.function.ToDoubleBiFunction<T,T>, java.io.Serializable
k(x,y) = k(y,x)
.
A Mercer kernel is a kernel that is positive Semi-definite. When a kernel
is positive semi-definite, one may exploit the kernel trick, the idea of
implicitly mapping data to a high-dimensional feature space where some
linear algorithm is applied that works exclusively with inner products.
Assume we have some mapping Φ from an input space X to a feature space H,
then a kernel k(u, v) = <Φ(u), Φ(v)>
may be used
to define the inner product in feature space H.
Positive definiteness in the context of kernel functions also implies that a kernel matrix created using a particular kernel is positive semi-definite. A matrix is positive semi-definite if its associated eigenvalues are nonnegative.
We can combine or modify existing kernel functions to make new one. For example, the sum of two kernels is a kernel. The product of two kernels is also a kernel.
A stationary covariance function is a function of distance x − y
.
Thus it is invariant stationarity to translations in the input space.
If further the covariance function is a function only of |x − y|
then it is called isotropic; it is thus invariant to all rigid motions.
If a covariance function depends only on the dot product of x and y,
we call it a dot product covariance function.
Modifier and Type | Method and Description |
---|---|
default double |
apply(T x,
T y)
Kernel function.
|
default double |
applyAsDouble(T x,
T y) |
double[] |
hi()
Returns the upper bound of hyperparameters.
|
double[] |
hyperparameters()
Returns the hyperparameters for tuning.
|
default Matrix |
K(T[] x)
Computes the kernel matrix.
|
default Matrix |
K(T[] x,
T[] y)
Returns the kernel matrix.
|
double |
k(T x,
T y)
Kernel function.
|
default Matrix[] |
KG(T[] x)
Computes the kernel and gradient matrices.
|
double[] |
kg(T x,
T y)
Computes the kernel and its gradient over hyperparameters.
|
double[] |
lo()
Returns the lower bound of hyperparameters.
|
MercerKernel<T> |
of(double[] params)
Returns the same kind kernel with the new hyperparameters.
|
default Matrix[] KG(T[] x)
x
- samples.default Matrix K(T[] x)
x
- samples.default Matrix K(T[] x, T[] y)
x
- samples.y
- samples.MercerKernel<T> of(double[] params)
double[] hyperparameters()
double[] lo()
double[] hi()