Struct SVMSGD

Source
pub struct SVMSGD { /* private fields */ }
Expand description

! Stochastic Gradient Descent SVM classifier

SVMSGD provides a fast and easy-to-use implementation of the SVM classifier using the Stochastic Gradient Descent approach, as presented in bottou2010large.

The classifier has following parameters:

  • model type,
  • margin type,
  • margin regularization (inline formula),
  • initial step size (inline formula),
  • step decreasing power (inline formula),
  • and termination criteria.

The model type may have one of the following values: \ref SGD and \ref ASGD.

  • \ref SGD is the classic version of SVMSGD classifier: every next step is calculated by the formula block formula where

    • inline formula is the weights vector for decision function at step inline formula,
    • inline formula is the step size of model parameters at the iteration inline formula, it is decreased on each step by the formula inline formula
    • inline formula is the target functional from SVM task for sample with number inline formula, this sample is chosen stochastically on each step of the algorithm.
  • \ref ASGD is Average Stochastic Gradient Descent SVM Classifier. ASGD classifier averages weights vector on each step of algorithm by the formula inline formula

The recommended model type is ASGD (following bottou2010large).

The margin type may have one of the following values: \ref SOFT_MARGIN or \ref HARD_MARGIN.

  • You should use \ref HARD_MARGIN type, if you have linearly separable sets.
  • You should use \ref SOFT_MARGIN type, if you have non-linearly separable sets or sets with outliers.
  • In the general case (if you know nothing about linear separability of your sets), use SOFT_MARGIN.

The other parameters may be described as follows:

  • Margin regularization parameter is responsible for weights decreasing at each step and for the strength of restrictions on outliers (the less the parameter, the less probability that an outlier will be ignored). Recommended value for SGD model is 0.0001, for ASGD model is 0.00001.

  • Initial step size parameter is the initial value for the step size inline formula. You will have to find the best initial step for your problem.

  • Step decreasing power is the power parameter for inline formula decreasing by the formula, mentioned above. Recommended value for SGD model is 1, for ASGD model is 0.75.

  • Termination criteria can be TermCriteria::COUNT, TermCriteria::EPS or TermCriteria::COUNT + TermCriteria::EPS. You will have to find the best termination criteria for your problem.

Note that the parameters margin regularization, initial step size, and step decreasing power should be positive.

To use SVMSGD algorithm do as follows:

  • first, create the SVMSGD object. The algorithm will set optimal parameters by default, but you can set your own parameters via functions setSvmsgdType(), setMarginType(), setMarginRegularization(), setInitialStepSize(), and setStepDecreasingPower().

  • then the SVM model can be trained using the train features and the correspondent labels by the method train().

  • after that, the label of a new feature vector can be predicted using the method predict().

// Create empty object
cv::Ptr<SVMSGD> svmsgd = SVMSGD::create();

// Train the Stochastic Gradient Descent SVM
svmsgd->train(trainData);

// Predict labels for the new samples
svmsgd->predict(samples, responses);

Implementations§

Source§

impl SVMSGD

Source

pub fn create() -> Result<Ptr<SVMSGD>>

Creates empty model. Use StatModel::train to train the model. Since %SVMSGD has several parameters, you may want to find the best parameters for your problem or use setOptimalParameters() to set some default parameters.

Source

pub fn load(filepath: &str, node_name: &str) -> Result<Ptr<SVMSGD>>

Loads and creates a serialized SVMSGD from a file

Use SVMSGD::save to serialize and store an SVMSGD to disk. Load the SVMSGD from this file again, by calling this function with the path to the file. Optionally specify the node for the file containing the classifier

§Parameters
  • filepath: path to serialized SVMSGD
  • nodeName: name of node containing the classifier
§C++ default parameters
  • node_name: String()
Source

pub fn load_def(filepath: &str) -> Result<Ptr<SVMSGD>>

Loads and creates a serialized SVMSGD from a file

Use SVMSGD::save to serialize and store an SVMSGD to disk. Load the SVMSGD from this file again, by calling this function with the path to the file. Optionally specify the node for the file containing the classifier

§Parameters
  • filepath: path to serialized SVMSGD
  • nodeName: name of node containing the classifier
§Note

This alternative version of SVMSGD::load function uses the following default values for its arguments:

  • node_name: String()

Trait Implementations§

Source§

impl AlgorithmTrait for SVMSGD

Source§

fn as_raw_mut_Algorithm(&mut self) -> *mut c_void

Source§

fn clear(&mut self) -> Result<()>

Clears the algorithm state
Source§

fn read(&mut self, fn_: &impl FileNodeTraitConst) -> Result<()>

Reads algorithm parameters from a file storage
Source§

impl AlgorithmTraitConst for SVMSGD

Source§

fn as_raw_Algorithm(&self) -> *const c_void

Source§

fn write(&self, fs: &mut impl FileStorageTrait) -> Result<()>

Stores algorithm parameters in a file storage
Source§

fn write_1(&self, fs: &mut impl FileStorageTrait, name: &str) -> Result<()>

Stores algorithm parameters in a file storage Read more
Source§

fn write_with_name(&self, fs: &Ptr<FileStorage>, name: &str) -> Result<()>

@deprecated Read more
Source§

fn write_with_name_def(&self, fs: &Ptr<FileStorage>) -> Result<()>

👎Deprecated:

§Note

Deprecated: ## Note This alternative version of AlgorithmTraitConst::write_with_name function uses the following default values for its arguments: Read more
Source§

fn empty(&self) -> Result<bool>

Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read
Source§

fn save(&self, filename: &str) -> Result<()>

Saves the algorithm to a file. In order to make this method work, the derived class must implement Algorithm::write(FileStorage& fs).
Source§

fn get_default_name(&self) -> Result<String>

Returns the algorithm string identifier. This string is used as top level xml/yml node tag when the object is saved to a file or string.
Source§

impl Boxed for SVMSGD

Source§

unsafe fn from_raw(ptr: <SVMSGD as OpenCVFromExtern>::ExternReceive) -> Self

Wrap the specified raw pointer Read more
Source§

fn into_raw(self) -> <SVMSGD as OpenCVTypeExternContainer>::ExternSendMut

Return the underlying raw pointer while consuming this wrapper. Read more
Source§

fn as_raw(&self) -> <SVMSGD as OpenCVTypeExternContainer>::ExternSend

Return the underlying raw pointer. Read more
Source§

fn as_raw_mut(&mut self) -> <SVMSGD as OpenCVTypeExternContainer>::ExternSendMut

Return the underlying mutable raw pointer Read more
Source§

impl Debug for SVMSGD

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for SVMSGD

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl From<SVMSGD> for Algorithm

Source§

fn from(s: SVMSGD) -> Self

Converts to this type from the input type.
Source§

impl From<SVMSGD> for StatModel

Source§

fn from(s: SVMSGD) -> Self

Converts to this type from the input type.
Source§

impl SVMSGDTrait for SVMSGD

Source§

fn as_raw_mut_SVMSGD(&mut self) -> *mut c_void

Source§

fn get_weights(&mut self) -> Result<Mat>

Returns Read more
Source§

fn get_shift(&mut self) -> Result<f32>

Returns Read more
Source§

fn set_optimal_parameters( &mut self, svmsgd_type: i32, margin_type: i32, ) -> Result<()>

Function sets optimal parameters values for chosen SVM SGD model. Read more
Source§

fn set_optimal_parameters_def(&mut self) -> Result<()>

Function sets optimal parameters values for chosen SVM SGD model. Read more
Source§

fn set_svmsgd_type(&mut self, svmsgd_type: i32) -> Result<()>

%Algorithm type, one of SVMSGD::SvmsgdType. Read more
Source§

fn set_margin_type(&mut self, margin_type: i32) -> Result<()>

%Margin type, one of SVMSGD::MarginType. Read more
Source§

fn set_margin_regularization( &mut self, margin_regularization: f32, ) -> Result<()>

Parameter marginRegularization of a %SVMSGD optimization problem. Read more
Source§

fn set_initial_step_size(&mut self, initial_step_size: f32) -> Result<()>

Parameter initialStepSize of a %SVMSGD optimization problem. Read more
Source§

fn set_step_decreasing_power( &mut self, step_decreasing_power: f32, ) -> Result<()>

Parameter stepDecreasingPower of a %SVMSGD optimization problem. Read more
Source§

fn set_term_criteria(&mut self, val: TermCriteria) -> Result<()>

Termination criteria of the training algorithm. You can specify the maximum number of iterations (maxCount) and/or how much the error could change between the iterations to make the algorithm continue (epsilon). Read more
Source§

impl SVMSGDTraitConst for SVMSGD

Source§

fn as_raw_SVMSGD(&self) -> *const c_void

Source§

fn get_svmsgd_type(&self) -> Result<i32>

%Algorithm type, one of SVMSGD::SvmsgdType. Read more
Source§

fn get_margin_type(&self) -> Result<i32>

%Margin type, one of SVMSGD::MarginType. Read more
Source§

fn get_margin_regularization(&self) -> Result<f32>

Parameter marginRegularization of a %SVMSGD optimization problem. Read more
Source§

fn get_initial_step_size(&self) -> Result<f32>

Parameter initialStepSize of a %SVMSGD optimization problem. Read more
Source§

fn get_step_decreasing_power(&self) -> Result<f32>

Parameter stepDecreasingPower of a %SVMSGD optimization problem. Read more
Source§

fn get_term_criteria(&self) -> Result<TermCriteria>

Termination criteria of the training algorithm. You can specify the maximum number of iterations (maxCount) and/or how much the error could change between the iterations to make the algorithm continue (epsilon). Read more
Source§

impl StatModelTrait for SVMSGD

Source§

fn as_raw_mut_StatModel(&mut self) -> *mut c_void

Source§

fn train_with_data( &mut self, train_data: &Ptr<TrainData>, flags: i32, ) -> Result<bool>

Trains the statistical model Read more
Source§

fn train_with_data_def(&mut self, train_data: &Ptr<TrainData>) -> Result<bool>

Trains the statistical model Read more
Source§

fn train( &mut self, samples: &impl ToInputArray, layout: i32, responses: &impl ToInputArray, ) -> Result<bool>

Trains the statistical model Read more
Source§

impl StatModelTraitConst for SVMSGD

Source§

fn as_raw_StatModel(&self) -> *const c_void

Source§

fn get_var_count(&self) -> Result<i32>

Returns the number of variables in training samples
Source§

fn empty(&self) -> Result<bool>

Source§

fn is_trained(&self) -> Result<bool>

Returns true if the model is trained
Source§

fn is_classifier(&self) -> Result<bool>

Returns true if the model is classifier
Source§

fn calc_error( &self, data: &Ptr<TrainData>, test: bool, resp: &mut impl ToOutputArray, ) -> Result<f32>

Computes error on the training or test dataset Read more
Source§

fn predict( &self, samples: &impl ToInputArray, results: &mut impl ToOutputArray, flags: i32, ) -> Result<f32>

Predicts response(s) for the provided sample(s) Read more
Source§

fn predict_def(&self, samples: &impl ToInputArray) -> Result<f32>

Predicts response(s) for the provided sample(s) Read more
Source§

impl TryFrom<StatModel> for SVMSGD

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(s: StatModel) -> Result<Self>

Performs the conversion.
Source§

impl Send for SVMSGD

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<Mat> ModifyInplace for Mat
where Mat: Boxed,

Source§

unsafe fn modify_inplace<Res>( &mut self, f: impl FnOnce(&Mat, &mut Mat) -> Res, ) -> Res

Helper function to call OpenCV functions that allow in-place modification of a Mat or another similar object. By passing a mutable reference to the Mat to this function your closure will get called with the read reference and a write references to the same Mat. This is unsafe in a general case as it leads to having non-exclusive mutable access to the internal data, but it can be useful for some performance sensitive operations. One example of an OpenCV function that allows such in-place modification is imgproc::threshold. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.