Normalize the kernel by adding a constant term to its diagonal. This aids kernels to become positive definite (even though they are not - often caused by numerical problems).
Formally,
where E is a matrix with ones on the diagonal and R is the scalar ridge term. The ridge term R is computed as .
Typically,
In case c <= 0, c is compute as the mean of the kernel diagonal
Definition at line 43 of file RidgeKernelNormalizer.h.
Public Member Functions | |
CRidgeKernelNormalizer (float64_t r=1e-10, float64_t c=0.0) | |
virtual | ~CRidgeKernelNormalizer () |
virtual bool | init (CKernel *k) |
virtual float64_t | normalize (float64_t value, int32_t idx_lhs, int32_t idx_rhs) |
virtual float64_t | normalize_lhs (float64_t value, int32_t idx_lhs) |
virtual float64_t | normalize_rhs (float64_t value, int32_t idx_rhs) |
virtual const char * | get_name () const |
Protected Attributes | |
float64_t | ridge |
the constant ridge to be added to the kernel diagonal | |
float64_t | scale |
scaling parameter (avg of diagonal) |
CRidgeKernelNormalizer | ( | float64_t | r = 1e-10 , |
|
float64_t | c = 0.0 | |||
) |
constructor
r | ridge parameter | |
c | scale parameter, if <= 0 scaling will be computed from the avg of the kernel diagonal elements |
the scalar r*c will be added to the kernel diagonal, typical use cases:
Definition at line 56 of file RidgeKernelNormalizer.h.
virtual ~CRidgeKernelNormalizer | ( | ) | [virtual] |
default destructor
Definition at line 68 of file RidgeKernelNormalizer.h.
virtual const char* get_name | ( | void | ) | const [virtual] |
virtual bool init | ( | CKernel * | k | ) | [virtual] |
initialization of the normalizer (if needed)
k | kernel |
Implements CKernelNormalizer.
Definition at line 74 of file RidgeKernelNormalizer.h.
normalize the kernel value
value | kernel value | |
idx_lhs | index of left hand side vector | |
idx_rhs | index of right hand side vector |
Implements CKernelNormalizer.
Definition at line 105 of file RidgeKernelNormalizer.h.
normalize only the left hand side vector
value | value of a component of the left hand side feature vector | |
idx_lhs | index of left hand side vector |
Implements CKernelNormalizer.
Definition at line 118 of file RidgeKernelNormalizer.h.
normalize only the right hand side vector
value | value of a component of the right hand side feature vector | |
idx_rhs | index of right hand side vector |
Implements CKernelNormalizer.
Definition at line 128 of file RidgeKernelNormalizer.h.
the constant ridge to be added to the kernel diagonal
Definition at line 139 of file RidgeKernelNormalizer.h.
scaling parameter (avg of diagonal)
Definition at line 141 of file RidgeKernelNormalizer.h.