jsat.distributions.kernels
Class GeneralRBFKernel
- java.lang.Object
-
- jsat.distributions.kernels.DistanceMetricBasedKernel
-
- jsat.distributions.kernels.GeneralRBFKernel
-
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, KernelTrick, Parameterized
public class GeneralRBFKernel extends DistanceMetricBasedKernel
This class provides a generalization of theRBFKernelto arbitrarydistance metrics, and is of the form exp(-d(x, y)2/(2σ2 )). So long as the distance metric is valid, the resulting kernel trick will be a valid kernel.
If theEuclideanDistanceis used, then this becomes equivalent to theRBFKernel.
Note, that since theKernelTrickhas no concept of training - the distance metric can not require training either. A pre-trained metric can be admissible thought.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor and Description GeneralRBFKernel(DistanceMetric d, double sigma)Creates a new Generic RBF Kernel
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method and Description KernelTrickclone()doubleeval(int a, int b, java.util.List<? extends Vec> vecs, java.util.List<java.lang.Double> cache)Produces the correct kernel evaluation given the training set and the cache generated byKernelTrick.getAccelerationCache(List).doubleeval(int a, Vec b, java.util.List<java.lang.Double> qi, java.util.List<? extends Vec> vecs, java.util.List<java.lang.Double> cache)Computes the kernel product between one vector in the original list of vectors with that of another vector not from the original list, but had information generated byKernelTrick.getQueryInfo(jsat.linear.Vec).doubleeval(Vec a, Vec b)Evaluate this kernel function for the two given vectors.doublegetSigma()DistributionguessSigma(DataSet d)Guess the distribution to use for the kernel width termσin the General RBF kernel.static DistributionguessSigma(DataSet d, DistanceMetric dist)Guess the distribution to use for the kernel width termσin the General RBF kernel.booleannormalized()This method indicates if a kernel is a normalized kernel or not.voidsetSigma(double sigma)Sets the kernel width parameter, which must be a positive value.-
Methods inherited from class jsat.distributions.kernels.DistanceMetricBasedKernel
addToCache, evalSum, evalSum, getAccelerationCache, getQueryInfo, supportsAcceleration
-
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface jsat.distributions.kernels.KernelTrick
toString
-
Methods inherited from interface jsat.parameters.Parameterized
getParameter, getParameters
-
-
-
-
Constructor Detail
-
GeneralRBFKernel
public GeneralRBFKernel(DistanceMetric d, double sigma)
Creates a new Generic RBF Kernel- Parameters:
d- the distance metric to usesigma- the standard deviation to use
-
-
Method Detail
-
setSigma
public void setSigma(double sigma)
Sets the kernel width parameter, which must be a positive value. Larger values indicate a larger width- Parameters:
sigma- the sigma value
-
getSigma
public double getSigma()
- Returns:
- the width parameter to use for the kernel
-
clone
public KernelTrick clone()
- Specified by:
clonein interfaceKernelTrick- Specified by:
clonein classDistanceMetricBasedKernel
-
eval
public double eval(Vec a, Vec b)
Description copied from interface:KernelTrickEvaluate this kernel function for the two given vectors.- Parameters:
a- the first vectorb- the first vector- Returns:
- the evaluation
-
eval
public double eval(int a, Vec b, java.util.List<java.lang.Double> qi, java.util.List<? extends Vec> vecs, java.util.List<java.lang.Double> cache)Description copied from interface:KernelTrickComputes the kernel product between one vector in the original list of vectors with that of another vector not from the original list, but had information generated byKernelTrick.getQueryInfo(jsat.linear.Vec).
If the cache input isnull, thenKernelTrick.eval(jsat.linear.Vec, jsat.linear.Vec)will be called directly.- Parameters:
a- the index of the vector in the cacheb- the other vectorqi- the query information about bvecs- the list of vectors used to build the cachecache- the cache associated with the given list of vectors- Returns:
- the kernel product of the two vectors
-
eval
public double eval(int a, int b, java.util.List<? extends Vec> vecs, java.util.List<java.lang.Double> cache)Description copied from interface:KernelTrickProduces the correct kernel evaluation given the training set and the cache generated byKernelTrick.getAccelerationCache(List). The training vectors should be in the same order.- Parameters:
a- the index of the first training vectorb- the index of the second training vectorvecs- the list of training set vectorscache- the double list of cache values generated by this kernel for the given training set- Returns:
- the same kernel evaluation result as
KernelTrick.eval(jsat.linear.Vec, jsat.linear.Vec)
-
guessSigma
public Distribution guessSigma(DataSet d)
Guess the distribution to use for the kernel width termσin the General RBF kernel.- Parameters:
d- the data set to get the guess for- Returns:
- the guess for the σ parameter in the General RBF Kernel
-
guessSigma
public static Distribution guessSigma(DataSet d, DistanceMetric dist)
Guess the distribution to use for the kernel width termσin the General RBF kernel.- Parameters:
d- the data set to get the guess fordist- the distance metric to assume is being used in the kernel- Returns:
- the guess for the σ parameter in the General RBF Kernel
-
normalized
public boolean normalized()
Description copied from interface:KernelTrickThis method indicates if a kernel is a normalized kernel or not. A normalized kernel is one in which k(x,x) = 1 for the same object, and no value greater than 1 can be returned.- Returns:
trueif this is a normalized kernel.falseotherwise.
-
-
DataMelt 3.0 © DataMelt by jWork.ORG