implement DotFeatures for the polynomial kernel
see DotFeatures for further discription
Definition at line 25 of file PolyFeatures.h.
Classes | |
struct | poly_feature_iterator |
Public Member Functions | |
CPolyFeatures (void) | |
CPolyFeatures (CSimpleFeatures< float64_t > *feat, int32_t degree, bool normalize) | |
virtual | ~CPolyFeatures () |
CPolyFeatures (const CPolyFeatures &orig) | |
virtual int32_t | get_dim_feature_space () |
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 () |
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 | ( | void | ) |
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 37 of file PolyFeatures.cpp.
CPolyFeatures | ( | const CPolyFeatures & | orig | ) |
copy constructor
not implemented!
orig | original PolyFeature |
Definition at line 47 of file PolyFeatures.h.
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 109 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 309 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 230 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 255 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 81 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 45 of file PolyFeatures.cpp.
CFeatures * duplicate | ( | ) | const [virtual] |
duplicate feature object
Implements CFeatures.
Definition at line 314 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 174 of file PolyFeatures.cpp.
float64_t factln | ( | int32_t | n | ) | [protected] |
implementation of the ln(x!) function
Definition at line 299 of file PolyFeatures.cpp.
virtual 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 203 of file PolyFeatures.h.
efficient implementation of the ln(gamma(x)) function
Definition at line 283 of file PolyFeatures.cpp.
virtual int32_t get_dim_feature_space | ( | ) | [virtual] |
get dimensions of feature space
Implements CDotFeatures.
Definition at line 55 of file PolyFeatures.h.
virtual EFeatureClass get_feature_class | ( | ) | [virtual] |
get feature class
Implements CFeatures.
Definition at line 83 of file PolyFeatures.h.
virtual 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 176 of file PolyFeatures.h.
virtual EFeatureType get_feature_type | ( | ) | [virtual] |
get feature type
Implements CFeatures.
Definition at line 74 of file PolyFeatures.h.
virtual const char* get_name | ( | void | ) | const [virtual] |
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 192 of file PolyFeatures.h.
virtual 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 65 of file PolyFeatures.h.
virtual int32_t get_num_vectors | ( | ) | [virtual] |
get number of vectors
Implements CFeatures.
Definition at line 92 of file PolyFeatures.h.
virtual int32_t get_size | ( | ) | [virtual] |
int32_t multinomialcoef | ( | int32_t * | exps, | |
int32_t | len | |||
) | [protected] |
calculate the multinomial coefficient
Definition at line 269 of file PolyFeatures.cpp.
void store_multi_index | ( | ) | [protected] |
caller function for the recursive function enumerate_multi_index
Definition at line 158 of file PolyFeatures.cpp.
void store_multinomial_coefficients | ( | ) | [protected] |
function calculating the multinomial coefficients for all multi indices
Definition at line 202 of file PolyFeatures.cpp.
void store_normalization_values | ( | ) | [protected] |
store the norm of each training example
Definition at line 139 of file PolyFeatures.cpp.
int32_t m_degree [protected] |
degree of the polynomial kernel
Definition at line 254 of file PolyFeatures.h.
CSimpleFeatures<float64_t>* m_feat [protected] |
features in original space
Definition at line 252 of file PolyFeatures.h.
int32_t m_input_dimensions [protected] |
dimensions of the input space
Definition at line 258 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 263 of file PolyFeatures.h.
float64_t* m_multinomial_coefficients [protected] |
multinomial coefficients for all multi-indices
Definition at line 265 of file PolyFeatures.h.
float32_t* m_normalization_values [protected] |
store norm of each training example
Definition at line 267 of file PolyFeatures.h.
bool m_normalize [protected] |
normalize
Definition at line 256 of file PolyFeatures.h.
int32_t m_output_dimensions [protected] |
dimensions of the feature space of the polynomial kernel
Definition at line 260 of file PolyFeatures.h.