SHOGUN  v1.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
List of all members | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Friends
CKernel Class Reference

Detailed Description

The Kernel base class.

Non-mathematically spoken, a kernel is a function that given two input objects ${\bf x}$ and ${\bf x'}$ returns a score describing the similarity of the vectors. The score should be larger when the objects are more similar.

It can be defined as

\[ k({\bf x},{\bf x'})= \Phi_k({\bf x})\cdot \Phi_k({\bf x'}) \]

where $\Phi$ maps the objects into some potentially high dimensional feature space.

Apart from the input features, the base kernel takes only one argument (the size of the kernel cache) that is used to efficiently train kernel-machines like e.g. SVMs.

In case you would like to define your own kernel, you only have to define a new compute() function (and the kernel name via get_name() and the kernel type get_kernel_type()). A good example to look at is the GaussianKernel.

Definition at line 172 of file Kernel.h.

Inheritance diagram for CKernel:
Inheritance graph
[legend]

Public Member Functions

 CKernel ()
 CKernel (int32_t size)
 CKernel (CFeatures *l, CFeatures *r, int32_t size)
virtual ~CKernel ()
float64_t kernel (int32_t idx_a, int32_t idx_b)
SGMatrix< float64_tget_kernel_matrix ()
virtual SGVector< float64_tget_kernel_col (int32_t j)
virtual SGVector< float64_tget_kernel_row (int32_t i)
template<class T >
SGMatrix< T > get_kernel_matrix ()
virtual bool init (CFeatures *lhs, CFeatures *rhs)
virtual bool set_normalizer (CKernelNormalizer *normalizer)
virtual CKernelNormalizerget_normalizer ()
virtual bool init_normalizer ()
virtual void cleanup ()
void load (CFile *loader)
void save (CFile *writer)
CFeaturesget_lhs ()
CFeaturesget_rhs ()
virtual int32_t get_num_vec_lhs ()
virtual int32_t get_num_vec_rhs ()
virtual bool has_features ()
bool get_lhs_equals_rhs ()
virtual void remove_lhs_and_rhs ()
virtual void remove_lhs ()
virtual void remove_rhs ()
 takes all necessary steps if the rhs is removed from kernel
virtual EKernelType get_kernel_type ()=0
virtual EFeatureType get_feature_type ()=0
virtual EFeatureClass get_feature_class ()=0
void set_cache_size (int32_t size)
int32_t get_cache_size ()
void list_kernel ()
bool has_property (EKernelProperty p)
virtual void clear_normal ()
virtual void add_to_normal (int32_t vector_idx, float64_t weight)
EOptimizationType get_optimization_type ()
virtual void set_optimization_type (EOptimizationType t)
bool get_is_initialized ()
virtual bool init_optimization (int32_t count, int32_t *IDX, float64_t *weights)
virtual bool delete_optimization ()
bool init_optimization_svm (CSVM *svm)
virtual float64_t compute_optimized (int32_t vector_idx)
virtual void compute_batch (int32_t num_vec, int32_t *vec_idx, float64_t *target, int32_t num_suppvec, int32_t *IDX, float64_t *alphas, float64_t factor=1.0)
float64_t get_combined_kernel_weight ()
void set_combined_kernel_weight (float64_t nw)
virtual int32_t get_num_subkernels ()
virtual void compute_by_subkernel (int32_t vector_idx, float64_t *subkernel_contrib)
virtual const float64_tget_subkernel_weights (int32_t &num_weights)
virtual void set_subkernel_weights (SGVector< float64_t > weights)
- Public Member Functions inherited from CSGObject
 CSGObject ()
 CSGObject (const CSGObject &orig)
virtual ~CSGObject ()
virtual const char * get_name () const =0
virtual bool is_generic (EPrimitiveType *generic) const
template<class T >
void set_generic ()
void unset_generic ()
virtual void print_serializable (const char *prefix="")
virtual bool save_serializable (CSerializableFile *file, const char *prefix="")
virtual bool load_serializable (CSerializableFile *file, const char *prefix="")
void set_global_io (SGIO *io)
SGIOget_global_io ()
void set_global_parallel (Parallel *parallel)
Parallelget_global_parallel ()
void set_global_version (Version *version)
Versionget_global_version ()
SGVector< char * > get_modelsel_names ()
char * get_modsel_param_descr (const char *param_name)
index_t get_modsel_param_index (const char *param_name)

Protected Member Functions

void set_property (EKernelProperty p)
void unset_property (EKernelProperty p)
void set_is_initialized (bool p_init)
virtual float64_t compute (int32_t x, int32_t y)=0
int32_t compute_row_start (int64_t offs, int32_t n, bool symmetric)
virtual void load_serializable_post () throw (ShogunException)
virtual void save_serializable_pre () throw (ShogunException)
virtual void save_serializable_post () throw (ShogunException)
virtual void register_params ()
- Protected Member Functions inherited from CSGObject
virtual void load_serializable_pre () throw (ShogunException)

Static Protected Member Functions

template<class T >
static void * get_kernel_matrix_helper (void *p)

Protected Attributes

int32_t cache_size
 cache_size in MB
KERNELCACHE_ELEMkernel_matrix
CFeatureslhs
 feature vectors to occur on left hand side
CFeaturesrhs
 feature vectors to occur on right hand side
bool lhs_equals_rhs
 lhs
int32_t num_lhs
 number of feature vectors on left hand side
int32_t num_rhs
 number of feature vectors on right hand side
float64_t combined_kernel_weight
bool optimization_initialized
EOptimizationType opt_type
uint64_t properties
CKernelNormalizernormalizer

Friends

class CVarianceKernelNormalizer
class CSqrtDiagKernelNormalizer
class CAvgDiagKernelNormalizer
class CRidgeKernelNormalizer
class CFirstElementKernelNormalizer
class CMultitaskKernelNormalizer
class CMultitaskKernelMklNormalizer
class CMultitaskKernelMaskNormalizer
class CMultitaskKernelMaskPairNormalizer
class CTanimotoKernelNormalizer
class CDiceKernelNormalizer
class CZeroMeanCenterKernelNormalizer

Additional Inherited Members

- Public Attributes inherited from CSGObject
SGIOio
Parallelparallel
Versionversion
Parameterm_parameters
Parameterm_model_selection_parameters

Constructor & Destructor Documentation

CKernel ( )

default constructor

Definition at line 38 of file Kernel.cpp.

CKernel ( int32_t  size)

constructor

Parameters
sizecache size

Definition at line 44 of file Kernel.cpp.

CKernel ( CFeatures l,
CFeatures r,
int32_t  size 
)

constructor

Parameters
lfeatures for left-hand side
rfeatures for right-hand side
sizecache size

Definition at line 56 of file Kernel.cpp.

~CKernel ( )
virtual

Definition at line 70 of file Kernel.cpp.

Member Function Documentation

void add_to_normal ( int32_t  vector_idx,
float64_t  weight 
)
virtual

add vector*factor to 'virtual' normal vector

Parameters
vector_idxindex
weightweight

Reimplemented in CCombinedKernel, CWeightedDegreeStringKernel, CWeightedDegreePositionStringKernel, CCommUlongStringKernel, CCommWordStringKernel, CLinearKernel, CLinearStringKernel, and CWeightedCommWordStringKernel.

Definition at line 330 of file Kernel.cpp.

void cleanup ( )
virtual
void clear_normal ( )
virtual

for optimizable kernels, i.e. kernels where the weight vector can be computed explicitly (if it fits into memory)

Reimplemented in CCombinedKernel, CWeightedDegreeStringKernel, CWeightedDegreePositionStringKernel, CCommUlongStringKernel, CCommWordStringKernel, CLinearKernel, and CLinearStringKernel.

Definition at line 335 of file Kernel.cpp.

virtual float64_t compute ( int32_t  x,
int32_t  y 
)
protectedpure virtual
void compute_batch ( int32_t  num_vec,
int32_t *  vec_idx,
float64_t target,
int32_t  num_suppvec,
int32_t *  IDX,
float64_t alphas,
float64_t  factor = 1.0 
)
virtual

computes output for a batch of examples in an optimized fashion (favorable if kernel supports it, i.e. has KP_BATCHEVALUATION. to the outputvector target (of length num_vec elements) the output for the examples enumerated in vec_idx are added. therefore make sure that it is initialized with ZERO. the following num_suppvec, IDX, alphas arguments are the number of support vectors, their indices and weights

Reimplemented in CCombinedKernel, CWeightedDegreeStringKernel, and CWeightedDegreePositionStringKernel.

Definition at line 323 of file Kernel.cpp.

void compute_by_subkernel ( int32_t  vector_idx,
float64_t subkernel_contrib 
)
virtual

compute by subkernel

Parameters
vector_idxindex
subkernel_contribsubkernel contribution

Reimplemented in CCombinedKernel, CWeightedDegreeStringKernel, and CWeightedDegreePositionStringKernel.

Definition at line 345 of file Kernel.cpp.

float64_t compute_optimized ( int32_t  vector_idx)
virtual

compute optimized

Parameters
vector_idxindex to compute
Returns
optimized value at given index

Reimplemented in CCombinedKernel, CWeightedDegreeStringKernel, CWeightedDegreePositionStringKernel, CCommWordStringKernel, CCommUlongStringKernel, CLinearKernel, CLinearStringKernel, and CWeightedCommWordStringKernel.

Definition at line 317 of file Kernel.cpp.

int32_t compute_row_start ( int64_t  offs,
int32_t  n,
bool  symmetric 
)
protected

compute row start offset for parallel kernel matrix computation

Parameters
offsoffset
nnumber of columns
symmetricwhether matrix is symmetric

Definition at line 686 of file Kernel.h.

bool delete_optimization ( )
virtual

delete optimization

Returns
if deleting was successful

Reimplemented in CCombinedKernel, CWeightedDegreeStringKernel, CWeightedDegreePositionStringKernel, CCommWordStringKernel, CCommUlongStringKernel, CLinearKernel, and CLinearStringKernel.

Definition at line 311 of file Kernel.cpp.

int32_t get_cache_size ( )

return the size of the kernel cache

Returns
size of kernel cache

Definition at line 517 of file Kernel.h.

float64_t get_combined_kernel_weight ( )

get combined kernel weight

Returns
combined kernel weight

Definition at line 608 of file Kernel.h.

virtual EFeatureClass get_feature_class ( )
pure virtual
virtual EFeatureType get_feature_type ( )
pure virtual
bool get_is_initialized ( )

check if optimization is initialized

Returns
if optimization is initialized

Definition at line 559 of file Kernel.h.

virtual SGVector<float64_t> get_kernel_col ( int32_t  j)
virtual

get column j

Returns
the jth column of the kernel matrix

Definition at line 243 of file Kernel.h.

SGMatrix<float64_t> get_kernel_matrix ( )

get kernel matrix

Returns
computed kernel matrix (needs to be cleaned up)

Definition at line 233 of file Kernel.h.

SGMatrix<T> get_kernel_matrix ( )

get kernel matrix real

Returns
the kernel matrix

Definition at line 275 of file Kernel.h.

static void* get_kernel_matrix_helper ( void *  p)
staticprotected

helper for computing the kernel matrix in a parallel way

Parameters
pthread parameters

Definition at line 703 of file Kernel.h.

virtual SGVector<float64_t> get_kernel_row ( int32_t  i)
virtual

get row i

Returns
the ith row of the kernel matrix

Definition at line 260 of file Kernel.h.

virtual EKernelType get_kernel_type ( )
pure virtual
CFeatures* get_lhs ( )

get left-hand side of features used in kernel

Returns
features of left-hand side

Definition at line 425 of file Kernel.h.

bool get_lhs_equals_rhs ( )

test whether features on lhs and rhs are the same

Returns
true if features are the same

Definition at line 464 of file Kernel.h.

CKernelNormalizer * get_normalizer ( )
virtual

obtain the current kernel normalizer

Returns
the kernel normalizer

Definition at line 127 of file Kernel.cpp.

int32_t get_num_subkernels ( )
virtual

get number of subkernels

Returns
number of subkernels

Reimplemented in CCombinedKernel, CWeightedDegreeStringKernel, and CWeightedDegreePositionStringKernel.

Definition at line 340 of file Kernel.cpp.

virtual int32_t get_num_vec_lhs ( )
virtual

get number of vectors of lhs features

Returns
number of vectors of left-hand side

Reimplemented in CCustomKernel.

Definition at line 437 of file Kernel.h.

virtual int32_t get_num_vec_rhs ( )
virtual

get number of vectors of rhs features

Returns
number of vectors of right-hand side

Reimplemented in CCustomKernel.

Definition at line 446 of file Kernel.h.

EOptimizationType get_optimization_type ( )

get optimization type

Returns
optimization type

Definition at line 547 of file Kernel.h.

CFeatures* get_rhs ( )

get right-hand side of features used in kernel

Returns
features of right-hand side

Definition at line 431 of file Kernel.h.

const float64_t * get_subkernel_weights ( int32_t &  num_weights)
virtual

get subkernel weights

Parameters
num_weightsnumber of weights will be stored here
Returns
subkernel weights

Reimplemented in CCombinedKernel, CWeightedDegreeStringKernel, and CWeightedDegreePositionStringKernel.

Definition at line 351 of file Kernel.cpp.

virtual bool has_features ( )
virtual

test whether features have been assigned to lhs and rhs

Returns
true if features are assigned

Reimplemented in CCustomKernel, and CCombinedKernel.

Definition at line 455 of file Kernel.h.

bool has_property ( EKernelProperty  p)

check if kernel has given property

Parameters
pkernel property
Returns
if kernel has given property

Definition at line 529 of file Kernel.h.

bool init ( CFeatures lhs,
CFeatures rhs 
)
virtual

initialize kernel e.g. setup lhs/rhs of kernel, precompute normalization constants etc. make sure to check that your kernel can deal with the supplied features (!)

Parameters
lhsfeatures for left-hand side
rhsfeatures for right-hand side
Returns
if init was successful

Reimplemented in CWeightedDegreePositionStringKernel, CWeightedDegreeStringKernel, CCommWordStringKernel, CSpectrumMismatchRBFKernel, CPyramidChi2, CWeightedCommWordStringKernel, CSalzbergWordStringKernel, CCommUlongStringKernel, CGaussianKernel, CCustomKernel, CBesselKernel, CSNPStringKernel, CPolyKernel, CPolyMatchStringKernel, CPolyMatchWordStringKernel, CCircularKernel, CSphericalKernel, CWaveletKernel, CLocalityImprovedStringKernel, CMatchWordStringKernel, CRegulatoryModulesStringKernel, CSimpleLocalityImprovedStringKernel, CSpectrumRBFKernel, CTensorProductPairKernel, CANOVAKernel, CAUCKernel, CChi2Kernel, CCombinedKernel, CDistanceKernel, CDistantSegmentsKernel, CExponentialKernel, CGaussianMatchStringKernel, CDotKernel, CFixedDegreeStringKernel, COligoStringKernel, CTStudentKernel, CGaussianShortRealKernel, CHistogramIntersectionKernel, CSigmoidKernel, CCauchyKernel, CLogKernel, CPowerKernel, CRationalQuadraticKernel, CWaveKernel, CInverseMultiQuadricKernel, CSplineKernel, CHistogramWordStringKernel, CMultiquadricKernel, CSparseSpatialSampleStringKernel, CConstKernel, CDiagKernel, CLinearKernel, CLocalAlignmentStringKernel, CStringKernel< ST >, CStringKernel< uint16_t >, CStringKernel< char >, CStringKernel< uint64_t >, CLinearStringKernel, CSparseKernel< ST >, and CWeightedDegreeRBFKernel.

Definition at line 83 of file Kernel.cpp.

bool init_normalizer ( )
virtual

initialize the current kernel normalizer

Returns
if init was successful

Definition at line 133 of file Kernel.cpp.

bool init_optimization ( int32_t  count,
int32_t *  IDX,
float64_t weights 
)
virtual

initialize optimization

Parameters
countcount
IDXindex
weightsweights
Returns
if initializing was successful

Reimplemented in CCombinedKernel, CWeightedDegreeStringKernel, CWeightedDegreePositionStringKernel, CCommWordStringKernel, CCommUlongStringKernel, CLinearKernel, and CLinearStringKernel.

Definition at line 304 of file Kernel.cpp.

bool init_optimization_svm ( CSVM svm)

initialize optimization

Parameters
svmsvm model
Returns
if initializing was successful

Definition at line 366 of file Kernel.cpp.

float64_t kernel ( int32_t  idx_a,
int32_t  idx_b 
)

get kernel function for lhs feature vector a and rhs feature vector b

Parameters
idx_aindex of feature vector a
idx_bindex of feature vector b
Returns
computed kernel function

Definition at line 218 of file Kernel.h.

void list_kernel ( )

list kernel

Definition at line 200 of file Kernel.cpp.

void load ( CFile loader)

load the kernel matrix

Parameters
loaderFile object via which to load data

Definition at line 145 of file Kernel.cpp.

void load_serializable_post ( ) throw (ShogunException)
protectedvirtual

Can (optionally) be overridden to post-initialize some member variables which are not PARAMETER::ADD'ed. Make sure that at first the overridden method BASE_CLASS::LOAD_SERIALIZABLE_POST is called.

Exceptions
ShogunExceptionWill be thrown if an error occurres.

Reimplemented from CSGObject.

Reimplemented in CWeightedDegreePositionStringKernel, CGaussianKernel, CANOVAKernel, CInverseMultiQuadricKernel, CCircularKernel, and CExponentialKernel.

Definition at line 384 of file Kernel.cpp.

void register_params ( )
protectedvirtual

Separate the function of parameter registration This can be the first stage of a general framework for cross-validation or other parameter-based operations

Reimplemented in CSpectrumMismatchRBFKernel, CSNPStringKernel, CANOVAKernel, CRegulatoryModulesStringKernel, CGaussianMatchStringKernel, CGaussianShortRealKernel, CTensorProductPairKernel, CDistanceKernel, and CHistogramIntersectionKernel.

Definition at line 407 of file Kernel.cpp.

void remove_lhs ( )
virtual
void remove_lhs_and_rhs ( )
virtual

remove lhs and rhs from kernel

Reimplemented in CCombinedKernel.

Definition at line 160 of file Kernel.cpp.

void remove_rhs ( )
virtual

takes all necessary steps if the rhs is removed from kernel

remove rhs from kernel

Reimplemented in CCombinedKernel, and CCommUlongStringKernel.

Definition at line 187 of file Kernel.cpp.

void save ( CFile writer)

save kernel matrix

Parameters
writerFile object via which to save data

Definition at line 151 of file Kernel.cpp.

void save_serializable_post ( ) throw (ShogunException)
protectedvirtual

Can (optionally) be overridden to post-initialize some member variables which are not PARAMETER::ADD'ed. Make sure that at first the overridden method BASE_CLASS::SAVE_SERIALIZABLE_POST is called.

Exceptions
ShogunExceptionWill be thrown if an error occurres.

Reimplemented from CSGObject.

Definition at line 399 of file Kernel.cpp.

void save_serializable_pre ( ) throw (ShogunException)
protectedvirtual

Can (optionally) be overridden to pre-initialize some member variables which are not PARAMETER::ADD'ed. Make sure that at first the overridden method BASE_CLASS::SAVE_SERIALIZABLE_PRE is called.

Exceptions
ShogunExceptionWill be thrown if an error occurres.

Reimplemented from CSGObject.

Definition at line 391 of file Kernel.cpp.

void set_cache_size ( int32_t  size)

set the size of the kernel cache

Parameters
sizeof kernel cache

Definition at line 507 of file Kernel.h.

void set_combined_kernel_weight ( float64_t  nw)

set combined kernel weight

Parameters
nwnew combined kernel weight

Definition at line 614 of file Kernel.h.

void set_is_initialized ( bool  p_init)
protected

set is initialized

Parameters
p_initif optimization shall be set to initialized

Definition at line 666 of file Kernel.h.

bool set_normalizer ( CKernelNormalizer normalizer)
virtual

set the current kernel normalizer

Returns
if successful

Reimplemented in CWeightedDegreeStringKernel.

Definition at line 115 of file Kernel.cpp.

virtual void set_optimization_type ( EOptimizationType  t)
virtual

set optimization type

Parameters
toptimization type to set

Reimplemented in CCombinedKernel.

Definition at line 553 of file Kernel.h.

void set_property ( EKernelProperty  p)
protected

set property

Parameters
pkernel property to set

Definition at line 648 of file Kernel.h.

void set_subkernel_weights ( SGVector< float64_t weights)
virtual

set subkernel weights

Parameters
weightsnew subkernel weights

Reimplemented in CCombinedKernel, CWeightedDegreeStringKernel, and CWeightedDegreePositionStringKernel.

Definition at line 357 of file Kernel.cpp.

void unset_property ( EKernelProperty  p)
protected

unset property

Parameters
pkernel property to unset

Definition at line 657 of file Kernel.h.

Friends And Related Function Documentation

friend class CAvgDiagKernelNormalizer
friend

Definition at line 176 of file Kernel.h.

friend class CDiceKernelNormalizer
friend

Definition at line 184 of file Kernel.h.

friend class CFirstElementKernelNormalizer
friend

Definition at line 178 of file Kernel.h.

friend class CMultitaskKernelMaskNormalizer
friend

Definition at line 181 of file Kernel.h.

Definition at line 182 of file Kernel.h.

friend class CMultitaskKernelMklNormalizer
friend

Definition at line 180 of file Kernel.h.

friend class CMultitaskKernelNormalizer
friend

Definition at line 179 of file Kernel.h.

friend class CRidgeKernelNormalizer
friend

Definition at line 177 of file Kernel.h.

friend class CSqrtDiagKernelNormalizer
friend

Definition at line 175 of file Kernel.h.

friend class CTanimotoKernelNormalizer
friend

Definition at line 183 of file Kernel.h.

friend class CVarianceKernelNormalizer
friend

Definition at line 174 of file Kernel.h.

friend class CZeroMeanCenterKernelNormalizer
friend

Definition at line 185 of file Kernel.h.

Member Data Documentation

int32_t cache_size
protected

cache_size in MB

Definition at line 799 of file Kernel.h.

float64_t combined_kernel_weight
protected

combined kernel weight

Definition at line 821 of file Kernel.h.

KERNELCACHE_ELEM* kernel_matrix
protected

this COULD store the whole kernel matrix usually not applicable / necessary to compute the whole matrix

Definition at line 805 of file Kernel.h.

CFeatures* lhs
protected

feature vectors to occur on left hand side

Definition at line 808 of file Kernel.h.

bool lhs_equals_rhs
protected

lhs

Definition at line 813 of file Kernel.h.

CKernelNormalizer* normalizer
protected

normalize the kernel(i,j) function based on this normalization function

Definition at line 835 of file Kernel.h.

int32_t num_lhs
protected

number of feature vectors on left hand side

Definition at line 816 of file Kernel.h.

int32_t num_rhs
protected

number of feature vectors on right hand side

Definition at line 818 of file Kernel.h.

EOptimizationType opt_type
protected

optimization type (currently FASTBUTMEMHUNGRY and SLOWBUTMEMEFFICIENT)

Definition at line 828 of file Kernel.h.

bool optimization_initialized
protected

if optimization is initialized

Definition at line 824 of file Kernel.h.

uint64_t properties
protected

kernel properties

Definition at line 831 of file Kernel.h.

CFeatures* rhs
protected

feature vectors to occur on right hand side

Definition at line 810 of file Kernel.h.


The documentation for this class was generated from the following files:

SHOGUN Machine Learning Toolbox - Documentation