public class HyperbolicTangent extends java.lang.Object implements DotProductKernel
k(u, v) = tanh(γ uTv - λ)
where γ is the scale of the used inner product and λ is
the offset of the used inner product. If the offset is negative the
likelihood of obtaining a kernel matrix that is not positive definite
is much higher (since then even some diagonal elements may be negative),
hence if this kernel has to be used, the offset should always be positive.
Note, however, that this is no guarantee that the kernel will be positive.
The hyperbolic tangent kernel was quite popular for support vector machines due to its origin from neural networks. However, it should be used carefully since the kernel matrix may not be positive semi-definite. Besides, it was reported the hyperbolic tangent kernel is not better than the Gaussian kernel in general.
| Constructor and Description |
|---|
HyperbolicTangent(double scale,
double offset,
double[] lo,
double[] hi)
Constructor.
|
| Modifier and Type | Method and Description |
|---|---|
double |
k(double dot)
Computes the dot product kernel function.
|
double[] |
kg(double dot)
Computes the dot product kernel function and its gradient over hyperparameters..
|
double |
offset()
Returns the offset of kernel.
|
double |
scale()
Returns the scale of kernel.
|
java.lang.String |
toString() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitapply, f, Kpublic HyperbolicTangent(double scale,
double offset,
double[] lo,
double[] hi)
scale - The scale parameter.offset - The offset parameter.lo - The lower bound of scale and offset for hyperparameter tuning.hi - The upper bound of scale and offset for hyperparameter tuning.public double scale()
public double offset()
public java.lang.String toString()
toString in class java.lang.Objectpublic double k(double dot)
DotProductKernelk in interface DotProductKerneldot - the dot product.public double[] kg(double dot)
DotProductKernelkg in interface DotProductKerneldot - The dot product.