jsat.distributions.kernels
Interface KernelTrick
-
- All Superinterfaces:
- java.lang.Cloneable, Parameterized, java.io.Serializable
- All Known Implementing Classes:
- BaseKernelTrick, BaseL2Kernel, DistanceMetricBasedKernel, GeneralRBFKernel, JaccardDistance, LinearKernel, NormalizedKernel, PolynomialKernel, PukKernel, RationalQuadraticKernel, RBFKernel, SigmoidKernel
public interface KernelTrick extends Parameterized, java.lang.Cloneable, java.io.Serializable
The KernelTrick is a method can can be used to alter an algorithm to do its calculations in a projected feature space, without explicitly forming the features. If an algorithm uses only dot products, the Kernel trick can be used in place of these dot products, and computes the inner product in a different feature space.
All KerenlTrick objects areparameterizedso that the values of the kernel can be exposed by the algorithm that makes use of these parameters. To avoid conflicts in parameter names, the parameters of a KernelTrick should be of the form:
< SimpleClassName >_< Variable Name >
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method and Description voidaddToCache(Vec newVec, java.util.List<java.lang.Double> cache)Appends the new cache values for the given vector to the list of cache values.KernelTrickclone()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 bygetAccelerationCache(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 bygetQueryInfo(jsat.linear.Vec).doubleeval(Vec a, Vec b)Evaluate this kernel function for the two given vectors.doubleevalSum(java.util.List<? extends Vec> finalSet, java.util.List<java.lang.Double> cache, double[] alpha, Vec y, int start, int end)Performs an efficient summation of kernel products of the form
∑ αi k(xi, y)
where x are the final set of vectors, and α the associated scalar multipliersdoubleevalSum(java.util.List<? extends Vec> finalSet, java.util.List<java.lang.Double> cache, double[] alpha, Vec y, java.util.List<java.lang.Double> qi, int start, int end)Performs an efficient summation of kernel products of the form
∑ αi k(xi, y)
where x are the final set of vectors, and α the associated scalar multipliersjava.util.List<java.lang.Double>getAccelerationCache(java.util.List<? extends Vec> trainingSet)Creates a new list cache values from a given list of training set vectors.java.util.List<java.lang.Double>getQueryInfo(Vec q)Pre computes query information that would have be generated if the query was a member of the original list of vectors when callinggetAccelerationCache(java.util.List).booleannormalized()This method indicates if a kernel is a normalized kernel or not.booleansupportsAcceleration()Indicates if this kernel supports building an acceleration cache using thegetAccelerationCache(List)and associated cache accelerated methods.java.lang.StringtoString()A descriptive name for the type of KernelFunction-
Methods inherited from interface jsat.parameters.Parameterized
getParameter, getParameters
-
-
-
-
Method Detail
-
eval
double eval(Vec a, Vec b)
Evaluate this kernel function for the two given vectors.- Parameters:
a- the first vectorb- the first vector- Returns:
- the evaluation
-
toString
java.lang.String toString()
A descriptive name for the type of KernelFunction- Overrides:
toStringin classjava.lang.Object- Returns:
- a descriptive name for the type of KernelFunction
-
clone
KernelTrick clone()
-
supportsAcceleration
boolean supportsAcceleration()
Indicates if this kernel supports building an acceleration cache using thegetAccelerationCache(List)and associated cache accelerated methods. By default this method will returnfalse. Iftrue, then a cache can be obtained from this matrix and used in conjunction witheval(int, Vec, List, List, List)andeval(int, int, List, List)to perform kernel products.- Returns:
trueif cache acceleration is supported for this kernel,falseotherwise.
-
getAccelerationCache
java.util.List<java.lang.Double> getAccelerationCache(java.util.List<? extends Vec> trainingSet)
Creates a new list cache values from a given list of training set vectors. If this kernel does not support acceleration,nullwill be returned.- Parameters:
trainingSet- the list of training set vectors- Returns:
- a list of cache values that may be used by this kernel
-
getQueryInfo
java.util.List<java.lang.Double> getQueryInfo(Vec q)
Pre computes query information that would have be generated if the query was a member of the original list of vectors when callinggetAccelerationCache(java.util.List). This can then be used if a large number of kernel computations are going to be done against points in the original set for a point that is outside the original space.
If this kernel does not support acceleration,nullwill be returned.- Parameters:
q- the query point to generate cache information for- Returns:
- the cache information for the query point
-
addToCache
void addToCache(Vec newVec, java.util.List<java.lang.Double> cache)
Appends the new cache values for the given vector to the list of cache values. This method is present for online style kernel learning algorithms, where the set of vectors is not known in advance. When a vector is added to the set of kernel vectors, its cache values can be added using this method.
The results of calling this sequentially on a lit of vectors starting with an empty double list is equivalent to getting the results from callinggetAccelerationCache(java.util.List)
If this kernel does not support acceleration, this method call will function as a nop.- Parameters:
newVec- the new vector to add to the cache valuescache- the original list of cache values to add to
-
eval
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)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 bygetQueryInfo(jsat.linear.Vec).
If the cache input isnull, theneval(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
double eval(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 bygetAccelerationCache(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 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
eval(jsat.linear.Vec, jsat.linear.Vec)
-
evalSum
double evalSum(java.util.List<? extends Vec> finalSet, java.util.List<java.lang.Double> cache, double[] alpha, Vec y, int start, int end)
Performs an efficient summation of kernel products of the form
∑ αi k(xi, y)
where x are the final set of vectors, and α the associated scalar multipliers- Parameters:
finalSet- the final set of vectorscache- the cache associated with the final set of vectorsalpha- the coefficients associated with each vectory- the vector to perform the summed kernel products againststart- the starting index (inclusive) to sum fromend- the ending index (exclusive) to sum from- Returns:
- the sum of the multiplied kernel products
-
evalSum
double evalSum(java.util.List<? extends Vec> finalSet, java.util.List<java.lang.Double> cache, double[] alpha, Vec y, java.util.List<java.lang.Double> qi, int start, int end)
Performs an efficient summation of kernel products of the form
∑ αi k(xi, y)
where x are the final set of vectors, and α the associated scalar multipliers- Parameters:
finalSet- the final set of vectorscache- the cache associated with the final set of vectorsalpha- the coefficients associated with each vectory- the vector to perform the summed kernel products againstqi- the query information about ystart- the starting index (inclusive) to sum fromend- the ending index (exclusive) to sum from- Returns:
- the sum of the multiplied kernel products
-
normalized
boolean normalized()
This 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