C++ API Reference for Intel® Data Analytics Acceleration Library 2020 Update 1

svm_model.h
1 /* file: svm_model.h */
2 /*******************************************************************************
3 * Copyright 2014-2020 Intel Corporation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *******************************************************************************/
17 
18 /*
19 //++
20 // Implementation of the class defining the SVM model.
21 //--
22 */
23 
24 #ifndef __SVM_MODEL_H__
25 #define __SVM_MODEL_H__
26 
27 #include "data_management/data/homogen_numeric_table.h"
28 #include "data_management/data/csr_numeric_table.h"
29 #include "algorithms/model.h"
30 #include "algorithms/kernel_function/kernel_function.h"
31 #include "algorithms/kernel_function/kernel_function_linear.h"
32 #include "algorithms/kernel_function/kernel_function_types.h"
33 #include "algorithms/classifier/classifier_model.h"
34 
35 namespace daal
36 {
37 namespace algorithms
38 {
48 namespace svm
49 {
53 namespace interface1
54 {
65 /* [interface1::Parameter source code] */
66 struct DAAL_EXPORT Parameter : public classifier::interface1::Parameter
67 {
68  Parameter(const services::SharedPtr<kernel_function::KernelIface> &kernelForParameter
69  = services::SharedPtr<kernel_function::KernelIface>(new kernel_function::linear::Batch<>()),
70  double C = 1.0,
71  double accuracyThreshold = 0.001,
72  double tau = 1.0e-6,
73  size_t maxIterations = 1000000,
74  size_t cacheSize = 8000000,
75  bool doShrinking = true,
76  size_t shrinkingStep = 1000) :
77  C(C), accuracyThreshold(accuracyThreshold), tau(tau), maxIterations(maxIterations), cacheSize(cacheSize),
78  doShrinking(doShrinking), shrinkingStep(shrinkingStep), kernel(kernelForParameter) {};
79 
80  double C;
81  double accuracyThreshold;
82  double tau;
83  size_t maxIterations;
84  size_t cacheSize;
86  bool doShrinking;
87  size_t shrinkingStep;
88  algorithms::kernel_function::KernelIfacePtr kernel;
90  services::Status check() const DAAL_C11_OVERRIDE;
91 };
92 /* [interface1::Parameter source code] */
93 }
94 
98 namespace interface2
99 {
110 /* [Parameter source code] */
111 struct DAAL_EXPORT Parameter : public classifier::Parameter
112 {
113  Parameter(const services::SharedPtr<kernel_function::KernelIface> &kernelForParameter
114  = services::SharedPtr<kernel_function::KernelIface>(new kernel_function::linear::Batch<>()),
115  double C = 1.0,
116  double accuracyThreshold = 0.001,
117  double tau = 1.0e-6,
118  size_t maxIterations = 1000000,
119  size_t cacheSize = 8000000,
120  bool doShrinking = true,
121  size_t shrinkingStep = 1000) :
122  C(C), accuracyThreshold(accuracyThreshold), tau(tau), maxIterations(maxIterations), cacheSize(cacheSize),
123  doShrinking(doShrinking), shrinkingStep(shrinkingStep), kernel(kernelForParameter) {};
124 
125  double C;
126  double accuracyThreshold;
127  double tau;
128  size_t maxIterations;
129  size_t cacheSize;
131  bool doShrinking;
132  size_t shrinkingStep;
133  algorithms::kernel_function::KernelIfacePtr kernel;
135  services::Status check() const DAAL_C11_OVERRIDE;
136 };
137 /* [Parameter source code] */
138 }
139 
140 namespace interface1
141 {
151 class DAAL_EXPORT Model : public classifier::Model
152 {
153 public:
154  DECLARE_MODEL(Model, classifier::Model);
155 
164  template<typename modelFPType>
165  Model(modelFPType dummy, size_t nColumns, data_management::NumericTableIface::StorageLayout layout = data_management::NumericTableIface::aos) :
166  _bias(0.0)
167  {
168  using namespace data_management;
169  if (layout == NumericTableIface::csrArray)
170  {
171  modelFPType *dummyPtr = NULL;
172  _SV.reset(new CSRNumericTable(dummyPtr,NULL,NULL,nColumns));
173  }
174  else
175  {
176  _SV.reset(new HomogenNumericTable<modelFPType>(NULL, nColumns, 0));
177  }
178  _SVCoeff.reset(new HomogenNumericTable<modelFPType>(NULL, 1, 0));
179  _SVIndices.reset(new HomogenNumericTable<int>(NULL, 1, 0));
180  }
181 
190  template<typename modelFPType>
191  DAAL_EXPORT static services::SharedPtr<Model> create(size_t nColumns,
192  data_management::NumericTableIface::StorageLayout layout = data_management::NumericTableIface::aos,
193  services::Status *stat = NULL);
194 
199  Model() : _SV(), _SVIndices(), _SVCoeff(), _bias(0.0) {}
200 
206  static services::SharedPtr<Model> create(services::Status *stat = NULL)
207  {
208  services::SharedPtr<Model> modelPtr(new Model());
209  if (!modelPtr)
210  {
211  if (stat)
212  stat->add(services::ErrorMemoryAllocationFailed);
213  }
214  return modelPtr;
215  }
216 
217  virtual ~Model() {}
218 
223  data_management::NumericTablePtr getSupportVectors() { return _SV; }
224 
229  data_management::NumericTablePtr getSupportIndices() { return _SVIndices; }
230 
235  data_management::NumericTablePtr getClassificationCoefficients() { return _SVCoeff; }
236 
241  virtual double getBias() { return _bias; }
242 
247  virtual void setBias(double bias)
248  {
249  _bias = bias;
250  }
251 
256  size_t getNumberOfFeatures() const DAAL_C11_OVERRIDE { return (_SV ? _SV->getNumberOfColumns() : 0); }
257 
258 protected:
259  data_management::NumericTablePtr _SV;
260  data_management::NumericTablePtr _SVCoeff;
261  double _bias;
262  data_management::NumericTablePtr _SVIndices;
264  template<typename modelFPType>
265  DAAL_EXPORT Model(modelFPType dummy, size_t nColumns, data_management::NumericTableIface::StorageLayout layout,
266  services::Status &st);
267 
268  template<typename Archive, bool onDeserialize>
269  services::Status serialImpl(Archive *arch)
270  {
271  services::Status st = classifier::Model::serialImpl<Archive, onDeserialize>(arch);
272  if (!st)
273  return st;
274  arch->setSharedPtrObj(_SV);
275  arch->setSharedPtrObj(_SVCoeff);
276  arch->set(_bias);
277 
278  arch->setSharedPtrObj(_SVIndices);
279 
280  return st;
281  }
282 };
283 typedef services::SharedPtr<Model> ModelPtr;
285 } // namespace interface1
286 using interface2::Parameter;
287 using interface1::Model;
288 using interface1::ModelPtr;
289 
290 } // namespace svm
292 } // namespace algorithms
293 } // namespace daal
294 #endif
daal::algorithms::svm::interface1::Parameter::kernel
algorithms::kernel_function::KernelIfacePtr kernel
Definition: svm_model.h:88
daal::algorithms::svm::interface1::Model::create
static services::SharedPtr< Model > create(services::Status *stat=NULL)
Definition: svm_model.h:206
daal::algorithms::svm::interface2::Parameter::cacheSize
size_t cacheSize
Definition: svm_model.h:129
daal::algorithms::svm::interface1::Parameter::maxIterations
size_t maxIterations
Definition: svm_model.h:83
daal::algorithms::svm::interface2::Parameter::doShrinking
bool doShrinking
Definition: svm_model.h:131
daal::algorithms::svm::interface2::Parameter::tau
double tau
Definition: svm_model.h:127
daal::algorithms::svm::interface1::Model::Model
Model(modelFPType dummy, size_t nColumns, data_management::NumericTableIface::StorageLayout layout=data_management::NumericTableIface::aos)
Definition: svm_model.h:165
daal::algorithms::svm::interface1::Parameter::accuracyThreshold
double accuracyThreshold
Definition: svm_model.h:81
daal::algorithms::svm::interface1::Parameter::shrinkingStep
size_t shrinkingStep
Definition: svm_model.h:87
daal::algorithms::svm::interface1::Model::getClassificationCoefficients
data_management::NumericTablePtr getClassificationCoefficients()
Definition: svm_model.h:235
daal::algorithms::svm::interface1::Model::setBias
virtual void setBias(double bias)
Definition: svm_model.h:247
daal::algorithms::svm::interface1::Model::getNumberOfFeatures
size_t getNumberOfFeatures() const DAAL_C11_OVERRIDE
Definition: svm_model.h:256
daal::algorithms::svm::interface1::Model::getSupportIndices
data_management::NumericTablePtr getSupportIndices()
Definition: svm_model.h:229
daal::algorithms::svm::interface1::Model::getBias
virtual double getBias()
Definition: svm_model.h:241
daal::algorithms::svm::interface1::Parameter::doShrinking
bool doShrinking
Definition: svm_model.h:86
daal::algorithms::svm::interface2::Parameter::kernel
algorithms::kernel_function::KernelIfacePtr kernel
Definition: svm_model.h:133
daal::algorithms::svm::interface1::Parameter::cacheSize
size_t cacheSize
Definition: svm_model.h:84
daal::algorithms::svm::interface1::Model::Model
Model()
Definition: svm_model.h:199
daal::algorithms::svm::interface2::Parameter::shrinkingStep
size_t shrinkingStep
Definition: svm_model.h:132
daal::algorithms::classifier::interface1::Parameter
Base class for the parameters of the classification algorithm.
Definition: classifier_model.h:69
daal::algorithms::svm::interface2::Parameter::maxIterations
size_t maxIterations
Definition: svm_model.h:128
daal::algorithms::svm::interface1::Model::getSupportVectors
data_management::NumericTablePtr getSupportVectors()
Definition: svm_model.h:223
daal::algorithms::svm::interface1::Parameter
Optional parameters.
Definition: svm_model.h:66
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:150
daal::algorithms::svm::interface2::Parameter::accuracyThreshold
double accuracyThreshold
Definition: svm_model.h:126
daal::algorithms::svm::interface1::Model
Model of the classifier trained by the svm::training::Batch algorithm
Definition: svm_model.h:151
daal::algorithms::svm::interface1::Parameter::tau
double tau
Definition: svm_model.h:82

For more complete information about compiler optimizations, see our Optimization Notice.