shark::McSvmCSTrainer< InputType, CacheType > Class Template Reference

Training of the multi-category SVM by Crammer and Singer (CS). More...

#include <shark/Algorithms/Trainers/McSvmCSTrainer.h>

+ Inheritance diagram for shark::McSvmCSTrainer< InputType, CacheType >:

Public Types

typedef CacheType QpFloatType
 
typedef AbstractModel< InputType, RealVector > ModelType
 
typedef AbstractKernelFunction< InputTypeKernelType
 
- Public Types inherited from shark::AbstractSvmTrainer< InputType, unsigned int >
typedef AbstractKernelFunction< InputTypeKernelType
 
- Public Types inherited from shark::AbstractTrainer< Model, LabelTypeT >
typedef Model ModelType
 
typedef ModelType::InputType InputType
 
typedef LabelTypeT LabelType
 
typedef LabeledData< InputType, LabelTypeDatasetType
 

Public Member Functions

 McSvmCSTrainer (KernelType *kernel, double C, bool offset, bool unconstrained=false)
 
std::string name () const
 From INameable: return the class name. More...
 
void train (KernelClassifier< InputType > &svm, const LabeledData< InputType, unsigned int > &dataset)
 
- Public Member Functions inherited from shark::AbstractSvmTrainer< InputType, unsigned int >
 AbstractSvmTrainer (KernelType *kernel, double C, bool offset, bool unconstrained=false)
 
 AbstractSvmTrainer (KernelType *kernel, double negativeC, double positiveC, bool offset, bool unconstrained=false)
 
double C () const
 Return the value of the regularization parameter C. More...
 
RealVector const & regularizationParameters () const
 
RealVector & regularizationParameters ()
 
KernelTypekernel ()
 
const KernelTypekernel () const
 
void setKernel (KernelType *kernel)
 
bool isUnconstrained () const
 
bool trainOffset () const
 
double CacheSize () const
 
void setCacheSize (std::size_t size)
 
RealVector parameterVector () const
 get the hyper-parameter vector More...
 
void setParameterVector (RealVector const &newParameters)
 set the vector of hyper-parameters More...
 
size_t numberOfParameters () const
 return the number of hyper-parameters More...
 
- Public Member Functions inherited from shark::AbstractTrainer< Model, LabelTypeT >
virtual void train (ModelType &model, DatasetType const &dataset)=0
 Core of the Trainer interface. More...
 
- Public Member Functions inherited from shark::INameable
virtual ~INameable ()
 
- Public Member Functions inherited from shark::ISerializable
virtual ~ISerializable ()
 Virtual d'tor. More...
 
virtual void read (InArchive &archive)
 Read the component from the supplied archive. More...
 
virtual void write (OutArchive &archive) const
 Write the component to the supplied archive. More...
 
void load (InArchive &archive, unsigned int version)
 Versioned loading of components, calls read(...). More...
 
void save (OutArchive &archive, unsigned int version) const
 Versioned storing of components, calls write(...). More...
 
 BOOST_SERIALIZATION_SPLIT_MEMBER ()
 
- Public Member Functions inherited from shark::QpConfig
 QpConfig (bool precomputedFlag=false, bool sparsifyFlag=true)
 Constructor. More...
 
QpStoppingConditionstoppingCondition ()
 Read/write access to the stopping condition. More...
 
QpStoppingCondition const & stoppingCondition () const
 Read access to the stopping condition. More...
 
QpSolutionPropertiessolutionProperties ()
 Access to the solution properties. More...
 
bool & precomputeKernel ()
 Flag for using a precomputed kernel matrix. More...
 
bool const & precomputeKernel () const
 Flag for using a precomputed kernel matrix. More...
 
bool & sparsify ()
 Flag for sparsifying the model after training. More...
 
bool const & sparsify () const
 Flag for sparsifying the model after training. More...
 
bool & shrinking ()
 Flag for shrinking in the decomposition solver. More...
 
bool const & shrinking () const
 Flag for shrinking in the decomposition solver. More...
 
bool & s2do ()
 Flag for S2DO (instead of SMO) More...
 
bool const & s2do () const
 Flag for S2DO (instead of SMO) More...
 
unsigned int & verbosity ()
 Verbosity level of the solver. More...
 
unsigned int const & verbosity () const
 Verbosity level of the solver. More...
 
unsigned long long const & accessCount () const
 Number of kernel accesses. More...
 
void setMinAccuracy (double a)
 
void setMaxIterations (unsigned long long i)
 
void setTargetValue (double v)
 
void setMaxSeconds (double s)
 
- Public Member Functions inherited from shark::IParameterizable
virtual ~IParameterizable ()
 

Additional Inherited Members

- Protected Attributes inherited from shark::AbstractSvmTrainer< InputType, unsigned int >
KernelTypem_kernel
 
RealVector m_regularizers
 Vector of regularization parameters. More...
 
bool m_trainOffset
 
bool m_unconstrained
 Is log(C) stored internally as a parameter instead of C? If yes, then we get rid of the constraint C > 0 on the level of the parameter interface. More...
 
std::size_t m_cacheSize
 Number of values in the kernel cache. The size of the cache in bytes is the size of one entry (4 for float, 8 for double) times this number. More...
 
- Protected Attributes inherited from shark::QpConfig
QpStoppingCondition m_stoppingcondition
 conditions for when to stop the QP solver More...
 
QpSolutionProperties m_solutionproperties
 properties of the approximate solution found by the solver More...
 
bool m_precomputedKernelMatrix
 should the solver use a precomputed kernel matrix? More...
 
bool m_sparsify
 should the trainer sparsify the model after training? More...
 
bool m_shrinking
 should shrinking be used? More...
 
bool m_s2do
 should S2DO be used instead of SMO? More...
 
unsigned int m_verbosity
 verbosity level (currently unused) More...
 
unsigned long long m_accessCount
 kernel access count More...
 

Detailed Description

template<class InputType, class CacheType = float>
class shark::McSvmCSTrainer< InputType, CacheType >

Training of the multi-category SVM by Crammer and Singer (CS).

This is a special support vector machine variant for classification of more than two classes. Given are data tuples \( (x_i, y_i) \) with x-component denoting input and y-component denoting the label 1, ..., d (see the tutorial on label conventions; the implementation uses values 0 to d-1), a kernel function k(x, x') and a regularization constant C > 0. Let H denote the kernel induced reproducing kernel Hilbert space of k, and let \( \phi \) denote the corresponding feature map. Then the SVM classifier is the function

\[ h(x) = \arg \max (f_c(x)) \]

\[ f_c(x) = \langle w_c, \phi(x) \rangle + b_c \]

\[ f = (f_1, \dots, f_d) \]

with class-wise coefficients w_c and b_c given by the (primal) optimization problem

\[ \min \frac{1}{2} \sum_c \|w_c\|^2 + C \sum_i L(y_i, f(x_i)), \]

The special property of the so-called CS-machine is its loss function, which measures the maximal relative margin violation. Let \( h(m) = \max\{0, 1-m\} \) denote the hinge loss as a function of the margin m, then the CS loss is given by

\[ L(y, f(x)) = \max_{c} h(f_y(x) - f_c(x)) \]

For details refer to the paper:

On the algorithmic implementation of multiclass kernel-based vector machines. K. Crammer and Y. Singer, Journal of Machine Learning Research, 2002.

Definition at line 92 of file McSvmCSTrainer.h.

Member Typedef Documentation

§ KernelType

template<class InputType, class CacheType = float>
typedef AbstractKernelFunction<InputType> shark::McSvmCSTrainer< InputType, CacheType >::KernelType

Definition at line 98 of file McSvmCSTrainer.h.

§ ModelType

template<class InputType, class CacheType = float>
typedef AbstractModel<InputType, RealVector> shark::McSvmCSTrainer< InputType, CacheType >::ModelType

Definition at line 97 of file McSvmCSTrainer.h.

§ QpFloatType

template<class InputType, class CacheType = float>
typedef CacheType shark::McSvmCSTrainer< InputType, CacheType >::QpFloatType

Definition at line 95 of file McSvmCSTrainer.h.

Constructor & Destructor Documentation

§ McSvmCSTrainer()

template<class InputType, class CacheType = float>
shark::McSvmCSTrainer< InputType, CacheType >::McSvmCSTrainer ( KernelType kernel,
double  C,
bool  offset,
bool  unconstrained = false 
)
inline

Constructor

Parameters
kernelkernel function to use for training and prediction
Cregularization parameter - always the 'true' value of C, even when unconstrained is set
offsetwhether to train offset/bias parameter
unconstrainedwhen a C-value is given via setParameter, should it be piped through the exp-function before using it in the solver?

Definition at line 106 of file McSvmCSTrainer.h.

Member Function Documentation

§ name()

template<class InputType, class CacheType = float>
std::string shark::McSvmCSTrainer< InputType, CacheType >::name ( ) const
inlinevirtual

From INameable: return the class name.

Reimplemented from shark::INameable.

Definition at line 111 of file McSvmCSTrainer.h.

§ train()


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