Intel® oneAPI Data Analytics Library Developer Guide and Reference
A newer version of this document is available. Customers should click here to go to the newest version.
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
doubleaccuracy_threshold
The threshold \(\varepsilon\) 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
std::int64_tmax_iteration_count
The maximum number of iterations \(T\). 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
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
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
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)
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
constKernel&kernel
The descriptor of kernel function \(K(x, y)\). 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)
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
doublec
The upper bound \(C\) 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
doubletau
The threshold parameter \(\tau\) 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
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_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)
consttable&coeffs
A \(nsv \times class_count - 1\) table for task::classification and task::nu_classification and a \(nsv \times 1\) 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_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&biases
A \(class_count*(class_count-1)/2 \times 1\) table for task::classification and task::nu_classification and a \(1 \times 1\) 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 \(nsv \times p\) table containing support vectors. Where \(nsv\) - number of support vectors. Default value: table{}.
- Getter & Setter
-
const table & get_support_vectors() const
auto & set_support_vectors(const table &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&responses
The vector of responses \(y\) for the training set \(X\). Default value: table{}.
- Getter & Setter
-
const table & get_responses() const
auto & set_responses(const table &value)
consttable&data
The training set \(X\). Default value: table{}.
- Getter & Setter
-
const table & get_data() const
auto & set_data(const table &value)
consttable&labels
The vector of labels \(y\) for the training set \(X\). Default value: table{}.
- Getter & Setter
-
const table & get_labels() const
auto & set_labels(const table &value)
consttable&weights
The vector of weights \(w\) for the training set \(X\). Default value: table{}.
- Getter & Setter
-
const table & get_weights() const
auto & set_weights(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
doublebias
The bias. Default value: 0.0.
- Getter & Setter
-
double get_bias() const
auto & set_bias(double value)
consttable&coeffs
A \(nsv \times class_count - 1\) table for task::classification and task::classification and \(nsv \times 1\) 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 \(nsv \times 1\) table containing support indices. Default value: table{}.
- Getter & Setter
-
const table & get_support_indices() const
auto & set_support_indices(const table &value)
consttable&biases
A \(class_count*(class_count-1)/2 \times 1\) table for task::classification and task::classification and \(1 \times 1\) 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 \(nsv \times p\) table containing support vectors, where \(nsv\) is the number of support vectors. Default value: table{}.
- Getter & Setter
-
const table & get_support_vectors() const
auto & set_support_vectors(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)
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
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)
consttable&data
The dataset for inference \(X'\). Default value: table{}.
- Getter & Setter
-
const table & get_data() const
auto & set_data(const table &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&responses
The \(n \times 1\) table with the predicted responses. Default value: table{}.
- Getter & Setter
-
const table & get_responses() const
auto & set_responses(const table &value)
consttable&labels
The \(n \times 1\) 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 \(n \times 1\) 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)
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:
oneAPI C++
Batch Processing:
Python* with DPC++ support
Batch Processing: