Class NormalizingKernel

java.lang.Object
org.biojava.stats.svm.NestedKernel
org.biojava.stats.svm.NormalizingKernel
All Implemented Interfaces:
Serializable, SVMKernel

public class NormalizingKernel extends NestedKernel
Performs a normalization on the results of a nested kernel.

This is equivalent to making the locations in feature space of the nested kernel unit vectors lying on a unit sphere. The dot product in feature space then becomes just cos theta rather than ||a|| * ||b|| * cos theta as both lengths are 1. The length of a in the feature space of kernel k is sqrt( k(a, a) ), so that the normalizing kernel ends up calculating k(a, b) / sqrt( k(a, a) * k(b, b) ).

As the values of k(x, x) are required repeatedly, it may be worth making the nested kernel a DiagonalCachingKernel.

Author:
Thomas Down, Matthew Pocock
See Also: