Class DiagonalCachingKernel
- java.lang.Object
-
- org.biojava.stats.svm.NestedKernel
-
- org.biojava.stats.svm.DiagonalCachingKernel
-
- All Implemented Interfaces:
Serializable,SVMKernel
public class DiagonalCachingKernel extends NestedKernel
Caches the leading diagonal of a kernel matrix.Several kernels need to repeatedly access k(x,x) to do things like normalization, or to calculate distances. This kernel wraps k so that these leading diagonal elements do not need to be calculated each time.
This kernel is thread-safe. However, care must be taken when setting the nested kernel that no other thread is retrieving values at the same time. This would cause a race condition in which the newly flushed cache may contain a value from the previous kernel.
- Author:
- Matthew Pocock, Thomas Down
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description DiagonalCachingKernel()Create a new CachingKernel.DiagonalCachingKernel(SVMKernel k)Creates a new DiagonalCachingKernel that nests k.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description doubleevaluate(Object x, Object y)Returns the kernel product of two Objects.voidsetNestedKernel(SVMKernel k)Set the kernel to nest.StringtoString()-
Methods inherited from class org.biojava.stats.svm.NestedKernel
getNestedKernel
-
-
-
-
Constructor Detail
-
DiagonalCachingKernel
public DiagonalCachingKernel()
Create a new CachingKernel.
-
DiagonalCachingKernel
public DiagonalCachingKernel(SVMKernel k)
Creates a new DiagonalCachingKernel that nests k.
-
-
Method Detail
-
setNestedKernel
public void setNestedKernel(SVMKernel k)
Set the kernel to nest.
This will flush the cache.
- Overrides:
setNestedKernelin classNestedKernel- Parameters:
k- the kernel to nest.
-
evaluate
public double evaluate(Object x, Object y)
Returns the kernel product of two Objects.
This returns
getNestedKernel.evaluate(x, y). Ifx.equals(y)then it will cache the result first time, and do a hash table look up to retrieve the value in subsequent calls.
-
-