Visible to Intel only — GUID: GUID-F59FDF0F-BDB1-4BF6-AAF0-A9867237D887
Visible to Intel only — GUID: GUID-F59FDF0F-BDB1-4BF6-AAF0-A9867237D887
Support Vector Machine Classifier (SVM)
Support Vector Machine (SVM) classification and regression are among popular algorithms. It belongs to a family of generalized linear classification problems.
Operation |
Computational methods |
Programming Interface |
|||
Mathematical formulation
Refer to Developer Guide: Support Vector Machine Classifier.
Programming Interface
All types and functions in this section are declared in the oneapi::dal::svm namespace and are available via inclusion of the oneapi/dal/algo/svm.hpp header file.
Descriptor
template<typenameFloat=float,typenameMethod=method::by_default,typenameTask=task::by_default,typenameKernel=linear_kernel::descriptor<Float>>classdescriptor
- Template Parameters
-
Float – The floating-point type that the algorithm uses for intermediate computations. Can be float or double.
Method – Tag-type that specifies an implementation of algorithm. Can be method::thunder or method::smo.
Task – Tag-type that specifies the type of the problem to solve. Can be task::classification, task::nu_classification, task::regression, or task::nu_regression.
Constructors
descriptor(constKernel&kernel=kernel_t{})
Creates a new instance of the class with the given descriptor of the kernel function.
Properties
std::int64_tmax_iteration_count
The maximum number of iterations . Default value: 100000.
- Getter & Setter
-
std::int64_t get_max_iteration_count() const
auto & set_max_iteration_count(std::int64_t value)
- Invariants
-
max_iteration_count >= 0
doubleepsilon
The epsilon. Used with task::regression only. Default value: 0.1.
- Getter & Setter
-
template <typename T = Task, typename None = detail::enable_if_epsilon_available_t<T>> double get_epsilon() const
template <typename T = Task, typename None = detail::enable_if_epsilon_available_t<T>> auto & set_epsilon(double value)
- Invariants
-
epsilon >= 0
doublecache_size
The size of cache (in megabytes) for storing the values of the kernel matrix. Default value: 200.0.
- Getter & Setter
-
double get_cache_size() const
auto & set_cache_size(double value)
- Invariants
-
cache_size >= 0.0
doublenu
The nu. Used with task::nu_classification and task::nu_regression. Default value: 0.5.
- Getter & Setter
-
template <typename T = Task, typename None = detail::enable_if_nu_task_t<T>> double get_nu() const
template <typename T = Task, typename None = detail::enable_if_nu_task_t<T>> auto & set_nu(double value)
- Invariants
-
0 < nu <= 1
doublec
The upper bound in constraints of the quadratic optimization problem. Used with task::classification, task::regression, and task::nu_regression. Default value: 1.0.
- Getter & Setter
-
template <typename T = Task, typename None = detail::enable_if_c_available_t<T>> double get_c() const
template <typename T = Task, typename None = detail::enable_if_c_available_t<T>> auto & set_c(double value)
- Invariants
-
c > 0
constKernel&kernel
The descriptor of kernel function . Can be linear_kernel::descriptor or polynomial_kernel::descriptor or rbf_kernel::descriptor or sigmoid_kernel::descriptor.
- Getter & Setter
-
const Kernel & get_kernel() const
auto & set_kernel(const Kernel &kernel)
std::int64_tclass_count
The number of classes. Used with task::classification and task::nu_classification. Default value: 2.
- Getter & Setter
-
template <typename T = Task, typename None = detail::enable_if_classification_t<T>> std::int64_t get_class_count() const
template <typename T = Task, typename None = detail::enable_if_classification_t<T>> auto & set_class_count(std::int64_t value)
- Invariants
-
class_count >= 2
doubleaccuracy_threshold
The threshold for the stop condition. Default value: 0.0.
- Getter & Setter
-
double get_accuracy_threshold() const
auto & set_accuracy_threshold(double value)
- Invariants
-
accuracy_threshold >= 0.0
boolshrinking
A flag that enables the use of a shrinking optimization technique. Used with method::smo split-finding method only. Default value: true.
- Getter & Setter
-
bool get_shrinking() const
auto & set_shrinking(bool value)
doubletau
The threshold parameter for computing the quadratic coefficient. Default value: 1e-6.
- Getter & Setter
-
double get_tau() const
auto & set_tau(double value)
- Invariants
-
tau > 0.0
Method tags
structsmo
Tag-type that denotes SMO computational method.
structthunder
Tag-type that denotes Thunder computational method.
usingby_default=thunder
Alias tag-type for Thunder computational method.
Task tags
structclassification
Tag-type that parameterizes entities that are used for solving classification problem.
structnu_classification
Tag-type that parameterizes entities that are used for solving nu-classification problem.
structnu_regression
Tag-type that parameterizes entities used for solving nu-regression problem.
structregression
Tag-type that parameterizes entities used for solving regression problem.
usingby_default=classification
Alias tag-type for classification task.
Model
template<typenameTask=task::by_default>classmodel
- Template Parameters
-
Task – Tag-type that specifies the type of the problem to solve. Can be task::classification, task::nu_classification, task::regression, or task::nu_regression.
Constructors
model()
Creates a new instance of the class with the default property values.
Public Methods
std::int64_tget_support_vector_count()const
The number of support vectors.
Properties
consttable&biases
A table for task::classification and task::nu_classification and a table for task::regression and task::nu_regression containing constants in decision function.
- Getter & Setter
-
const table & get_biases() const
auto & set_biases(const table &value)
std::int64_tfirst_class_response
The first unique value in class responses. Used with task::classification and task::nu_classification.
- Getter & Setter
-
std::int64_t get_first_class_response() const
template <typename T = Task, typename None = detail::enable_if_classification_t<T>> auto & set_first_class_response(std::int64_t value)
std::int64_tfirst_class_label
The first unique value in class labels. Used with task::classification and task::nu_classification.
- Getter & Setter
-
std::int64_t get_first_class_label() const
template <typename T = Task, typename None = detail::enable_if_classification_t<T>> auto & set_first_class_label(std::int64_t value)
consttable&support_vectors
A table containing support vectors. Where - number of support vectors. Default value: table{}.
- Getter & Setter
-
const table & get_support_vectors() const
auto & set_support_vectors(const table &value)
consttable&coeffs
A table for task::classification and task::nu_classification and a table for task::regression and task::nu_regression containing coefficients of Lagrange multiplier. Default value: table{}.
- Getter & Setter
-
const table & get_coeffs() const
auto & set_coeffs(const table &value)
std::int64_tsecond_class_response
The second unique value in class responses. Used with task::classification and task::nu_classification.
- Getter & Setter
-
std::int64_t get_second_class_response() const
template <typename T = Task, typename None = detail::enable_if_classification_t<T>> auto & set_second_class_response(std::int64_t value)
doublebias
The bias. Default value: 0.0.
- Getter & Setter
-
double get_bias() const
auto & set_bias(double value)
std::int64_tsecond_class_label
The second unique value in class labels. Used with task::classification and task::nu_classification.
- Getter & Setter
-
std::int64_t get_second_class_label() const
template <typename T = Task, typename None = detail::enable_if_classification_t<T>> auto & set_second_class_label(std::int64_t value)
Training train(...)
Input
template<typenameTask=task::by_default>classtrain_input
- Template Parameters
-
Task – Tag-type that specifies the type of the problem to solve. Can be oneapi::dal::svm::task::classification, oneapi::dal::svm::task::nu_classification, oneapi::dal::svm::task::regression, or oneapi::dal::svm::task::nu_regression.
Constructors
train_input(consttable&data, consttable&responses, consttable&weights=table{})
Creates a new instance of the class with the given data, responses and weights.
Properties
consttable&data
The training set . Default value: table{}.
- Getter & Setter
-
const table & get_data() const
auto & set_data(const table &value)
consttable&weights
The vector of weights for the training set . Default value: table{}.
- Getter & Setter
-
const table & get_weights() const
auto & set_weights(const table &value)
consttable&responses
The vector of responses for the training set . Default value: table{}.
- Getter & Setter
-
const table & get_responses() const
auto & set_responses(const table &value)
consttable&labels
The vector of labels for the training set . Default value: table{}.
- Getter & Setter
-
const table & get_labels() const
auto & set_labels(const table &value)
Result
template<typenameTask=task::by_default>classtrain_result
- Template Parameters
-
Task – Tag-type that specifies the type of the problem to solve. Can be oneapi::dal::svm::task::classification, oneapi::dal::svm::task::nu_classification, oneapi::dal::svm::task::regression, or oneapi::dal::svm::task::nu_regression.
Constructors
train_result()
Creates a new instance of the class with the default property values.
Public Methods
std::int64_tget_support_vector_count()const
The number of support vectors.
Properties
consttable&biases
A table for task::classification and task::classification and table for task::regression and task::nu_regression containing constants in decision function.
- Getter & Setter
-
const table & get_biases() const
auto & set_biases(const table &value)
consttable&support_vectors
A table containing support vectors, where is the number of support vectors. Default value: table{}.
- Getter & Setter
-
const table & get_support_vectors() const
auto & set_support_vectors(const table &value)
consttable&coeffs
A table for task::classification and task::classification and table for task::regression and task::nu_regression containing coefficients of Lagrange multiplier. Default value: table{}.
- Getter & Setter
-
const table & get_coeffs() const
auto & set_coeffs(const table &value)
consttable&support_indices
A table containing support indices. Default value: table{}.
- Getter & Setter
-
const table & get_support_indices() const
auto & set_support_indices(const table &value)
doublebias
The bias. Default value: 0.0.
- Getter & Setter
-
double get_bias() const
auto & set_bias(double value)
constmodel<Task>&model
The trained SVM model. Default value: model<Task>{}.
- Getter & Setter
-
const model< Task > & get_model() const
auto & set_model(const model< Task > &value)
Operation
template<typenameDescriptor>svm::train_resulttrain(constDescriptor&desc, constsvm::train_input&input)
- Parameters
-
desc – SVM algorithm descriptor svm::descriptor.
input – Input data for the training operation
- Preconditions
-
input.data.is_empty == false
input.labels.is_empty == false
input.labels.column_count == 1
input.data.row_count == input.labels.row_count
Inference infer(...)
Input
template<typenameTask=task::by_default>classinfer_input
- Template Parameters
-
Task – Tag-type that specifies the type of the problem to solve. Can be oneapi::dal::svm::task::classification, oneapi::dal::svm::task::nu_classification, oneapi::dal::svm::task::regression, or oneapi::dal::svm::task::nu_regression.
Constructors
infer_input(constmodel<Task>&trained_model, consttable&data)
Creates a new instance of the class with the given model and data property values.
Properties
consttable&data
The dataset for inference . Default value: table{}.
- Getter & Setter
-
const table & get_data() const
auto & set_data(const table &value)
constmodel<Task>&model
The trained SVM model. Default value: model<Task>{}.
- Getter & Setter
-
const model< Task > & get_model() const
auto & set_model(const model< Task > &value)
Result
template<typenameTask=task::by_default>classinfer_result
- Template Parameters
-
Task – Tag-type that specifies the type of the problem to solve. Can be oneapi::dal::svm::task::classification, oneapi::dal::svm::task::nu_classification, oneapi::dal::svm::task::regression, or oneapi::dal::svm::task::nu_regression.
Constructors
infer_result()
Creates a new instance of the class with the default property values.
Properties
consttable&labels
The table with the predicted labels. Default value: table{}.
- Getter & Setter
-
const table & get_labels() const
auto & set_labels(const table &value)
consttable&decision_function
The table with the predicted class. Used with oneapi::dal::svm::task::classification and oneapi::dal::svm::task::nu_classification. decision function for each observation. Default value: table{}.
- Getter & Setter
-
const table & get_decision_function() const
template <typename T = Task, typename None = detail::enable_if_classification_t<T>> auto & set_decision_function(const table &value)
consttable&responses
The table with the predicted responses. Default value: table{}.
- Getter & Setter
-
const table & get_responses() const
auto & set_responses(const table &value)
Operation
template<typenameDescriptor>svm::infer_resultinfer(constDescriptor&desc, constsvm::infer_input&input)
- Parameters
-
desc – SVM algorithm descriptor svm::descriptor.
input – Input data for the inference operation
- Preconditions
-
input.data.is_empty == false
Examples
oneAPI DPC++
Batch Processing:
dpc_svm_two_class_thunder_dense_batch.cpp
oneAPI C++
Batch Processing:
cpp_svm_two_class_smo_dense_batch.cpp
cpp_svm_two_class_thunder_dense_batch.cpp
cpp_svm_reg_thunder_dense_batch.cpp
cpp_svm_multi_class_thunder_dense_batch.cpp
cpp_svm_nu_cls_thunder_dense_batch.cpp
cpp_svm_nu_reg_thunder_dense_batch.cpp
Python* with DPC++ support
Batch Processing: