Public Member Functions | |
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 float64_t * | get_kernel_matrix_real (int32_t &m, int32_t &n, float64_t *target) |
virtual float32_t * | get_kernel_matrix_shortreal (int32_t &m, int32_t &n, float32_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 () |
bool | load (char *fname) |
bool | save (char *fname) |
virtual bool | load_init (FILE *src)=0 |
virtual bool | save_init (FILE *dest)=0 |
CFeatures * | get_lhs () |
CFeatures * | get_rhs () |
int32_t | get_num_vec_lhs () |
int32_t | get_num_vec_rhs () |
bool | has_features () |
bool | 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 |
virtual const char * | get_name ()=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 |
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 | |
float64_t | combined_kernel_weight |
bool | optimization_initialized |
EOptimizationType | opt_type |
uint64_t | properties |
CKernelNormalizer * | normalizer |
Friends | |
class | CSqrtDiagKernelNormalizer |
class | CAvgDiagKernelNormalizer |
class | CFirstElementKernelNormalizer |
It can be defined as
where 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 97 of file Kernel.h.
CKernel::CKernel | ( | int32_t | size | ) |
constructor
l | features for left-hand side | |
r | features for right-hand side | |
size | cache size |
Definition at line 52 of file Kernel.cpp.
CKernel::~CKernel | ( | ) | [virtual] |
Definition at line 69 of file Kernel.cpp.
void CKernel::add_to_normal | ( | int32_t | vector_idx, | |
float64_t | weight | |||
) | [virtual] |
add vector*factor to 'virtual' normal vector
vector_idx | index | |
weight | weight |
Reimplemented in CCombinedKernel, CCommUlongStringKernel, CCommWordStringKernel, CLinearByteKernel, CLinearKernel, CLinearStringKernel, CLinearWordKernel, CSparseLinearKernel, CWeightedCommWordStringKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.
Definition at line 597 of file Kernel.cpp.
void CKernel::cleanup | ( | ) | [virtual] |
clean up your kernel
base method only removes lhs and rhs overload to add further cleanup but make sure CKernel::cleanup() is called
Reimplemented in CCombinedKernel, CCommUlongStringKernel, CCommWordStringKernel, CCustomKernel, CFixedDegreeStringKernel, CHistogramWordStringKernel, CLinearByteKernel, CLinearKernel, CLinearStringKernel, CLinearWordKernel, CLocalAlignmentStringKernel, CPolyKernel, CPolyMatchStringKernel, CPolyMatchWordStringKernel, CPyramidChi2, CSalzbergWordStringKernel, CSigmoidKernel, CSimpleLocalityImprovedStringKernel, CSparseGaussianKernel, CSparseLinearKernel, CSparsePolyKernel, CWeightedCommWordStringKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.
Definition at line 336 of file Kernel.cpp.
void CKernel::clear_normal | ( | ) | [virtual] |
for optimizable kernels, i.e. kernels where the weight vector can be computed explicitely (if it fits into memory)
Reimplemented in CCombinedKernel, CCommUlongStringKernel, CCommWordStringKernel, CLinearByteKernel, CLinearKernel, CLinearStringKernel, CLinearWordKernel, CSparseLinearKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.
Definition at line 602 of file Kernel.cpp.
virtual float64_t CKernel::compute | ( | int32_t | x, | |
int32_t | y | |||
) | [protected, pure virtual] |
compute kernel function for features a and b idx_{a,b} denote the index of the feature vectors in the corresponding feature object
abstract base method
x | index a | |
y | index b |
Implemented in CAUCKernel, CChi2Kernel, CCombinedKernel, CCommUlongStringKernel, CCommWordStringKernel, CConstKernel, CCustomKernel, CDiagKernel, CDistanceKernel, CFixedDegreeStringKernel, CGaussianKernel, CGaussianShiftKernel, CGaussianShortRealKernel, CHistogramWordStringKernel, CLinearByteKernel, CLinearKernel, CLinearStringKernel, CLinearWordKernel, CLocalAlignmentStringKernel, CLocalityImprovedStringKernel, CMatchWordStringKernel, COligoKernel, CPolyKernel, CPolyMatchStringKernel, CPolyMatchWordStringKernel, CPyramidChi2, CSalzbergWordStringKernel, CSigmoidKernel, CSimpleLocalityImprovedStringKernel, CSparseGaussianKernel, CSparseLinearKernel, CSparsePolyKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.
void CKernel::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 590 of file Kernel.cpp.
void CKernel::compute_by_subkernel | ( | int32_t | vector_idx, | |
float64_t * | subkernel_contrib | |||
) | [virtual] |
compute by subkernel
vector_idx | index | |
subkernel_contrib | subkernel contribution |
Reimplemented in CCombinedKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.
Definition at line 612 of file Kernel.cpp.
float64_t CKernel::compute_optimized | ( | int32_t | vector_idx | ) | [virtual] |
compute optimized
vector_idx | index to compute |
Reimplemented in CCombinedKernel, CCommUlongStringKernel, CCommWordStringKernel, CLinearByteKernel, CLinearKernel, CLinearStringKernel, CLinearWordKernel, CSparseLinearKernel, CWeightedCommWordStringKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.
Definition at line 584 of file Kernel.cpp.
bool CKernel::delete_optimization | ( | ) | [virtual] |
delete optimization
Reimplemented in CCombinedKernel, CCommUlongStringKernel, CCommWordStringKernel, CLinearByteKernel, CLinearKernel, CLinearStringKernel, CLinearWordKernel, CSparseLinearKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.
Definition at line 578 of file Kernel.cpp.
int32_t CKernel::get_cache_size | ( | ) |
float64_t CKernel::get_combined_kernel_weight | ( | ) |
virtual EFeatureClass CKernel::get_feature_class | ( | ) | [pure virtual] |
return feature class the kernel can deal with
abstract base method
Implemented in CCombinedKernel, CConstKernel, CCustomKernel, CDiagKernel, CDistanceKernel, CSimpleKernel< ST >, CSparseKernel< ST >, CStringKernel< ST >, CSimpleKernel< uint8_t >, CSimpleKernel< uint16_t >, CSimpleKernel< float64_t >, CSimpleKernel< float32_t >, CSparseKernel< float64_t >, CStringKernel< uint64_t >, CStringKernel< uint16_t >, and CStringKernel< char >.
virtual EFeatureType CKernel::get_feature_type | ( | ) | [pure virtual] |
return feature type the kernel can deal with
abstract base method
Implemented in CCombinedKernel, CCommUlongStringKernel, CCommWordStringKernel, CConstKernel, CCustomKernel, CDiagKernel, CDistanceKernel, CSimpleKernel< ST >, CSparseGaussianKernel, CSparseKernel< ST >, CSparsePolyKernel, CStringKernel< ST >, CWeightedCommWordStringKernel, CSimpleKernel< uint8_t >, CSimpleKernel< uint16_t >, CSimpleKernel< float64_t >, CSimpleKernel< float32_t >, CSparseKernel< float64_t >, CStringKernel< uint64_t >, CStringKernel< uint16_t >, CStringKernel< char >, CSimpleKernel< ST >, CSimpleKernel< ST >, CSimpleKernel< ST >, CSimpleKernel< ST >, CSparseKernel< ST >, CSparseKernel< ST >, CSparseKernel< ST >, CSparseKernel< ST >, CSparseKernel< ST >, CSparseKernel< ST >, CStringKernel< ST >, CStringKernel< ST >, CStringKernel< ST >, and CStringKernel< ST >.
bool CKernel::get_is_initialized | ( | ) |
void CKernel::get_kernel_matrix | ( | float64_t ** | dst, | |
int32_t * | m, | |||
int32_t * | n | |||
) |
get kernel matrix
dst | destination where matrix will be stored | |
m | dimension m of matrix | |
n | dimension n of matrix |
Definition at line 79 of file Kernel.cpp.
float64_t * CKernel::get_kernel_matrix_real | ( | int32_t & | m, | |
int32_t & | n, | |||
float64_t * | target | |||
) | [virtual] |
get kernel matrix real
m | dimension m of matrix | |
n | dimension n of matrix | |
target | the kernel matrix |
Definition at line 216 of file Kernel.cpp.
float32_t * CKernel::get_kernel_matrix_shortreal | ( | int32_t & | m, | |
int32_t & | n, | |||
float32_t * | target | |||
) | [virtual] |
get kernel matrix shortreal
m | dimension m of matrix | |
n | dimension n of matrix | |
target | target for kernel matrix |
Reimplemented in CCustomKernel.
Definition at line 146 of file Kernel.cpp.
virtual EKernelType CKernel::get_kernel_type | ( | ) | [pure virtual] |
return what type of kernel we are, e.g. Linear,Polynomial, Gaussian,...
abstract base method
Implemented in CAUCKernel, CChi2Kernel, CCombinedKernel, CCommUlongStringKernel, CCommWordStringKernel, CConstKernel, CCustomKernel, CDiagKernel, CDistanceKernel, CFixedDegreeStringKernel, CGaussianKernel, CGaussianShiftKernel, CGaussianShortRealKernel, CHistogramWordStringKernel, CLinearByteKernel, CLinearKernel, CLinearStringKernel, CLinearWordKernel, CLocalAlignmentStringKernel, CLocalityImprovedStringKernel, CMatchWordStringKernel, COligoKernel, CPolyKernel, CPolyMatchStringKernel, CPolyMatchWordStringKernel, CPyramidChi2, CSalzbergWordStringKernel, CSigmoidKernel, CSimpleLocalityImprovedStringKernel, CSparseGaussianKernel, CSparseLinearKernel, CSparsePolyKernel, CWeightedCommWordStringKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.
CFeatures* CKernel::get_lhs | ( | ) |
virtual const char* CKernel::get_name | ( | ) | [pure virtual] |
get the name of a kernel
Implemented in CAUCKernel, CChi2Kernel, CCombinedKernel, CCommUlongStringKernel, CCommWordStringKernel, CConstKernel, CCustomKernel, CDiagKernel, CDistanceKernel, CFixedDegreeStringKernel, CGaussianKernel, CGaussianShiftKernel, CGaussianShortRealKernel, CHistogramWordStringKernel, CLinearByteKernel, CLinearKernel, CLinearStringKernel, CLinearWordKernel, CLocalAlignmentStringKernel, CLocalityImprovedStringKernel, CMatchWordStringKernel, COligoKernel, CPolyKernel, CPolyMatchStringKernel, CPolyMatchWordStringKernel, CPyramidChi2, CSalzbergWordStringKernel, CSigmoidKernel, CSimpleLocalityImprovedStringKernel, CSparseGaussianKernel, CSparseLinearKernel, CSparsePolyKernel, CWeightedCommWordStringKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.
CKernelNormalizer * CKernel::get_normalizer | ( | ) | [virtual] |
obtain the current kernel normalizer
Definition at line 325 of file Kernel.cpp.
int32_t CKernel::get_num_subkernels | ( | ) | [virtual] |
get number of subkernels
Reimplemented in CCombinedKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.
Definition at line 607 of file Kernel.cpp.
int32_t CKernel::get_num_vec_lhs | ( | ) |
int32_t CKernel::get_num_vec_rhs | ( | ) |
EOptimizationType CKernel::get_optimization_type | ( | ) |
CFeatures* CKernel::get_rhs | ( | ) |
const float64_t * CKernel::get_subkernel_weights | ( | int32_t & | num_weights | ) | [virtual] |
get subkernel weights
num_weights | number of weights will be stored here |
Reimplemented in CCombinedKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.
Definition at line 618 of file Kernel.cpp.
bool CKernel::has_features | ( | ) |
bool CKernel::has_property | ( | EKernelProperty | p | ) |
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 (!)
lhs | features for left-hand side | |
rhs | features for right-hand side |
Reimplemented in CAUCKernel, CChi2Kernel, CCombinedKernel, CCommUlongStringKernel, CCommWordStringKernel, CConstKernel, CCustomKernel, CDistanceKernel, CFixedDegreeStringKernel, CGaussianKernel, CGaussianShortRealKernel, CHistogramWordStringKernel, CLinearByteKernel, CLinearKernel, CLinearStringKernel, CLinearWordKernel, CLocalAlignmentStringKernel, CLocalityImprovedStringKernel, CMatchWordStringKernel, COligoKernel, CPolyKernel, CPolyMatchStringKernel, CPolyMatchWordStringKernel, CPyramidChi2, CSalzbergWordStringKernel, CSigmoidKernel, CSimpleKernel< ST >, CSimpleLocalityImprovedStringKernel, CSparseGaussianKernel, CSparseKernel< ST >, CSparseLinearKernel, CSparsePolyKernel, CStringKernel< ST >, CWeightedCommWordStringKernel, CWeightedDegreePositionStringKernel, CWeightedDegreeStringKernel, CSimpleKernel< uint8_t >, CSimpleKernel< uint16_t >, CSimpleKernel< float64_t >, CSimpleKernel< float32_t >, CSparseKernel< float64_t >, CStringKernel< uint64_t >, CStringKernel< uint16_t >, and CStringKernel< char >.
Definition at line 289 of file Kernel.cpp.
bool CKernel::init_normalizer | ( | ) | [virtual] |
initialize the current kernel normalizer
Definition at line 331 of file Kernel.cpp.
bool CKernel::init_optimization | ( | int32_t | count, | |
int32_t * | IDX, | |||
float64_t * | weights | |||
) | [virtual] |
initialize optimization
count | count | |
IDX | index | |
weights | weights |
Reimplemented in CCombinedKernel, CCommUlongStringKernel, CCommWordStringKernel, CLinearByteKernel, CLinearKernel, CLinearStringKernel, CLinearWordKernel, CSparseLinearKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.
Definition at line 571 of file Kernel.cpp.
bool CKernel::init_optimization_svm | ( | CSVM * | svm | ) |
initialize optimization
svm | svm model |
Definition at line 631 of file Kernel.cpp.
float64_t CKernel::kernel | ( | int32_t | idx_a, | |
int32_t | idx_b | |||
) |
bool CKernel::lhs_equals_rhs | ( | ) |
void CKernel::list_kernel | ( | ) |
list kernel
Definition at line 410 of file Kernel.cpp.
bool CKernel::load | ( | char * | fname | ) |
load the kernel matrix
fname | filename to load from |
Definition at line 343 of file Kernel.cpp.
virtual bool CKernel::load_init | ( | FILE * | src | ) | [pure virtual] |
load kernel init_data
abstract base method
src | file to load from |
Implemented in CAUCKernel, CChi2Kernel, CCombinedKernel, CCommUlongStringKernel, CCommWordStringKernel, CConstKernel, CCustomKernel, CDiagKernel, CDistanceKernel, CFixedDegreeStringKernel, CGaussianKernel, CGaussianShortRealKernel, CHistogramWordStringKernel, CLinearByteKernel, CLinearKernel, CLinearStringKernel, CLinearWordKernel, CLocalAlignmentStringKernel, CLocalityImprovedStringKernel, CMatchWordStringKernel, COligoKernel, CPolyKernel, CPolyMatchStringKernel, CPolyMatchWordStringKernel, CPyramidChi2, CSalzbergWordStringKernel, CSigmoidKernel, CSimpleLocalityImprovedStringKernel, CSparseGaussianKernel, CSparseLinearKernel, CSparsePolyKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.
void CKernel::remove_lhs | ( | ) | [virtual] |
remove lhs from kernel
Reimplemented in CCombinedKernel, CCommUlongStringKernel, CCommWordStringKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.
Definition at line 391 of file Kernel.cpp.
void CKernel::remove_lhs_and_rhs | ( | ) | [virtual] |
remove lhs and rhs from kernel
Definition at line 379 of file Kernel.cpp.
void CKernel::remove_rhs | ( | ) | [virtual] |
takes all necessary steps if the rhs is removed from kernel
remove rhs from kernel
Reimplemented in CCombinedKernel, CCommUlongStringKernel, and CCommWordStringKernel.
Definition at line 400 of file Kernel.cpp.
bool CKernel::save | ( | char * | fname | ) |
save kernel matrix
fname | filename to save to |
Definition at line 348 of file Kernel.cpp.
virtual bool CKernel::save_init | ( | FILE * | dest | ) | [pure virtual] |
save kernel init_data
abstract base method
dest | file to save to |
Implemented in CAUCKernel, CChi2Kernel, CCombinedKernel, CCommUlongStringKernel, CCommWordStringKernel, CConstKernel, CCustomKernel, CDiagKernel, CDistanceKernel, CFixedDegreeStringKernel, CGaussianKernel, CGaussianShortRealKernel, CHistogramWordStringKernel, CLinearByteKernel, CLinearKernel, CLinearStringKernel, CLinearWordKernel, CLocalAlignmentStringKernel, CLocalityImprovedStringKernel, CMatchWordStringKernel, COligoKernel, CPolyKernel, CPolyMatchStringKernel, CPolyMatchWordStringKernel, CPyramidChi2, CSalzbergWordStringKernel, CSigmoidKernel, CSimpleLocalityImprovedStringKernel, CSparseGaussianKernel, CSparseLinearKernel, CSparsePolyKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.
void CKernel::set_cache_size | ( | int32_t | size | ) |
void CKernel::set_combined_kernel_weight | ( | float64_t | nw | ) |
void CKernel::set_is_initialized | ( | bool | p_init | ) | [protected] |
bool CKernel::set_normalizer | ( | CKernelNormalizer * | normalizer | ) | [virtual] |
virtual void CKernel::set_optimization_type | ( | EOptimizationType | t | ) | [virtual] |
void CKernel::set_property | ( | EKernelProperty | p | ) | [protected] |
void CKernel::set_subkernel_weights | ( | float64_t * | weights, | |
int32_t | num_weights | |||
) | [virtual] |
set subkernel weights
weights | subkernel weights | |
num_weights | number of weights |
Reimplemented in CCombinedKernel, CWeightedDegreePositionStringKernel, and CWeightedDegreeStringKernel.
Definition at line 624 of file Kernel.cpp.
void CKernel::unset_property | ( | EKernelProperty | p | ) | [protected] |
friend class CAvgDiagKernelNormalizer [friend] |
friend class CFirstElementKernelNormalizer [friend] |
friend class CSqrtDiagKernelNormalizer [friend] |
int32_t CKernel::cache_size [protected] |
float64_t CKernel::combined_kernel_weight [protected] |
KERNELCACHE_ELEM* CKernel::kernel_matrix [protected] |
CFeatures* CKernel::lhs [protected] |
CKernelNormalizer* CKernel::normalizer [protected] |
EOptimizationType CKernel::opt_type [protected] |
bool CKernel::optimization_initialized [protected] |
uint64_t CKernel::properties [protected] |
CFeatures* CKernel::rhs [protected] |