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.