SHOGUN
v1.1.0
|
implement DotFeatures for the polynomial kernel
see DotFeatures for further discription
Definition at line 25 of file PolyFeatures.h.
Public Member Functions | |
CPolyFeatures () | |
CPolyFeatures (CSimpleFeatures< float64_t > *feat, int32_t degree, bool normalize) | |
virtual | ~CPolyFeatures () |
CPolyFeatures (const CPolyFeatures &orig) | |
virtual int32_t | get_dim_feature_space () const |
virtual int32_t | get_nnz_features_for_vector (int32_t num) |
virtual EFeatureType | get_feature_type () |
virtual EFeatureClass | get_feature_class () |
virtual int32_t | get_num_vectors () const |
virtual float64_t | dot (int32_t vec_idx1, CDotFeatures *df, int32_t vec_idx2) |
virtual int32_t | get_size () |
CFeatures * | duplicate () const |
virtual const char * | get_name () const |
float64_t | dense_dot (int32_t vec_idx1, const float64_t *vec2, int32_t vec2_len) |
void | add_to_dense_vec (float64_t alpha, int32_t vec_idx1, float64_t *vec2, int32_t vec2_len, bool abs_val) |
virtual void * | get_feature_iterator (int32_t vector_index) |
virtual bool | get_next_feature (int32_t &index, float64_t &value, void *iterator) |
virtual void | free_feature_iterator (void *iterator) |
Protected Member Functions | |
void | store_normalization_values () |
void | store_multi_index () |
void | enumerate_multi_index (const int32_t feat_idx, uint16_t **index, uint16_t *exponents, const int32_t degree) |
void | store_multinomial_coefficients () |
int32_t | bico2 (int32_t n, int32_t k) |
int32_t | bico (int32_t n, int32_t k) |
int32_t | calc_feature_space_dimensions (int32_t N, int32_t D) |
int32_t | multinomialcoef (int32_t *exps, int32_t len) |
float64_t | gammln (float64_t xx) |
float64_t | factln (int32_t n) |
Protected Attributes | |
CSimpleFeatures< float64_t > * | m_feat |
int32_t | m_degree |
bool | m_normalize |
int32_t | m_input_dimensions |
int32_t | m_output_dimensions |
uint16_t * | m_multi_index |
float64_t * | m_multinomial_coefficients |
float32_t * | m_normalization_values |
CPolyFeatures | ( | ) |
default constructor
Definition at line 5 of file PolyFeatures.cpp.
CPolyFeatures | ( | CSimpleFeatures< float64_t > * | feat, |
int32_t | degree, | ||
bool | normalize | ||
) |
constructor
feat | real features |
degree | degree of the polynomial kernel |
normalize | normalize kernel |
Definition at line 18 of file PolyFeatures.cpp.
~CPolyFeatures | ( | ) | [virtual] |
Definition at line 40 of file PolyFeatures.cpp.
CPolyFeatures | ( | const CPolyFeatures & | orig | ) |
copy constructor
not implemented!
orig | original PolyFeature |
Definition at line 48 of file PolyFeatures.cpp.
void add_to_dense_vec | ( | float64_t | alpha, |
int32_t | vec_idx1, | ||
float64_t * | vec2, | ||
int32_t | vec2_len, | ||
bool | abs_val | ||
) | [virtual] |
compute alpha*x+vec2
alpha | alpha |
vec_idx1 | index of first vector x |
vec2 | vec2 |
vec2_len | length of vec2 |
abs_val | if true add the absolute value |
Implements CDotFeatures.
Definition at line 171 of file PolyFeatures.cpp.
int32_t bico | ( | int32_t | n, |
int32_t | k | ||
) | [protected] |
efficient implementation for the binomial coefficient function for larger values of k
Definition at line 371 of file PolyFeatures.cpp.
int32_t bico2 | ( | int32_t | n, |
int32_t | k | ||
) | [protected] |
simple recursive implementation of binomial coefficient which is very efficient if k is small, otherwise it calls a more sophisticated implementation
Definition at line 292 of file PolyFeatures.cpp.
int32_t calc_feature_space_dimensions | ( | int32_t | N, |
int32_t | D | ||
) | [protected] |
recursion to calculate the dimensions of the feature space: A(N, D)= sum_d=0^D A(N-1, d) A(1, D)==1 A(N, 0)==1 where N is the dimensionality of the input space and D is the degree
Definition at line 317 of file PolyFeatures.cpp.
compute dot product of vector with index arg1 with an given second vector
vec_idx1 | index of first vector |
vec2 | second vector |
vec2_len | length of second vector |
Implements CDotFeatures.
Definition at line 143 of file PolyFeatures.cpp.
float64_t dot | ( | int32_t | vec_idx1, |
CDotFeatures * | df, | ||
int32_t | vec_idx2 | ||
) | [virtual] |
compute dot product between vector1 and vector2, appointed by their indices
vec_idx1 | index of first vector |
df | DotFeatures (of same kind) to compute dot product with |
vec_idx2 | index of second vector |
Implements CDotFeatures.
Definition at line 107 of file PolyFeatures.cpp.
duplicate feature object
Implements CFeatures.
Definition at line 376 of file PolyFeatures.cpp.
void enumerate_multi_index | ( | const int32_t | feat_idx, |
uint16_t ** | index, | ||
uint16_t * | exponents, | ||
const int32_t | degree | ||
) | [protected] |
recursive function enumerating all multi-indices that sum up to the degree of the polynomial kernel
Definition at line 236 of file PolyFeatures.cpp.
implementation of the ln(x!) function
Definition at line 361 of file PolyFeatures.cpp.
void free_feature_iterator | ( | void * | iterator | ) | [virtual] |
clean up iterator call this function with the iterator returned by get_first_feature
iterator | as returned by get_first_feature |
Implements CDotFeatures.
Definition at line 100 of file PolyFeatures.cpp.
efficient implementation of the ln(gamma(x)) function
Definition at line 345 of file PolyFeatures.cpp.
int32_t get_dim_feature_space | ( | ) | const [virtual] |
get dimensions of feature space
Implements CDotFeatures.
Definition at line 54 of file PolyFeatures.cpp.
EFeatureClass get_feature_class | ( | ) | [virtual] |
get feature class
Implements CFeatures.
Definition at line 69 of file PolyFeatures.cpp.
void * get_feature_iterator | ( | int32_t | vector_index | ) | [virtual] |
iterate over the non-zero features
call get_feature_iterator first, followed by get_next_feature and free_feature_iterator to cleanup
vector_index | the index of the vector over whose components to iterate over |
Implements CDotFeatures.
Definition at line 88 of file PolyFeatures.cpp.
EFeatureType get_feature_type | ( | ) | [virtual] |
get feature type
Implements CFeatures.
Definition at line 64 of file PolyFeatures.cpp.
virtual const char* get_name | ( | ) | const [virtual] |
bool get_next_feature | ( | int32_t & | index, |
float64_t & | value, | ||
void * | iterator | ||
) | [virtual] |
iterate over the non-zero features
call this function with the iterator returned by get_first_feature and call free_feature_iterator to cleanup
index | is returned by reference (-1 when not available) |
value | is returned by reference |
iterator | as returned by get_first_feature |
Implements CDotFeatures.
Definition at line 94 of file PolyFeatures.cpp.
int32_t get_nnz_features_for_vector | ( | int32_t | num | ) | [virtual] |
get number of non-zero features in vector
num | index of vector |
Implements CDotFeatures.
Definition at line 59 of file PolyFeatures.cpp.
int32_t get_num_vectors | ( | ) | const [virtual] |
get number of vectors
Implements CFeatures.
Definition at line 74 of file PolyFeatures.cpp.
int32_t get_size | ( | ) | [virtual] |
int32_t multinomialcoef | ( | int32_t * | exps, |
int32_t | len | ||
) | [protected] |
calculate the multinomial coefficient
Definition at line 331 of file PolyFeatures.cpp.
void store_multi_index | ( | ) | [protected] |
caller function for the recursive function enumerate_multi_index
Definition at line 220 of file PolyFeatures.cpp.
void store_multinomial_coefficients | ( | ) | [protected] |
function calculating the multinomial coefficients for all multi indices
Definition at line 264 of file PolyFeatures.cpp.
void store_normalization_values | ( | ) | [protected] |
store the norm of each training example
Definition at line 201 of file PolyFeatures.cpp.
int32_t m_degree [protected] |
degree of the polynomial kernel
Definition at line 223 of file PolyFeatures.h.
CSimpleFeatures<float64_t>* m_feat [protected] |
features in original space
Definition at line 221 of file PolyFeatures.h.
int32_t m_input_dimensions [protected] |
dimensions of the input space
Definition at line 227 of file PolyFeatures.h.
uint16_t* m_multi_index [protected] |
flattened matrix of all multi indices that sum do the degree of the polynomial kernel
Definition at line 232 of file PolyFeatures.h.
float64_t* m_multinomial_coefficients [protected] |
multinomial coefficients for all multi-indices
Definition at line 234 of file PolyFeatures.h.
float32_t* m_normalization_values [protected] |
store norm of each training example
Definition at line 236 of file PolyFeatures.h.
bool m_normalize [protected] |
normalize
Definition at line 225 of file PolyFeatures.h.
int32_t m_output_dimensions [protected] |
dimensions of the feature space of the polynomial kernel
Definition at line 229 of file PolyFeatures.h.