Feature Selection ToolboxFST3 Library / Documentation

FST::Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR > Class Template Reference

Wraps external Support Vector Machine implementation (in LibSVM) to serve as FST3 classifier. More...

#include <classifier_svm.hpp>

Inheritance diagram for FST::Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >:
Collaboration diagram for FST::Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >:

List of all members.

Classes

class  ParameterSet
 Nested class to hold parameter candidates in the course of optimize_parameters() run. More...

Public Types

typedef boost::shared_ptr
< DATAACCESSOR > 
PDataAccessor
typedef boost::shared_ptr
< SUBSET > const 
PSubset
typedef DATAACCESSOR::PPattern PPattern

Public Member Functions

void initialize (const PDataAccessor da)
void set_parameter_C (double newC)
void set_parameter_gamma (double newgamma)
void set_parameter_coef0 (double newcoef0)
void set_kernel_type (int kernel_type)
double get_parameter_C () const
double get_parameter_gamma () const
double get_parameter_coef0 () const
int get_kernel_type () const
virtual bool classify (DIMTYPE &cls, const PPattern &pattern)
 classifies pattern, returns the respective class index
virtual bool train (const PDataAccessor da, const PSubset sub)
 learns from designated training part of data
virtual bool test (RETURNTYPE &result, const PDataAccessor da)
 estimates accuracy using designated test data
bool optimize_parameters (const PDataAccessor da, const PSubset sub, const int max_points=100, const int max_throws=100, const double lgC_min=-5, const double lgC_max=9, const double lggamma_min=-15, const double lggamma_max=3, const double lgcoef0_min=-2, const double lgcoef0_max=5, std::ostream &os=std::cout)
Classifier_LIBSVMclone () const
Classifier_LIBSVMsharing_clone () const
Classifier_LIBSVMstateless_clone () const
virtual std::ostream & print (std::ostream &os) const

Protected Types

typedef list< ParameterSetPARAMSETLIST

Protected Member Functions

void allocate ()
void cleanup ()

Protected Attributes

IDXTYPE _all_patterns
DIMTYPE _classes
DIMTYPE _features
struct svm_problem problem
struct svm_parameter parameters
struct svm_model * model
struct svm_node * onepattern
bool svm_class_weighing
PARAMSETLIST::iterator iter

Private Member Functions

 Classifier_LIBSVM (const Classifier_LIBSVM &csvm, int)

Private Attributes

boost::scoped_array< DIMTYPE > _index
DIMTYPE _subfeatures

Detailed Description

template<class RETURNTYPE, typename IDXTYPE, typename DIMTYPE, class SUBSET, class DATAACCESSOR>
class FST::Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >

Wraps external Support Vector Machine implementation (in LibSVM) to serve as FST3 classifier.

Note:
clone() implementation assumes LibSVM's svm_model and svm_node is equivalent to that in LibSVM version 300
Warning:
LIBSVM especially with LINEAR kernel seems to have occassional problems with certain C values on certain datasets and may freeze. (Other kernels are more stable but not completely immune to this problem.) This is a problem outside FST3.
Examples:

demo12t.cpp, demo23.cpp, demo25t.cpp, demo32t.cpp, demo35t.cpp, demo53.cpp, and demo62.cpp.


Member Function Documentation

template<class RETURNTYPE , typename IDXTYPE , typename DIMTYPE , class SUBSET , class DATAACCESSOR >
bool FST::Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >::optimize_parameters ( const PDataAccessor  da,
const PSubset  sub,
const int  max_points = 100,
const int  max_throws = 100,
const double  lgC_min = -5,
const double  lgC_max = 9,
const double  lggamma_min = -15,
const double  lggamma_max = 3,
const double  lgcoef0_min = -2,
const double  lgcoef0_max = 5,
std::ostream &  os = std::cout 
) [inline]

Warning:
LIBSVM LINEAR kernel seems to have problems with certain C values on certain datasets. If the optimization process seemingly freezes, try narrower lgC_min and lgC_max. Especially the lower bound seems important to be increased.

References FST::Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >::test(), and FST::Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >::train().

template<class RETURNTYPE, typename IDXTYPE, typename DIMTYPE, class SUBSET, class DATAACCESSOR>
Classifier_LIBSVM* FST::Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >::clone (  )  const [inline, virtual]
template<class RETURNTYPE, typename IDXTYPE, typename DIMTYPE, class SUBSET, class DATAACCESSOR>
Classifier_LIBSVM* FST::Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >::sharing_clone (  )  const [inline, virtual]
Note:
dirty workaround to enable easy usage in sequential_step ...

Implements FST::Clonable.

template<class RETURNTYPE , typename IDXTYPE , typename DIMTYPE , class SUBSET , class DATAACCESSOR >
Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR > * FST::Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >::stateless_clone (  )  const [inline, virtual]

create clone of the current object, ignoring internal temporary structures to save speed. Does not replicate exact object state. The clone must be used carefully in a way that ensures internal structure re-initialization Use example: Data_Splitter cloning or Classifier_SVM cloning due to inability to clone external structures defined in LibSVM

Implements FST::Clonable.

References FST::Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >::clone().

Referenced by FST::Classifier_LIBSVM< RETURNTYPE, IDXTYPE, DIMTYPE, SUBSET, DATAACCESSOR >::clone().


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

Generated on Thu Mar 31 11:38:19 2011 for FST3Library by  doxygen 1.6.1