Class BinarySparseHyperbolicTangentKernel
- All Implemented Interfaces:
Serializable
,ToDoubleBiFunction<int[],
,int[]> Function
,DotProductKernel
,MercerKernel<int[]>
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.
The kernel works sparse binary array as int[], which are the indices of nonzero elements.
- See Also:
-
Constructor Summary
ConstructorDescriptionConstructor with scale 1.0 and offset 0.0.BinarySparseHyperbolicTangentKernel
(double scale, double offset) Constructor.BinarySparseHyperbolicTangentKernel
(double scale, double offset, double[] lo, double[] hi) Constructor. -
Method Summary
Modifier and TypeMethodDescriptiondouble[]
hi()
Returns the upper bound of hyperparameters (in hyperparameter tuning).double[]
Returns the hyperparameters of kernel.double
k
(int[] x, int[] y) Kernel function.double[]
kg
(int[] x, int[] y) Computes the kernel and its gradient over hyperparameters.double[]
lo()
Returns the lower bound of hyperparameters (in hyperparameter tuning).of
(double[] params) Returns the same kind kernel with the new hyperparameters.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface smile.math.kernel.DotProductKernel
apply, f, K
Methods inherited from interface smile.math.kernel.MercerKernel
apply, applyAsDouble, K, K, KG
-
Constructor Details
-
BinarySparseHyperbolicTangentKernel
public BinarySparseHyperbolicTangentKernel()Constructor with scale 1.0 and offset 0.0. -
BinarySparseHyperbolicTangentKernel
public BinarySparseHyperbolicTangentKernel(double scale, double offset) Constructor.- Parameters:
scale
- The scale parameter.offset
- The offset parameter.
-
BinarySparseHyperbolicTangentKernel
public BinarySparseHyperbolicTangentKernel(double scale, double offset, double[] lo, double[] hi) Constructor.- Parameters:
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.
-
-
Method Details
-
k
public double k(int[] x, int[] y) Description copied from interface:MercerKernel
Kernel function.- Specified by:
k
in interfaceMercerKernel<int[]>
- Parameters:
x
- an object.y
- an object.- Returns:
- the kernel value.
-
kg
public double[] kg(int[] x, int[] y) Description copied from interface:MercerKernel
Computes the kernel and its gradient over hyperparameters.- Specified by:
kg
in interfaceMercerKernel<int[]>
- Parameters:
x
- an object.y
- an object.- Returns:
- the kernel value and gradient.
-
of
Description copied from interface:MercerKernel
Returns the same kind kernel with the new hyperparameters.- Specified by:
of
in interfaceMercerKernel<int[]>
- Parameters:
params
- the hyperparameters.- Returns:
- the same kind kernel with the new hyperparameters.
-
hyperparameters
public double[] hyperparameters()Description copied from interface:MercerKernel
Returns the hyperparameters of kernel.- Specified by:
hyperparameters
in interfaceMercerKernel<int[]>
- Returns:
- the hyperparameters of kernel.
-
lo
public double[] lo()Description copied from interface:MercerKernel
Returns the lower bound of hyperparameters (in hyperparameter tuning).- Specified by:
lo
in interfaceMercerKernel<int[]>
- Returns:
- the lower bound of hyperparameters.
-
hi
public double[] hi()Description copied from interface:MercerKernel
Returns the upper bound of hyperparameters (in hyperparameter tuning).- Specified by:
hi
in interfaceMercerKernel<int[]>
- Returns:
- the upper bound of hyperparameters.
-