SVM Binary Classification
Support Vector Machines (SVMs) are supervised learning models with associated learning algorithms that analyze data used for classification and regression analysis.
Given a set of training examples, each marked as belonging to one or the other of two categories, an SVM training algorithm builds a model that assigns new examples to one category or the other, making it a non-probabilistic binary linear classifier.
Only Linear SVM is supported in the Apache Ignite Machine Learning module. For more information look at SVM in Wikipedia.
A Model in the case of SVM is represented by the class SVMLinearBinaryClassificationModel. It enables a prediction to be made for a given vector of features, in the following way:
SVMLinearBinaryClassificationModel model = ...; double prediction = model.predict(observation);
Presently Ignite supports the following parameters for
isKeepingRawLabels- controls the output label format: -1 and +1 for false value and raw distances from the separating hyperplane (default value:
threshold- a threshold to assign +1 label to the observation if the raw value is more than this threshold (default value:
SVMLinearBinaryClassificationModel model = ...; double prediction = model .withRawLabels(true) .withThreshold(5) .predict(observation);
Base class for a soft-margin SVM linear classification trainer based on the communication-efficient distributed dual coordinate ascent algorithm (CoCoA) with hinge-loss function. This trainer takes input as a Labeled Dataset with -1 and +1 labels for two classes and makes binary classification.
The paper about this algorithm could be found here https://arxiv.org/abs/1409.1458.
Presently, Ignite supports the following parameters for
amountOfIterations- amount of outer SDCA algorithm iterations. (default value:
amountOfLocIterations- amount of local SDCA algorithm iterations. (default value:
lambda- regularization parameter (default value:
// Set up the trainer SVMLinearBinaryClassificationTrainer trainer = new SVMLinearBinaryClassificationTrainer() .withAmountOfIterations(AMOUNT_OF_ITERATIONS) .withAmountOfLocIterations(AMOUNT_OF_LOC_ITERATIONS) .withLambda(LAMBDA); // Build the model SVMLinearBinaryClassificationModel mdl = trainer.fit( datasetBuilder, featureExtractor, labelExtractor );