SHOGUN v0.10.0
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 150 of file Kernel.h.

Inheritance diagram for CKernel:
Inheritance graph
[legend]

List of all members.

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)
void get_kernel_matrix (float64_t **dst, int32_t *m, int32_t *n)
virtual std::vector< float64_t > get_kernel_col (int32_t j)
virtual std::vector< float64_t > get_kernel_row (int32_t i)
template<class T >
T * get_kernel_matrix (int32_t &m, int32_t &n, T *target)
virtual bool init (CFeatures *lhs, CFeatures *rhs)
virtual bool set_normalizer (CKernelNormalizer *normalizer)
virtual CKernelNormalizer * get_normalizer ()
virtual bool init_normalizer ()
virtual void cleanup ()
void load (CFile *loader)
void save (CFile *writer)
CFeatures * get_lhs ()
CFeatures * get_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_t * get_subkernel_weights (int32_t &num_weights)
virtual void set_subkernel_weights (float64_t *weights, int32_t num_weights)

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)

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_ELEM * kernel_matrix
CFeatures * lhs
 feature vectors to occur on left hand side
CFeatures * rhs
 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
CKernelNormalizer * normalizer

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

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 43 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 54 of file Kernel.cpp.

~CKernel ( ) [virtual]

Definition at line 67 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, CCommUlongStringKernel, CCommWordStringKernel, CLinearKernel, CLinearStringKernel, CWeightedCommWordStringKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.

Definition at line 334 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, CCommUlongStringKernel, CCommWordStringKernel, CLinearKernel, CLinearStringKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.

Definition at line 339 of file Kernel.cpp.

virtual float64_t compute ( int32_t  x,
int32_t  y 
) [protected, pure 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, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.

Definition at line 327 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, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.

Definition at line 349 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, CCommUlongStringKernel, CCommWordStringKernel, CLinearKernel, CLinearStringKernel, CWeightedCommWordStringKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.

Definition at line 321 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 673 of file Kernel.h.

bool delete_optimization ( ) [virtual]

delete optimization

Returns:
if deleting was successful

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

Definition at line 315 of file Kernel.cpp.

int32_t get_cache_size ( )

return the size of the kernel cache

Returns:
size of kernel cache

Definition at line 502 of file Kernel.h.

float64_t get_combined_kernel_weight ( )

get combined kernel weight

Returns:
combined kernel weight

Definition at line 593 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 544 of file Kernel.h.

virtual std::vector<float64_t> get_kernel_col ( int32_t  j) [virtual]

get column j

Returns:
the jth column of the kernel matrix

Definition at line 221 of file Kernel.h.

T* get_kernel_matrix ( int32_t &  m,
int32_t &  n,
T *  target 
)

get kernel matrix real

Parameters:
mdimension m of matrix
ndimension n of matrix
targetthe kernel matrix
Returns:
the kernel matrix

Definition at line 264 of file Kernel.h.

void get_kernel_matrix ( float64_t **  dst,
int32_t *  m,
int32_t *  n 
)

get kernel matrix

Parameters:
dstdestination where matrix will be stored
mdimension m of matrix
ndimension n of matrix

Definition at line 78 of file Kernel.cpp.

static void* get_kernel_matrix_helper ( void *  p) [static, protected]

helper for computing the kernel matrix in a parallel way

Parameters:
pthread parameters

Definition at line 690 of file Kernel.h.

virtual std::vector<float64_t> get_kernel_row ( int32_t  i) [virtual]

get row i

Returns:
the ith row of the kernel matrix

Definition at line 241 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 410 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 449 of file Kernel.h.

CKernelNormalizer * get_normalizer ( ) [virtual]

obtain the current kernel normalizer

Returns:
the kernel normalizer

Definition at line 151 of file Kernel.cpp.

int32_t get_num_subkernels ( ) [virtual]

get number of subkernels

Returns:
number of subkernels

Reimplemented in CCombinedKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.

Definition at line 344 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 422 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 431 of file Kernel.h.

EOptimizationType get_optimization_type ( )

get optimization type

Returns:
optimization type

Definition at line 532 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 416 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, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.

Definition at line 355 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 CCombinedKernel, and CCustomKernel.

Definition at line 440 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 514 of file Kernel.h.

bool init ( CFeatures *  lhs,
CFeatures *  rhs 
) [virtual]
bool init_normalizer ( ) [virtual]

initialize the current kernel normalizer

Returns:
if init was successful

Definition at line 157 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, CCommUlongStringKernel, CCommWordStringKernel, CLinearKernel, CLinearStringKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.

Definition at line 308 of file Kernel.cpp.

bool init_optimization_svm ( CSVM *  svm)

initialize optimization

Parameters:
svmsvm model
Returns:
if initializing was successful

Definition at line 368 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 196 of file Kernel.h.

void list_kernel ( )

list kernel

Definition at line 225 of file Kernel.cpp.

void load ( CFile *  loader)

load the kernel matrix

Parameters:
loaderFile object via which to load data

Definition at line 169 of file Kernel.cpp.

void load_serializable_post ( void  ) throw (ShogunException) [protected, virtual]

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 CGaussianKernel, and CWeightedDegreePositionStringKernel.

Definition at line 386 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 185 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 212 of file Kernel.cpp.

void save ( CFile *  writer)

save kernel matrix

Parameters:
writerFile object via which to save data

Definition at line 175 of file Kernel.cpp.

void save_serializable_post ( ) throw (ShogunException) [protected, virtual]

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 401 of file Kernel.cpp.

void save_serializable_pre ( ) throw (ShogunException) [protected, virtual]

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 393 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 492 of file Kernel.h.

void set_combined_kernel_weight ( float64_t  nw)

set combined kernel weight

Parameters:
nwnew combined kernel weight

Definition at line 599 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 653 of file Kernel.h.

bool set_normalizer ( CKernelNormalizer *  normalizer) [virtual]

set the current kernel normalizer

Returns:
if successful

Reimplemented in CWeightedDegreeStringKernel.

Definition at line 139 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 538 of file Kernel.h.

void set_property ( EKernelProperty  p) [protected]

set property

Parameters:
pkernel property to set

Definition at line 635 of file Kernel.h.

void set_subkernel_weights ( float64_t *  weights,
int32_t  num_weights 
) [virtual]

set subkernel weights

Parameters:
weightssubkernel weights
num_weightsnumber of weights

Reimplemented in CCombinedKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.

Definition at line 361 of file Kernel.cpp.

void unset_property ( EKernelProperty  p) [protected]

unset property

Parameters:
pkernel property to unset

Definition at line 644 of file Kernel.h.


Friends And Related Function Documentation

friend class CAvgDiagKernelNormalizer [friend]

Reimplemented in CCommWordStringKernel.

Definition at line 154 of file Kernel.h.

friend class CDiceKernelNormalizer [friend]

Reimplemented in CCommWordStringKernel.

Definition at line 162 of file Kernel.h.

friend class CFirstElementKernelNormalizer [friend]

Reimplemented in CCommWordStringKernel.

Definition at line 156 of file Kernel.h.

friend class CMultitaskKernelMaskNormalizer [friend]

Definition at line 159 of file Kernel.h.

friend class CMultitaskKernelMaskPairNormalizer [friend]

Definition at line 160 of file Kernel.h.

friend class CMultitaskKernelMklNormalizer [friend]

Definition at line 158 of file Kernel.h.

friend class CMultitaskKernelNormalizer [friend]

Definition at line 157 of file Kernel.h.

friend class CRidgeKernelNormalizer [friend]

Reimplemented in CCommWordStringKernel.

Definition at line 155 of file Kernel.h.

friend class CSqrtDiagKernelNormalizer [friend]

Reimplemented in CCommWordStringKernel.

Definition at line 153 of file Kernel.h.

friend class CTanimotoKernelNormalizer [friend]

Reimplemented in CCommWordStringKernel.

Definition at line 161 of file Kernel.h.

friend class CVarianceKernelNormalizer [friend]

Reimplemented in CCommWordStringKernel.

Definition at line 152 of file Kernel.h.

friend class CZeroMeanCenterKernelNormalizer [friend]

Definition at line 163 of file Kernel.h.


Member Data Documentation

int32_t cache_size [protected]

cache_size in MB

Definition at line 781 of file Kernel.h.

combined kernel weight

Definition at line 803 of file Kernel.h.

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

Reimplemented in CSpectrumMismatchRBFKernel, and CSpectrumRBFKernel.

Definition at line 787 of file Kernel.h.

CFeatures* lhs [protected]

feature vectors to occur on left hand side

Definition at line 790 of file Kernel.h.

bool lhs_equals_rhs [protected]

lhs

Definition at line 795 of file Kernel.h.

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

Definition at line 817 of file Kernel.h.

int32_t num_lhs [protected]

number of feature vectors on left hand side

Definition at line 798 of file Kernel.h.

int32_t num_rhs [protected]

number of feature vectors on right hand side

Definition at line 800 of file Kernel.h.

optimization type (currently FASTBUTMEMHUNGRY and SLOWBUTMEMEFFICIENT)

Definition at line 810 of file Kernel.h.

bool optimization_initialized [protected]

if optimization is initialized

Definition at line 806 of file Kernel.h.

uint64_t properties [protected]

kernel properties

Definition at line 813 of file Kernel.h.

CFeatures* rhs [protected]

feature vectors to occur on right hand side

Definition at line 792 of file Kernel.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

SHOGUN Machine Learning Toolbox - Documentation