SHOGUN  v3.2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
List of all members | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes
CDistanceKernel Class Reference

Detailed Description

The Distance kernel takes a distance as input.

It turns a distance into something kernel like by computing

\[ k({\bf x}, {\bf x'}) = e^{-\frac{dist({\bf x}, {\bf x'})}{width}} \]

Definition at line 33 of file DistanceKernel.h.

Inheritance diagram for CDistanceKernel:
Inheritance graph
[legend]

Public Member Functions

 CDistanceKernel ()
 
 CDistanceKernel (int32_t cache, float64_t width, CDistance *dist)
 
 CDistanceKernel (CFeatures *l, CFeatures *r, float64_t width, CDistance *dist)
 
virtual ~CDistanceKernel ()
 
virtual bool init (CFeatures *l, CFeatures *r)
 
virtual void register_params ()
 
virtual EKernelType get_kernel_type ()
 
virtual EFeatureType get_feature_type ()
 
virtual EFeatureClass get_feature_class ()
 
virtual const char * get_name () const
 
virtual void set_width (float64_t w)
 
virtual float64_t get_width () const
 
float64_t kernel (int32_t idx_a, int32_t idx_b)
 
SGMatrix< float64_tget_kernel_matrix ()
 
template<class T >
SGMatrix< T > get_kernel_matrix ()
 
SGVector< float64_tget_kernel_diagonal (SGVector< float64_t > preallocated=SGVector< float64_t >())
 
virtual SGVector< float64_tget_kernel_col (int32_t j)
 
virtual SGVector< float64_tget_kernel_row (int32_t i)
 
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 More...
 
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 SGVector< float64_tget_subkernel_weights ()
 
virtual void set_subkernel_weights (SGVector< float64_t > weights)
 
virtual SGMatrix< float64_tget_parameter_gradient (const TParameter *param, index_t index=-1)
 
virtual CSGObjectshallow_copy () const
 
virtual CSGObjectdeep_copy () const
 
virtual bool is_generic (EPrimitiveType *generic) const
 
template<class T >
void set_generic ()
 
template<>
void set_generic ()
 
template<>
void set_generic ()
 
template<>
void set_generic ()
 
template<>
void set_generic ()
 
template<>
void set_generic ()
 
template<>
void set_generic ()
 
template<>
void set_generic ()
 
template<>
void set_generic ()
 
template<>
void set_generic ()
 
template<>
void set_generic ()
 
template<>
void set_generic ()
 
template<>
void set_generic ()
 
template<>
void set_generic ()
 
template<>
void set_generic ()
 
template<>
void set_generic ()
 
void unset_generic ()
 
virtual void print_serializable (const char *prefix="")
 
virtual bool save_serializable (CSerializableFile *file, const char *prefix="", int32_t param_version=Version::get_version_parameter())
 
virtual bool load_serializable (CSerializableFile *file, const char *prefix="", int32_t param_version=Version::get_version_parameter())
 
DynArray< TParameter * > * load_file_parameters (const SGParamInfo *param_info, int32_t file_version, CSerializableFile *file, const char *prefix="")
 
DynArray< TParameter * > * load_all_file_parameters (int32_t file_version, int32_t current_version, CSerializableFile *file, const char *prefix="")
 
void map_parameters (DynArray< TParameter * > *param_base, int32_t &base_version, DynArray< const SGParamInfo * > *target_param_infos)
 
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 ()
 
SGStringList< char > get_modelsel_names ()
 
void print_modsel_params ()
 
char * get_modsel_param_descr (const char *param_name)
 
index_t get_modsel_param_index (const char *param_name)
 
void build_gradient_parameter_dictionary (CMap< TParameter *, CSGObject * > *dict)
 
virtual bool update_parameter_hash ()
 
virtual bool equals (CSGObject *other, float64_t accuracy=0.0)
 
virtual CSGObjectclone ()
 

Static Public Member Functions

static CKernelobtain_from_generic (CSGObject *kernel)
 

Public Attributes

SGIOio
 
Parallelparallel
 
Versionversion
 
Parameterm_parameters
 
Parameterm_model_selection_parameters
 
Parameterm_gradient_parameters
 
ParameterMapm_parameter_map
 
uint32_t m_hash
 

Protected Member Functions

float64_t compute (int32_t idx_a, int32_t idx_b)
 
void set_property (EKernelProperty p)
 
void unset_property (EKernelProperty p)
 
void set_is_initialized (bool p_init)
 
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 TParametermigrate (DynArray< TParameter * > *param_base, const SGParamInfo *target)
 
virtual void one_to_one_migration_prepare (DynArray< TParameter * > *param_base, const SGParamInfo *target, TParameter *&replacement, TParameter *&to_migrate, char *old_name=NULL)
 
virtual void load_serializable_pre () throw (ShogunException)
 

Static Protected Member Functions

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

Protected Attributes

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

Constructor & Destructor Documentation

default constructor

Definition at line 20 of file DistanceKernel.cpp.

CDistanceKernel ( int32_t  cache,
float64_t  width,
CDistance dist 
)

constructor

Parameters
cachecache size
widthwidth
distdistance

Definition at line 26 of file DistanceKernel.cpp.

CDistanceKernel ( CFeatures l,
CFeatures r,
float64_t  width,
CDistance dist 
)

constructor

Parameters
lfeatures of left-hand side
rfeatures of right-hand side
widthwidth
distdistance

Definition at line 35 of file DistanceKernel.cpp.

~CDistanceKernel ( )
virtual

Definition at line 46 of file DistanceKernel.cpp.

Member Function Documentation

void add_to_normal ( int32_t  vector_idx,
float64_t  weight 
)
virtualinherited

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

void build_gradient_parameter_dictionary ( CMap< TParameter *, CSGObject * > *  dict)
inherited

Builds a dictionary of all parameters in SGObject as well of those of SGObjects that are parameters of this object. Dictionary maps parameters to the objects that own them.

Parameters
dictdictionary of parameters to be built.

Definition at line 1156 of file SGObject.cpp.

void cleanup ( )
virtualinherited
void clear_normal ( )
virtualinherited

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

CSGObject * clone ( )
virtualinherited

Creates a clone of the current object. This is done via recursively traversing all parameters, which corresponds to a deep copy. Calling equals on the cloned object always returns true although none of the memory of both objects overlaps.

Returns
an identical copy of the given object, which is disjoint in memory. NULL if the clone fails. Note that the returned object is SG_REF'ed

Definition at line 1273 of file SGObject.cpp.

float64_t compute ( int32_t  idx_a,
int32_t  idx_b 
)
protectedvirtual

compute kernel function for features a and b idx_{a,b} denote the index of the feature vectors in the corresponding feature object

Parameters
idx_aindex a
idx_bindex b
Returns
computed kernel function at indices a,b

Implements CKernel.

Definition at line 62 of file DistanceKernel.cpp.

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 
)
virtualinherited

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

void compute_by_subkernel ( int32_t  vector_idx,
float64_t subkernel_contrib 
)
virtualinherited

compute by subkernel

Parameters
vector_idxindex
subkernel_contribsubkernel contribution

Reimplemented in CCombinedKernel, CWeightedDegreeStringKernel, and CWeightedDegreePositionStringKernel.

Definition at line 366 of file Kernel.cpp.

float64_t compute_optimized ( int32_t  vector_idx)
virtualinherited

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

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

compute row start offset for parallel kernel matrix computation

Parameters
offsoffset
nnumber of columns
symmetricwhether matrix is symmetric

Definition at line 630 of file Kernel.h.

virtual CSGObject* deep_copy ( ) const
virtualinherited

A deep copy. All the instance variables will also be copied.

Definition at line 126 of file SGObject.h.

bool delete_optimization ( )
virtualinherited

delete optimization

Returns
if deleting was successful

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

Definition at line 332 of file Kernel.cpp.

bool equals ( CSGObject other,
float64_t  accuracy = 0.0 
)
virtualinherited

Recursively compares the current SGObject to another one. Compares all registered numerical parameters, recursion upon complex (SGObject) parameters. Does not compare pointers!

May be overwritten but please do with care! Should not be necessary in most cases.

Parameters
otherobject to compare with
accuracyaccuracy to use for comparison (optional)
Returns
true if all parameters were equal, false if not

Definition at line 1177 of file SGObject.cpp.

int32_t get_cache_size ( )
inherited

return the size of the kernel cache

Returns
size of kernel cache

Definition at line 435 of file Kernel.h.

float64_t get_combined_kernel_weight ( )
inherited

get combined kernel weight

Returns
combined kernel weight

Definition at line 526 of file Kernel.h.

virtual EFeatureClass get_feature_class ( )
virtual

return feature class the kernel can deal with

Returns
feature class of distance used

Implements CKernel.

Reimplemented in CBesselKernel.

Definition at line 87 of file DistanceKernel.h.

virtual EFeatureType get_feature_type ( )
virtual

return feature type the kernel can deal with

Returns
feature type of distance used

Implements CKernel.

Reimplemented in CBesselKernel.

Definition at line 81 of file DistanceKernel.h.

SGIO * get_global_io ( )
inherited

get the io object

Returns
io object

Definition at line 174 of file SGObject.cpp.

Parallel * get_global_parallel ( )
inherited

get the parallel object

Returns
parallel object

Definition at line 209 of file SGObject.cpp.

Version * get_global_version ( )
inherited

get the version object

Returns
version object

Definition at line 222 of file SGObject.cpp.

bool get_is_initialized ( )
inherited

check if optimization is initialized

Returns
if optimization is initialized

Definition at line 477 of file Kernel.h.

virtual SGVector<float64_t> get_kernel_col ( int32_t  j)
virtualinherited

get column j

Returns
the jth column of the kernel matrix

Definition at line 256 of file Kernel.h.

SGVector<float64_t> get_kernel_diagonal ( SGVector< float64_t preallocated = SGVector<float64_t>())
inherited
Returns
Vector with diagonal elements of the kernel matrix. Note that left- and right-handside features must be set and of equal size
Parameters
preallocatedvector with space for results

Definition at line 222 of file Kernel.h.

template SGMatrix< float32_t > get_kernel_matrix< float32_t > ( )
inherited

get kernel matrix

Returns
computed kernel matrix (needs to be cleaned up)

Definition at line 211 of file