Support Vector Machines (Support Vector Machines (SVM)) More...


Go to the source code of this file.
Classes | |
| struct | VlSvmStatistics_ |
| SVM statistics This structure contains statistics characterising the state of the SVM solver, such as the current value of the objective function. More... | |
Typedefs | |
| typedef struct VlSvm_ | VlSvm |
| SVM solver. This object implements VLFeat SVM solvers (see svm.h). | |
| typedef struct VlSvmStatistics_ | VlSvmStatistics |
| SVM statistics This structure contains statistics characterising the state of the SVM solver, such as the current value of the objective function. | |
Enumerations | |
| enum | VlSvmLossType { VlSvmLossHinge = 0, VlSvmLossHinge2 = 1, VlSvmLossL1, VlSvmLossL2, VlSvmLossLogistic } |
| Type of SVM loss. More... | |
| enum | VlSvmSolverStatus { VlSvmStatusTraining = 1, VlSvmStatusConverged, VlSvmStatusMaxNumIterationsReached } |
| Solver status. More... | |
| enum | VlSvmSolverType { VlSvmSolverNone = 0, VlSvmSolverSgd = 1, VlSvmSolverSdca } |
| Type of SVM solver. More... | |
Functions | |
Create and destroy | |
| VL_EXPORT VlSvm * | vl_svm_new (VlSvmSolverType type, double const *data, vl_size dimension, vl_size numData, double const *labels, double lambda) |
| Create a new object with plain data. | |
| VL_EXPORT VlSvm * | vl_svm_new_with_dataset (VlSvmSolverType type, VlSvmDataset *dataset, double const *labels, double lambda) |
| Create a new object with a dataset. | |
| VL_EXPORT VlSvm * | vl_svm_new_with_abstract_data (VlSvmSolverType type, void *data, vl_size dimension, vl_size numData, double const *labels, double lambda) |
| Create a new object with abstract data. | |
| VL_EXPORT void | vl_svm_delete (VlSvm *self) |
| Delete object. | |
Retrieve parameters and data | |
| VL_EXPORT VlSvmStatistics const * | vl_svm_get_statistics (VlSvm const *self) |
| Get the solver statistics. | |
| VL_EXPORT double const * | vl_svm_get_model (VlSvm const *self) |
| Get the SVM model. | |
| VL_EXPORT double | vl_svm_get_bias (VlSvm const *self) |
| Get the value of the bias. | |
| VL_EXPORT vl_size | vl_svm_get_dimension (VlSvm *self) |
| Get the model dimenison. | |
| VL_EXPORT vl_size | vl_svm_get_num_data (VlSvm *self) |
| Get the number of data samples. | |
| VL_EXPORT double | vl_svm_get_epsilon (VlSvm const *self) |
| Get the convergence threshold. | |
| VL_EXPORT double | vl_svm_get_bias_learning_rate (VlSvm const *self) |
| Get the bias leraning rate. | |
| VL_EXPORT vl_size | vl_svm_get_max_num_iterations (VlSvm const *self) |
| Get the maximum number of iterations. | |
| VL_EXPORT vl_size | vl_svm_get_diagnostic_frequency (VlSvm const *self) |
| Get the diagnostic frequency. | |
| VL_EXPORT VlSvmSolverType | vl_svm_get_solver (VlSvm const *self) |
| Get the SVM solver type. | |
| VL_EXPORT double | vl_svm_get_bias_multiplier (VlSvm const *self) |
| Get the bias multiplier. | |
| VL_EXPORT double | vl_svm_get_lambda (VlSvm const *self) |
| Get the regularizer parameter lambda. | |
| VL_EXPORT vl_size | vl_svm_get_iteration_number (VlSvm const *self) |
| Get the current iteration number. | |
| VL_EXPORT double const * | vl_svm_get_scores (VlSvm const *self) |
| Get the scores of the data points. | |
| VL_EXPORT double const * | vl_svm_get_weights (VlSvm const *self) |
| Get the data weights. | |
Set parameters | |
| VL_EXPORT void | vl_svm_set_epsilon (VlSvm *self, double epsilon) |
| Set the convergence threshold. | |
| VL_EXPORT void | vl_svm_set_bias_learning_rate (VlSvm *self, double rate) |
| Set the bias learning rate. | |
| VL_EXPORT void | vl_svm_set_max_num_iterations (VlSvm *self, vl_size maxNumIterations) |
| Set the maximum number of iterations. | |
| VL_EXPORT void | vl_svm_set_diagnostic_frequency (VlSvm *self, vl_size f) |
| Set the diagnostic frequency. | |
| VL_EXPORT void | vl_svm_set_bias_multiplier (VlSvm *self, double b) |
| Set the bias multiplier. | |
| VL_EXPORT void | vl_svm_set_model (VlSvm *self, double const *model) |
| Set the SVM model. | |
| VL_EXPORT void | vl_svm_set_bias (VlSvm *self, double b) |
| Set the SVM bias. | |
| VL_EXPORT void | vl_svm_set_iteration_number (VlSvm *self, vl_uindex n) |
| Set the current iteratio number. | |
| VL_EXPORT void | vl_svm_set_weights (VlSvm *self, double const *weights) |
| Set the data weights. | |
| VL_EXPORT void | vl_svm_set_diagnostic_function (VlSvm *self, VlSvmDiagnosticFunction f, void *data) |
| Set the diagnostic function callback. | |
| VL_EXPORT void | vl_svm_set_loss_function (VlSvm *self, VlSvmLossFunction f) |
| Set the loss function callback. | |
| VL_EXPORT void | vl_svm_set_loss_derivative_function (VlSvm *self, VlSvmLossFunction f) |
| Set the loss derivative function callback. | |
| VL_EXPORT void | vl_svm_set_conjugate_loss_function (VlSvm *self, VlSvmLossFunction f) |
| Set the conjugate loss function callback. | |
| VL_EXPORT void | vl_svm_set_dca_update_function (VlSvm *self, VlSvmDcaUpdateFunction f) |
| Set the DCA update function callback. | |
| VL_EXPORT void | vl_svm_set_data_functions (VlSvm *self, VlSvmInnerProductFunction inner, VlSvmAccumulateFunction acc) |
| Set the data functions. | |
| VL_EXPORT void | vl_svm_set_loss (VlSvm *self, VlSvmLossType loss) |
| Set the loss function to one of the default types. | |
Process data | |
| VL_EXPORT void | vl_svm_train (VlSvm *self) |
| Run the SVM solver. | |
Loss functions | |
| |
| VL_EXPORT double | vl_svm_hinge_loss (double label, double inner) |
| SVM hinge loss. | |
| VL_EXPORT double | vl_svm_hinge_loss_derivative (double label, double inner) |
| SVM hinge loss derivative. | |
| VL_EXPORT double | vl_svm_hinge_conjugate_loss (double label, double u) |
| SVM hinge loss conjugate. | |
| VL_EXPORT double | vl_svm_hinge_dca_update (double alpha, double inner, double norm2, double label) |
| SVM hinge loss DCA update. | |
| VL_EXPORT double | vl_svm_hinge2_loss (double label, double inner) |
| SVM square hinge loss. | |
| VL_EXPORT double | vl_svm_hinge2_loss_derivative (double label, double inner) |
| SVM square hinge loss derivative. | |
| VL_EXPORT double | vl_svm_hinge2_conjugate_loss (double label, double u) |
| SVM square hinge loss conjugate. | |
| VL_EXPORT double | vl_svm_hinge2_dca_update (double alpha, double inner, double norm2, double label) |
| SVM square hinge loss DCA update. | |
| VL_EXPORT double | vl_svm_l1_loss (double label, double inner) |
| SVM l1 loss. | |
| VL_EXPORT double | vl_svm_l1_loss_derivative (double label, double inner) |
| SVM l1 loss derivative. | |
| VL_EXPORT double | vl_svm_l1_conjugate_loss (double label, double u) |
| SVM l1 loss conjugate. | |
| VL_EXPORT double | vl_svm_l1_dca_update (double alpha, double inner, double norm2, double label) |
| SVM l1 loss DCA update. | |
| VL_EXPORT double | vl_svm_l2_loss (double label, double inner) |
| SVM l2 loss. | |
| VL_EXPORT double | vl_svm_l2_loss_derivative (double label, double inner) |
| SVM l2 loss derivative. | |
| VL_EXPORT double | vl_svm_l2_conjugate_loss (double label, double u) |
| SVM l2 loss conjugate. | |
| VL_EXPORT double | vl_svm_l2_dca_update (double alpha, double inner, double norm2, double label) |
| SVM l2 loss DCA update. | |
| VL_EXPORT double | vl_svm_logistic_loss (double label, double inner) |
| SVM l2 loss. | |
| VL_EXPORT double | vl_svm_logistic_loss_derivative (double label, double inner) |
| SVM l2 loss derivative. | |
| VL_EXPORT double | vl_svm_logistic_conjugate_loss (double label, double u) |
| SVM l2 loss conjugate. | |
| VL_EXPORT double | vl_svm_logistic_dca_update (double alpha, double inner, double norm2, double label) |
| SVM l2 loss DCA update. | |
Support Vector Machines (Support Vector Machines (SVM))
Definition in file svm.h.
| typedef struct VlSvmStatistics_ VlSvmStatistics |
SVM statistics This structure contains statistics characterising the state of the SVM solver, such as the current value of the objective function.
Not all fields are used by all solvers.
| enum VlSvmLossType |
Type of SVM loss.
Default SVM loss types. The loss can be set by using vl_svm_set_loss. Note that custom losses can be used too by using vl_svm_set_loss_function, vl_svm_set_loss_derivative_function, etc.
| enum VlSvmSolverStatus |
| enum VlSvmSolverType |
Type of SVM solver.
| VlSvmSolverNone |
No solver (used to evaluate an SVM). |
| VlSvmSolverSgd |
SGD algorithm (Stochastic Gradient Descent). |
| VlSvmSolverSdca |
SDCA algorithm (Stochastic Dual Coordinate Ascent). |
| VL_EXPORT void vl_svm_delete | ( | VlSvm * | self | ) |
| VL_EXPORT double vl_svm_get_bias | ( | VlSvm const * | self | ) |
| VL_EXPORT double vl_svm_get_bias_learning_rate | ( | VlSvm const * | self | ) |
| VL_EXPORT double vl_svm_get_bias_multiplier | ( | VlSvm const * | self | ) |
| VL_EXPORT vl_size vl_svm_get_diagnostic_frequency | ( | VlSvm const * | self | ) |
| VL_EXPORT vl_size vl_svm_get_dimension | ( | VlSvm * | self | ) |
| VL_EXPORT double vl_svm_get_epsilon | ( | VlSvm const * | self | ) |
| VL_EXPORT vl_size vl_svm_get_iteration_number | ( | VlSvm const * | self | ) |
| VL_EXPORT double vl_svm_get_lambda | ( | VlSvm const * | self | ) |
| VL_EXPORT vl_size vl_svm_get_max_num_iterations | ( | VlSvm const * | self | ) |
| VL_EXPORT double const* vl_svm_get_model | ( | VlSvm const * | self | ) |
| VL_EXPORT vl_size vl_svm_get_num_data | ( | VlSvm * | self | ) |
| VL_EXPORT double const* vl_svm_get_scores | ( | VlSvm const * | self | ) |
| VL_EXPORT VlSvmSolverType vl_svm_get_solver | ( | VlSvm const * | self | ) |
| VL_EXPORT VlSvmStatistics const* vl_svm_get_statistics | ( | VlSvm const * | self | ) |
| VL_EXPORT double const* vl_svm_get_weights | ( | VlSvm const * | self | ) |
| VL_EXPORT double vl_svm_hinge2_conjugate_loss | ( | double | u, |
| double | label | ||
| ) |
| VL_EXPORT double vl_svm_hinge2_dca_update | ( | double | alpha, |
| double | inner, | ||
| double | norm2, | ||
| double | label | ||
| ) |
SVM square hinge loss DCA update.
| alpha | current value of the dual variable. |
| inner | inner product $^ $ of the sample with the SVM model. |
| norm2 | normalization factor $\|\|^2/ n$. |
| label | label $y$ of the sample. |
| VL_EXPORT double vl_svm_hinge2_loss | ( | double | inner, |
| double | label | ||
| ) |
SVM square hinge loss.
| inner | inner product between sample and model $^ $. |
| label | sample label $y$. |
The interface is the same for a loss function, its derivative, or the conjugate loss.
| VL_EXPORT double vl_svm_hinge2_loss_derivative | ( | double | inner, |
| double | label | ||
| ) |
SVM square hinge loss derivative.
| inner | inner product between sample and model $^ $. |
| label | sample label $y$. |
The interface is the same for a loss function, its derivative, or the conjugate loss.
| VL_EXPORT double vl_svm_hinge_conjugate_loss | ( | double | u, |
| double | label | ||
| ) |
| VL_EXPORT double vl_svm_hinge_dca_update | ( | double | alpha, |
| double | inner, | ||
| double | norm2, | ||
| double | label | ||
| ) |
SVM hinge loss DCA update.
| alpha | current value of the dual variable. |
| inner | inner product $^ $ of the sample with the SVM model. |
| norm2 | normalization factor $\|\|^2/ n$. |
| label | label $y$ of the sample. |
| VL_EXPORT double vl_svm_hinge_loss | ( | double | inner, |
| double | label | ||
| ) |
SVM hinge loss.
| inner | inner product between sample and model $^ $. |
| label | sample label $y$. |
The interface is the same for a loss function, its derivative, or the conjugate loss.
| VL_EXPORT double vl_svm_hinge_loss_derivative | ( | double | inner, |
| double | label | ||
| ) |
SVM hinge loss derivative.
| inner | inner product between sample and model $^ $. |
| label | sample label $y$. |
The interface is the same for a loss function, its derivative, or the conjugate loss.
| VL_EXPORT double vl_svm_l1_conjugate_loss | ( | double | u, |
| double | label | ||
| ) |
| VL_EXPORT double vl_svm_l1_dca_update | ( | double | alpha, |
| double | inner, | ||
| double | norm2, | ||
| double | label | ||
| ) |
SVM l1 loss DCA update.
| alpha | current value of the dual variable. |
| inner | inner product $^ $ of the sample with the SVM model. |
| norm2 | normalization factor $\|\|^2/ n$. |
| label | label $y$ of the sample. |
| VL_EXPORT double vl_svm_l1_loss | ( | double | inner, |
| double | label | ||
| ) |
SVM l1 loss.
| inner | inner product between sample and model $^ $. |
| label | sample label $y$. |
The interface is the same for a loss function, its derivative, or the conjugate loss.
| VL_EXPORT double vl_svm_l1_loss_derivative | ( | double | inner, |
| double | label | ||
| ) |
SVM l1 loss derivative.
| inner | inner product between sample and model $^ $. |
| label | sample label $y$. |
The interface is the same for a loss function, its derivative, or the conjugate loss.
| VL_EXPORT double vl_svm_l2_conjugate_loss | ( | double | u, |
| double | label | ||
| ) |
| VL_EXPORT double vl_svm_l2_dca_update | ( | double | alpha, |
| double | inner, | ||
| double | norm2, | ||
| double | label | ||
| ) |
SVM l2 loss DCA update.
| alpha | current value of the dual variable. |
| inner | inner product $^ $ of the sample with the SVM model. |
| norm2 | normalization factor $\|\|^2/ n$. |
| label | label $y$ of the sample. |
| VL_EXPORT double vl_svm_l2_loss | ( | double | inner, |
| double | label | ||
| ) |
SVM l2 loss.
| inner | inner product between sample and model $^ $. |
| label | sample label $y$. |
The interface is the same for a loss function, its derivative, or the conjugate loss.
| VL_EXPORT double vl_svm_l2_loss_derivative | ( | double | inner, |
| double | label | ||
| ) |
SVM l2 loss derivative.
| inner | inner product between sample and model $^ $. |
| label | sample label $y$. |
The interface is the same for a loss function, its derivative, or the conjugate loss.
| VL_EXPORT double vl_svm_logistic_conjugate_loss | ( | double | u, |
| double | label | ||
| ) |
| VL_EXPORT double vl_svm_logistic_dca_update | ( | double | alpha, |
| double | inner, | ||
| double | norm2, | ||
| double | label | ||
| ) |
SVM l2 loss DCA update.
| alpha | current value of the dual variable. |
| inner | inner product $^ $ of the sample with the SVM model. |
| norm2 | normalization factor $\|\|^2/ n$. |
| label | label $y$ of the sample. |
| VL_EXPORT double vl_svm_logistic_loss | ( | double | inner, |
| double | label | ||
| ) |
SVM l2 loss.
| inner | inner product between sample and model $^ $. |
| label | sample label $y$. |
The interface is the same for a loss function, its derivative, or the conjugate loss.
| VL_EXPORT double vl_svm_logistic_loss_derivative | ( | double | inner, |
| double | label | ||
| ) |
SVM l2 loss derivative.
| inner | inner product between sample and model $^ $. |
| label | sample label $y$. |
The interface is the same for a loss function, its derivative, or the conjugate loss.
| VL_EXPORT VlSvm* vl_svm_new | ( | VlSvmSolverType | type, |
| double const * | data, | ||
| vl_size | dimension, | ||
| vl_size | numData, | ||
| double const * | labels, | ||
| double | lambda | ||
| ) |
Create a new object with plain data.
| type | type of SMV solver. |
| data | a pointer to a matrix of data. |
| dimension | dimension of the SVM model. |
| numData | number of training samples. |
| labels | training labels. |
| lambda | regularizer parameter. |
data has one column per sample, in double format. More advanced inputs can be used with vl_svm_new_with_dataset and vl_svm_new_with_abstract_data.
| VL_EXPORT VlSvm* vl_svm_new_with_abstract_data | ( | VlSvmSolverType | solver, |
| void * | data, | ||
| vl_size | dimension, | ||
| vl_size | numData, | ||
| double const * | labels, | ||
| double | lambda | ||
| ) |
Create a new object with abstract data.
| solver | type of SMV solver. |
| data | pointer to the data. |
| dimension | dimension of the SVM model. |
| numData | num training samples. |
| labels | training samples labels. |
| lambda | regularizer parameter. |
After calling this function, vl_svm_set_data_functions *must* be used to setup suitable callbacks for the inner product and accumulation operations (
| VL_EXPORT VlSvm* vl_svm_new_with_dataset | ( | VlSvmSolverType | solver, |
| VlSvmDataset * | dataset, | ||
| double const * | labels, | ||
| double | lambda | ||
| ) |
Create a new object with a dataset.
| solver | type of SMV solver. |
| dataset | SVM dataset object |
| labels | training samples labels. |
| lambda | regularizer parameter. |
| VL_EXPORT void vl_svm_set_bias | ( | VlSvm * | self, |
| double | b | ||
| ) |
Set the SVM bias.
| self | object. |
| b | bias. |
The function set the internal representation of the SVM bias to be equal to b (the bias multiplier is applied). The same remark that applies to vl_svm_set_model applies here too.
| VL_EXPORT void vl_svm_set_bias_learning_rate | ( | VlSvm * | self, |
| double | rate | ||
| ) |
| VL_EXPORT void vl_svm_set_bias_multiplier | ( | VlSvm * | self, |
| double | b | ||
| ) |
Set the bias multiplier.
| self | object |
| b | bias multiplier. |
The *bias multiplier* is the value of the constant feature appended to the data vectors to implement the bias (Adding a bias).
| VL_EXPORT void vl_svm_set_conjugate_loss_function | ( | VlSvm * | self, |
| VlSvmLossFunction | f | ||
| ) |
Set the conjugate loss function callback.
| self | object. |
| f | loss function callback. |
Note that setting up a loss requires specifying more than just one callback. See Loss functions for details.
.| VL_EXPORT void vl_svm_set_data_functions | ( | VlSvm * | self, |
| VlSvmInnerProductFunction | inner, | ||
| VlSvmAccumulateFunction | acc | ||
| ) |
| VL_EXPORT void vl_svm_set_dca_update_function | ( | VlSvm * | self, |
| VlSvmDcaUpdateFunction | f | ||
| ) |
Set the DCA update function callback.
| self | object. |
| f | loss function callback. |
Note that setting up a loss requires specifying more than just one callback. See Loss functions for details.
.| VL_EXPORT void vl_svm_set_diagnostic_frequency | ( | VlSvm * | self, |
| vl_size | f | ||
| ) |
| VL_EXPORT void vl_svm_set_diagnostic_function | ( | VlSvm * | self, |
| VlSvmDiagnosticFunction | f, | ||
| void * | data | ||
| ) |
| VL_EXPORT void vl_svm_set_epsilon | ( | VlSvm * | self, |
| double | epsilon | ||
| ) |
| VL_EXPORT void vl_svm_set_iteration_number | ( | VlSvm * | self, |
| vl_uindex | n | ||
| ) |
| VL_EXPORT void vl_svm_set_loss | ( | VlSvm * | self, |
| VlSvmLossType | loss | ||
| ) |
Set the loss function to one of the default types.
| self | object. |
| loss | type of loss function. |
| VL_EXPORT void vl_svm_set_loss_derivative_function | ( | VlSvm * | self, |
| VlSvmLossFunction | f | ||
| ) |
Set the loss derivative function callback.
| self | object. |
| f | loss function callback. |
Note that setting up a loss requires specifying more than just one callback. See Loss functions for details.
.| VL_EXPORT void vl_svm_set_loss_function | ( | VlSvm * | self, |
| VlSvmLossFunction | f | ||
| ) |
Set the loss function callback.
| self | object. |
| f | loss function callback. |
Note that setting up a loss requires specifying more than just one callback. See Loss functions for details.
| VL_EXPORT void vl_svm_set_max_num_iterations | ( | VlSvm * | self, |
| vl_size | n | ||
| ) |
| VL_EXPORT void vl_svm_set_model | ( | VlSvm * | self, |
| double const * | model | ||
| ) |
| VL_EXPORT void vl_svm_set_weights | ( | VlSvm * | self, |
| double const * | weights | ||
| ) |
Set the data weights.
| self | object. |
| weights | data weights. |
weights must be an array of non-negative weights. The loss of each data point is multiplied by the corresponding weight.
Set weights to NULL to weight the data uniformly by 1 (default).
Note that the weights array is *not* copied and must be valid througout the object lifetime (unless it is replaced).
| VL_EXPORT void vl_svm_train | ( | VlSvm * | self | ) |
Run the SVM solver.
| self | object. |
The data on which the SVM operates is passed upon the cration of the VlSvm object. This function runs a solver to learn a corresponding model. See Getting started.