jsat.distributions.kernels
Class RBFKernel
- java.lang.Object
-
- jsat.distributions.kernels.BaseL2Kernel
-
- jsat.distributions.kernels.RBFKernel
-
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, KernelTrick, Parameterized
public class RBFKernel extends BaseL2Kernel
Provides a kernel for the Radial Basis Function, which is of the form
k(x, y) = exp(-||x-y||2/(2*σ2))- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor and Description RBFKernel()Creates a new RBF kernel with σ = 1RBFKernel(double sigma)Creates a new RBF kernel
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method and Description RBFKernelclone()doubleeval(int a, int b, java.util.List<? extends Vec> trainingSet, 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.static doublegammToSigma(double gamma)Another common (equivalent) form of the RBF kernel is k(x, y) = exp(-γ||x-y||2).doublegetSigma()static DistributionguessSigma(DataSet d)Guess the distribution to use for the kernel width termσin the RBF kernel.booleannormalized()This method indicates if a kernel is a normalized kernel or not.voidsetSigma(double sigma)Sets the sigma parameter, which must be a positive valuestatic doublesigmaToGamma(double sigma)Another common (equivalent) form of the RBF kernel is k(x, y) = exp(-γ||x-y||2).java.lang.StringtoString()A descriptive name for the type of KernelFunction-
Methods inherited from class jsat.distributions.kernels.BaseL2Kernel
addToCache, evalSum, evalSum, getAccelerationCache, getQueryInfo, supportsAcceleration
-
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface jsat.parameters.Parameterized
getParameter, getParameters
-
-
-
-
Constructor Detail
-
RBFKernel
public RBFKernel()
Creates a new RBF kernel with σ = 1
-
RBFKernel
public RBFKernel(double sigma)
Creates a new RBF kernel- Parameters:
sigma- the sigma parameter
-
-
Method Detail
-
eval
public double eval(Vec a, Vec b)
Description copied from interface:KernelTrickEvaluate this kernel function for the two given vectors.- Specified by:
evalin interfaceKernelTrick- Specified by:
evalin classBaseL2Kernel- Parameters:
a- the first vectorb- the first vector- Returns:
- the evaluation
-
eval
public double eval(int a, int b, java.util.List<? extends Vec> trainingSet, 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.- Specified by:
evalin interfaceKernelTrick- Specified by:
evalin classBaseL2Kernel- Parameters:
a- the index of the first training vectorb- the index of the second training vectortrainingSet- 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)
-
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.- Specified by:
evalin interfaceKernelTrick- Specified by:
evalin classBaseL2Kernel- 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
-
setSigma
public void setSigma(double sigma)
Sets the sigma parameter, which must be a positive value- Parameters:
sigma- the sigma value
-
getSigma
public double getSigma()
-
toString
public java.lang.String toString()
Description copied from interface:KernelTrickA descriptive name for the type of KernelFunction- Specified by:
toStringin interfaceKernelTrick- Overrides:
toStringin classjava.lang.Object- Returns:
- a descriptive name for the type of KernelFunction
-
clone
public RBFKernel clone()
- Specified by:
clonein interfaceKernelTrick- Specified by:
clonein classBaseL2Kernel
-
sigmaToGamma
public static double sigmaToGamma(double sigma)
Another common (equivalent) form of the RBF kernel is k(x, y) = exp(-γ||x-y||2). This method converts the σ value used by this class to the equivalent γ value.- Parameters:
sigma- the value of σ- Returns:
- the equivalent γ value.
-
gammToSigma
public static double gammToSigma(double gamma)
Another common (equivalent) form of the RBF kernel is k(x, y) = exp(-γ||x-y||2). This method converts the γ value equivalent σ value used by this class.- Parameters:
gamma- the value of γ- Returns:
- the equivalent σ value
-
guessSigma
public static Distribution guessSigma(DataSet d)
Guess the distribution to use for the kernel width termσin the RBF kernel.- Parameters:
d- the data set to get the guess for- Returns:
- the guess for the σ parameter in the 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