Public Member Functions | Protected Member Functions | Protected Attributes
clsfy_smo_base Class Reference

A base class for sequential minimal optimisation. More...

#include <clsfy_smo_base.h>

Inheritance diagram for clsfy_smo_base:
Inheritance graph
[legend]

List of all members.

Public Member Functions

const vnl_vector< double > & lagrange_mults () const
 Get the optimised parameters.
void set_lagrange_mults (const vnl_vector< double > &lagrange_mults)
 Set the initial values of the parameters to be optimised.
double bias ()
 Bias term in function evaluation.
virtual void reseed (unsigned long seed)
 Reseeds the internal random number generator.
const double & tolerance () const
 amount by which a sample can violate the KKT conditions.
void set_tolerance (double tolerance)
 Set the amount by which a sample can violate the KKT conditions.
double eps () const
 tolerance on several equalities.
void set_eps (double eps)
 Set the tolerance on several equalities.
 clsfy_smo_base ()
virtual ~clsfy_smo_base ()
virtual double error_rate ()
virtual int calc ()=0
 Run the optimisation.
double error ()
 error rate on the training data.

Protected Member Functions

virtual int take_step (int i1, int i2, double E1)=0
 Attempt to jointly optimise Lagrange multipliers i1, and i2.
virtual int examine_example (int i1)=0
 Attempt to optimise sample i1.
const vnl_vector< double > & data_point (unsigned long l)
 Access the data points.
virtual double kernel (int i1, int i2)=0
 Calculate the kernel for data items i1 and i2;.
virtual double learned_func (int k)
 Calculate the classifier function learnt so far for data item k.

Protected Attributes

double error_
 Error rate on the training data.
mbl_data_wrapper< vnl_vector
< double > > * 
data_
 An iterator on the data;.
vnl_vector< double > alph_
 The parameters to be optimised.
double tolerance_
 Amount by which a sample can violate the KKT conditions.
double eps_
 Tolerance on several equalities.
double b_
 Bias.
vcl_vector< double > error_cache_
 Cache KKT error values for unbound multipliers.
vcl_vector< int > target_
 Target values y_i.
vcl_vector< double > precomputed_self_dot_product_
 The norm of each training vector is useful to know quickly.
vnl_random rng_

Detailed Description

A base class for sequential minimal optimisation.

This finds the optimal point on a quadratic function constrained by inequality bounds on each parameter, and a single equality constraint. The is the class of problems associated with Support Vector Machines

Definition at line 24 of file clsfy_smo_base.h.


Constructor & Destructor Documentation

clsfy_smo_base::clsfy_smo_base ( )

Definition at line 127 of file clsfy_smo_base.cxx.

clsfy_smo_base::~clsfy_smo_base ( ) [virtual]

Definition at line 134 of file clsfy_smo_base.cxx.


Member Function Documentation

double clsfy_smo_base::bias ( )

Bias term in function evaluation.

For SVMs this would be the value to be subtracted from sum of kernel functions to get 0 as class boundary.

Definition at line 68 of file clsfy_smo_base.cxx.

virtual int clsfy_smo_base::calc ( ) [pure virtual]

Run the optimisation.

Implemented in clsfy_smo_1_rbf, and clsfy_smo_1_lin.

const vnl_vector< double > & clsfy_smo_base::data_point ( unsigned long  l) [protected]

Access the data points.

Definition at line 29 of file clsfy_smo_base.cxx.

double clsfy_smo_base::eps ( ) const

tolerance on several equalities.

Tolerance on several equalities.

Including testing if a Lagrange multiplier is at one of the bounds.

Definition at line 109 of file clsfy_smo_base.cxx.

double clsfy_smo_base::error ( )

error rate on the training data.

Definition at line 21 of file clsfy_smo_base.cxx.

double clsfy_smo_base::error_rate ( ) [virtual]

Definition at line 141 of file clsfy_smo_base.cxx.

virtual int clsfy_smo_base::examine_example ( int  i1) [protected, pure virtual]

Attempt to optimise sample i1.

This attempts to find another value i2, in order to jointly optimise both.

Implemented in clsfy_smo_1_lin.

virtual double clsfy_smo_base::kernel ( int  i1,
int  i2 
) [protected, pure virtual]

Calculate the kernel for data items i1 and i2;.

Implemented in clsfy_smo_1_rbf, and clsfy_smo_1_lin.

const vnl_vector< double > & clsfy_smo_base::lagrange_mults ( ) const

Get the optimised parameters.

Definition at line 51 of file clsfy_smo_base.cxx.

double clsfy_smo_base::learned_func ( int  k) [protected, virtual]

Calculate the classifier function learnt so far for data item k.

Definition at line 37 of file clsfy_smo_base.cxx.

void clsfy_smo_base::reseed ( unsigned long  seed) [virtual]

Reseeds the internal random number generator.

To achieve quasi-random initialisation use;

 #include <vcl_ctime.h>
 ..
 sampler.reseed(vcl_time(0));

Definition at line 82 of file clsfy_smo_base.cxx.

void clsfy_smo_base::set_eps ( double  eps)

Set the tolerance on several equalities.

Including testing if a Lagrange multiplier is at one of the bounds. Default value is 0.001

Including testing if a Lagrange multiplier is at one of the bounds. Default value is 0.001;

Definition at line 119 of file clsfy_smo_base.cxx.

void clsfy_smo_base::set_lagrange_mults ( const vnl_vector< double > &  lagrange_mults)

Set the initial values of the parameters to be optimised.

The caller is responsible for ensuring that the initial values fulfill the constraints;

Definition at line 61 of file clsfy_smo_base.cxx.

void clsfy_smo_base::set_tolerance ( double  tolerance)

Set the amount by which a sample can violate the KKT conditions.

Default value is 0.001

Definition at line 99 of file clsfy_smo_base.cxx.

virtual int clsfy_smo_base::take_step ( int  i1,
int  i2,
double  E1 
) [protected, pure virtual]

Attempt to jointly optimise Lagrange multipliers i1, and i2.

Parameters:
i1first Lagrange multiplier.
i2second Lagrange multiplier.
E1The amount by which i1 violates KKT conditions.

Implemented in clsfy_smo_1_lin.

const double & clsfy_smo_base::tolerance ( ) const

amount by which a sample can violate the KKT conditions.

Amount by which a sample can violate the KKT conditions.

Definition at line 90 of file clsfy_smo_base.cxx.


Member Data Documentation

vnl_vector<double> clsfy_smo_base::alph_ [protected]

The parameters to be optimised.

Definition at line 35 of file clsfy_smo_base.h.

double clsfy_smo_base::b_ [protected]

Bias.

Invariant:
a_i unbound and optimal => KKT_i holds

Definition at line 46 of file clsfy_smo_base.h.

An iterator on the data;.

Definition at line 32 of file clsfy_smo_base.h.

double clsfy_smo_base::eps_ [protected]

Tolerance on several equalities.

Including testing if a Lagrange multiplier is at one of the bounds.

Definition at line 42 of file clsfy_smo_base.h.

double clsfy_smo_base::error_ [protected]

Error rate on the training data.

Definition at line 29 of file clsfy_smo_base.h.

vcl_vector<double> clsfy_smo_base::error_cache_ [protected]

Cache KKT error values for unbound multipliers.

Invariant:
a_i unbound => E_i = f(x_i) - y1

Definition at line 50 of file clsfy_smo_base.h.

vcl_vector<double> clsfy_smo_base::precomputed_self_dot_product_ [protected]

The norm of each training vector is useful to know quickly.

Definition at line 56 of file clsfy_smo_base.h.

Definition at line 58 of file clsfy_smo_base.h.

vcl_vector<int> clsfy_smo_base::target_ [protected]

Target values y_i.

Definition at line 53 of file clsfy_smo_base.h.

double clsfy_smo_base::tolerance_ [protected]

Amount by which a sample can violate the KKT conditions.

Definition at line 38 of file clsfy_smo_base.h.


The documentation for this class was generated from the following files: