SupportVectorMachineTKernel Class |
Namespace: Accord.MachineLearning.VectorMachines
[SerializableAttribute] public class SupportVectorMachine<TKernel> : SupportVectorMachine<TKernel, double[]> where TKernel : Object, IKernel<double[]>
The SupportVectorMachineTKernel type exposes the following members.
Name | Description | |
---|---|---|
SupportVectorMachineTKernel |
Initializes a new instance of the SupportVectorMachineTKernel class.
|
Name | Description | |
---|---|---|
Inputs | Obsolete.
Gets the number of inputs accepted by this machine.
(Inherited from SupportVectorMachineTKernel, TInput.) | |
IsCompact | Obsolete.
Obsolete.
(Inherited from SupportVectorMachineTKernel, TInput.) | |
IsProbabilistic |
Gets whether this machine has been calibrated to
produce probabilistic outputs (through the Probability(TInput)
method).
(Inherited from SupportVectorMachineTKernel, TInput.) | |
Kernel |
Gets or sets the kernel used by this machine.
(Inherited from SupportVectorMachineTKernel, TInput.) | |
NumberOfClasses |
Gets the number of classes expected and recognized by the classifier.
(Inherited from ClassifierBaseTInput, TClasses.) | |
NumberOfInputs |
Gets the number of inputs accepted by the model.
(Inherited from TransformBaseTInput, TOutput.) | |
NumberOfOutputs |
Gets the number of outputs generated by the model.
(Inherited from TransformBaseTInput, TOutput.) | |
SupportVectors |
Gets or sets the collection of support vectors used by this machine.
(Inherited from SupportVectorMachineTKernel, TInput.) | |
Threshold |
Gets or sets the threshold (bias) term for this machine.
(Inherited from SupportVectorMachineTKernel, TInput.) | |
Weights |
Gets or sets the collection of weights used by this machine.
(Inherited from SupportVectorMachineTKernel, TInput.) |
Name | Description | |
---|---|---|
Clone |
Creates a new object that is a copy of the current instance.
(Overrides SupportVectorMachineTKernel, TInputClone.) | |
Compress |
If this machine has a linear kernel, compresses all
support vectors into a single parameter vector.
(Inherited from SupportVectorMachineTKernel, TInput.) | |
Compute(TInput) | Obsolete.
Computes the given input to produce the corresponding output.
(Inherited from SupportVectorMachineTKernel, TInput.) | |
Compute(TInput, Double) | Obsolete.
Computes the given input to produce the corresponding output.
(Inherited from SupportVectorMachineTKernel, TInput.) | |
Decide(TInput) |
Computes class-label decisions for a given set of input vectors.
(Inherited from ClassifierBaseTInput, TClasses.) | |
Decide(TInput) |
Computes a class-label decision for a given input.
(Inherited from SupportVectorMachineTKernel, TInput.) | |
Decide(TInput, Boolean) |
Computes class-label decisions for the given input.
(Inherited from BinaryClassifierBaseTInput.) | |
Decide(TInput, Boolean) |
Computes a class-label decision for a given input.
(Inherited from BinaryScoreClassifierBaseTInput.) | |
Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
LogLikelihood(TInput) |
Predicts a class label vector for the given input vector, returning the
log-likelihood that the input vector belongs to its predicted class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
LogLikelihood(TInput) |
Predicts a class label vector for the given input vector, returning the
log-likelihood that the input vector belongs to its predicted class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
LogLikelihood(TInput, Boolean) |
Predicts a class label vector for the given input vector, returning the
log-likelihood that the input vector belongs to its predicted class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
LogLikelihood(TInput, Int32) |
Predicts a class label for each input vector, returning the
log-likelihood that each vector belongs to its predicted class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
LogLikelihood(TInput, Double) |
Predicts a class label vector for the given input vectors, returning the
log-likelihood that the input vector belongs to its predicted class.
(Inherited from SupportVectorMachineTKernel, TInput.) | |
LogLikelihood(TInput, Boolean, Double) |
Predicts a class label for each input vector, returning the
log-likelihood that each vector belongs to its predicted class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
LogLikelihoods(TInput) |
Computes the log-likelihood that the given input
vector belongs to each of the possible classes.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
LogLikelihoods(TInput) |
Computes the log-likelihoods that the given input
vectors belongs to each of the possible classes.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
LogLikelihoods(TInput, Boolean) |
Predicts a class label vector for the given input vector, returning the
log-likelihoods of the input vector belonging to each possible class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
LogLikelihoods(TInput, Double) |
Computes the log-likelihood that the given input
vector belongs to each of the possible classes.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
LogLikelihoods(TInput, Double) |
Computes the log-likelihoods that the given input
vectors belongs to each of the possible classes.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
LogLikelihoods(TInput, Int32) |
Predicts a class label vector for each input vector, returning the
log-likelihoods of the input vector belonging to each possible class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
LogLikelihoods(TInput, Boolean, Double) |
Predicts a class label vector for the given input vector, returning the
log-likelihoods of the input vector belonging to each possible class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
LogLikelihoods(TInput, Boolean, Double) |
Predicts a class label vector for each input vector, returning the
log-likelihoods of the input vector belonging to each possible class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
Probabilities(TInput) |
Computes the probabilities that the given input
vector belongs to each of the possible classes.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
Probabilities(TInput) |
Computes the probabilities that the given input
vectors belongs to each of the possible classes.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
Probabilities(TInput, Boolean) |
Predicts a class label vector for the given input vector, returning the
probabilities of the input vector belonging to each possible class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
Probabilities(TInput, Double) |
Computes the probabilities that the given input
vector belongs to each of the possible classes.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
Probabilities(TInput, Double) |
Computes the probabilities that the given input
vectors belongs to each of the possible classes.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
Probabilities(TInput, Int32) |
Predicts a class label vector for each input vector, returning the
probabilities of the input vector belonging to each possible class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
Probabilities(TInput, Boolean, Double) |
Predicts a class label vector for the given input vector, returning the
probabilities of the input vector belonging to each possible class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
Probabilities(TInput, Boolean, Double) |
Predicts a class label vector for each input vector, returning the
probabilities of the input vector belonging to each possible class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
Probability(TInput) |
Predicts a class label for the given input vector, returning the
probability that the input vector belongs to its predicted class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
Probability(TInput) |
Predicts a class label for the given input vector, returning the
probability that the input vector belongs to its predicted class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
Probability(TInput, Boolean) |
Predicts a class label for the given input vector, returning the
probability that the input vector belongs to its predicted class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
Probability(TInput, Double) |
Predicts a class label for the given input vector, returning the
probability that the input vector belongs to its predicted class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
Probability(TInput, Int32) |
Predicts a class label for each input vector, returning the
probability that each vector belongs to its predicted class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
Probability(TInput, Boolean, Double) |
Predicts a class label for each input vector, returning the
probability that each vector belongs to its predicted class.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
Score(TInput) |
Computes a numerical score measuring the association between
the given input vector and its most strongly
associated class (as predicted by the classifier).
(Inherited from BinaryScoreClassifierBaseTInput.) | |
Score(TInput) |
Computes a numerical score measuring the association between
the given input vector and its most strongly
associated class (as predicted by the classifier).
(Inherited from BinaryScoreClassifierBaseTInput.) | |
Score(TInput, Boolean) |
Predicts a class label for the input vector, returning a
numerical score measuring the strength of association of the
input vector to its most strongly related class.
(Inherited from BinaryScoreClassifierBaseTInput.) | |
Score(TInput, Boolean) |
Predicts a class label for each input vector, returning a
numerical score measuring the strength of association of the
input vector to the most strongly related class.
(Inherited from BinaryScoreClassifierBaseTInput.) | |
Score(TInput, Double) |
Computes a numerical score measuring the association between
the given input vector and each class.
(Inherited from SupportVectorMachineTKernel, TInput.) | |
Score(TInput, Boolean, Double) |
Predicts a class label for each input vector, returning a
numerical score measuring the strength of association of the
input vector to the most strongly related class.
(Inherited from BinaryScoreClassifierBaseTInput.) | |
Scores(TInput) |
Computes a numerical score measuring the association between
the given input vector and each class.
(Inherited from BinaryScoreClassifierBaseTInput.) | |
Scores(TInput) |
Computes a numerical score measuring the association between
the given input vector and each class.
(Inherited from BinaryScoreClassifierBaseTInput.) | |
Scores(TInput, Boolean) |
Predicts a class label vector for the given input vector, returning a
numerical score measuring the strength of association of the input vector
to each of the possible classes.
(Inherited from BinaryScoreClassifierBaseTInput.) | |
Scores(TInput, Double) |
Computes a numerical score measuring the association between
the given input vector and each class.
(Inherited from BinaryScoreClassifierBaseTInput.) | |
Scores(TInput, Boolean) |
Predicts a class label vector for each input vector, returning a
numerical score measuring the strength of association of the input vector
to each of the possible classes.
(Inherited from BinaryScoreClassifierBaseTInput.) | |
Scores(TInput, Double) |
Computes a numerical score measuring the association between
the given input vector and each class.
(Inherited from BinaryScoreClassifierBaseTInput.) | |
Scores(TInput, Boolean, Double) |
Predicts a class label vector for the given input vector, returning a
numerical score measuring the strength of association of the input vector
to each of the possible classes.
(Inherited from BinaryScoreClassifierBaseTInput.) | |
Scores(TInput, Boolean, Double) |
Predicts a class label vector for each input vector, returning a
numerical score measuring the strength of association of the input vector
to each of the possible classes.
(Inherited from BinaryScoreClassifierBaseTInput.) | |
ToMulticlass |
Views this instance as a multi-class generative classifier,
giving access to more advanced methods, such as the prediction
of integer labels.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
ToMultilabel |
Views this instance as a multi-label generative classifier,
giving access to more advanced methods, such as the prediction
of one-hot vectors.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
ToString | Returns a string that represents the current object. (Inherited from Object.) | |
ToWeights |
Converts a Linear-kernel machine into an array of
linear coefficients. The first position in the array is the
Threshold value. If this
machine is not linear, an exception will be thrown.
(Overrides SupportVectorMachineTKernel, TInputToWeights.) | |
Transform(TInput) |
Applies the transformation to an input, producing an associated output.
(Inherited from ClassifierBaseTInput, TClasses.) | |
Transform(TInput) |
Applies the transformation to a set of input vectors,
producing an associated set of output vectors.
(Inherited from TransformBaseTInput, TOutput.) | |
Transform(TInput, Boolean) |
Applies the transformation to an input, producing an associated output.
(Inherited from BinaryClassifierBaseTInput.) | |
Transform(TInput, Int32) |
Applies the transformation to an input, producing an associated output.
(Inherited from BinaryClassifierBaseTInput.) | |
Transform(TInput, Boolean) |
Applies the transformation to an input, producing an associated output.
(Inherited from BinaryClassifierBaseTInput.) | |
Transform(TInput, Int32) |
Applies the transformation to an input, producing an associated output.
(Inherited from BinaryClassifierBaseTInput.) | |
Transform(TInput, Int32) |
Applies the transformation to an input, producing an associated output.
(Inherited from BinaryClassifierBaseTInput.) | |
Transform(TInput, Double) |
Applies the transformation to a set of input vectors,
producing an associated set of output vectors.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
Transform(TInput, Double) |
Applies the transformation to a set of input vectors,
producing an associated set of output vectors.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
Transform(TInput, Double) |
Applies the transformation to a set of input vectors,
producing an associated set of output vectors.
(Inherited from BinaryLikelihoodClassifierBaseTInput.) | |
Transform(TInput, TClasses) |
Applies the transformation to an input, producing an associated output.
(Inherited from ClassifierBaseTInput, TClasses.) |
Name | Description | |
---|---|---|
HasMethod |
Checks whether an object implements a method with the given name.
(Defined by ExtensionMethods.) | |
IsEqual |
Compares two objects for equality, performing an elementwise
comparison if the elements are vectors or matrices.
(Defined by Matrix.) | |
To(Type) | Overloaded.
Converts an object into another type, irrespective of whether
the conversion can be done at compile time or not. This can be
used to convert generic types to numeric types during runtime.
(Defined by ExtensionMethods.) | |
ToT | Overloaded.
Converts an object into another type, irrespective of whether
the conversion can be done at compile time or not. This can be
used to convert generic types to numeric types during runtime.
(Defined by ExtensionMethods.) |
The original optimal hyperplane algorithm (SVM) proposed by Vladimir Vapnik in 1963 was a linear classifier. However, in 1992, Bernhard Boser, Isabelle Guyon and Vapnik suggested a way to create non-linear classifiers by applying the kernel trick (originally proposed by Aizerman et al.) to maximum-margin hyperplanes. The resulting algorithm is formally similar, except that every dot product is replaced by a non-linear kernel function.
This allows the algorithm to fit the maximum-margin hyperplane in a transformed feature space. The transformation may be non-linear and the transformed space high dimensional; thus though the classifier is a hyperplane in the high-dimensional feature space, it may be non-linear in the original input space.
The machines are also able to learn sequence classification problems in which the input vectors can have arbitrary length. For an example on how to do that, please see the documentation page for the DynamicTimeWarping kernel.
References:
The first example shows how to learn an SVM using a standard kernel that operates on vectors of doubles.
// As an example, we will try to learn a decision machine // that can replicate the "exclusive-or" logical function: double[][] inputs = { new double[] { 0, 0 }, // the XOR function takes two booleans new double[] { 0, 1 }, // and computes their exclusive or: the new double[] { 1, 0 }, // output is true only if the two booleans new double[] { 1, 1 } // are different }; int[] xor = // this is the output of the xor function { 0, // 0 xor 0 = 0 (inputs are equal) 1, // 0 xor 1 = 1 (inputs are different) 1, // 1 xor 0 = 1 (inputs are different) 0, // 1 xor 1 = 0 (inputs are equal) }; // Now, we can create the sequential minimal optimization teacher var learn = new SequentialMinimalOptimization<Gaussian>() { UseComplexityHeuristic = true, UseKernelEstimation = true }; // And then we can obtain a trained SVM by calling its Learn method SupportVectorMachine<Gaussian> svm = learn.Learn(inputs, xor); // Finally, we can obtain the decisions predicted by the machine: bool[] prediction = svm.Decide(inputs);
The second example shows how to learn an SVM using a Sparse kernel that operates on sparse vectors.
// As an example, we will try to learn a decision machine // that can replicate the "exclusive-or" logical function: Sparse<double>[] inputs = { Sparse.FromDense(new double[] { 0, 0 }), // the XOR function takes two booleans Sparse.FromDense(new double[] { 0, 1 }), // and computes their exclusive or: the Sparse.FromDense(new double[] { 1, 0 }), // output is true only if the two booleans Sparse.FromDense(new double[] { 1, 1 }) // are different }; int[] xor = // this is the output of the xor function { 0, // 0 xor 0 = 0 (inputs are equal) 1, // 0 xor 1 = 1 (inputs are different) 1, // 1 xor 0 = 1 (inputs are different) 0, // 1 xor 1 = 0 (inputs are equal) }; // Now, we can create the sequential minimal optimization teacher var learn = new SequentialMinimalOptimization<Gaussian, Sparse<double>>() { UseComplexityHeuristic = true, UseKernelEstimation = true }; // And then we can obtain a trained SVM by calling its Learn method var svm = learn.Learn(inputs, xor); // Finally, we can obtain the decisions predicted by the machine: bool[] prediction = svm.Decide(inputs);