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 double
evaluate(Object x, Object y)
Returns the kernel product of two Objects.void
setNestedKernel(SVMKernel k)
Set the kernel to nest.String
toString()
-
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:
setNestedKernel
in 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.
-
-