All Packages Class Hierarchy This Package Previous Next Index WEKA's home
Class weka.classifiers.functions.supportVector.SMO
java.lang.Object
|
+----weka.classifiers.Classifier
|
+----weka.classifiers.DistributionClassifier
|
+----weka.classifiers.functions.supportVector.SMO
- public class SMO
- extends DistributionClassifier
- implements OptionHandler, WeightedInstancesHandler
Implements John C. Platt's sequential minimal optimization
algorithm for training a support vector classifier using polynomial
or RBF kernels.
This implementation globally replaces all missing values and
transforms nominal attributes into binary ones. It also
normalizes all attributes by default. (Note that the coefficients
in the output are based on the normalized/standardized data, not the
original data.)
Multi-class problems are solved using pairwise classification.
To obtain proper probability estimates, use the option that fits
logistic regression models to the outputs of the support vector
machine. In the multi-class case the predicted probabilities
will be coupled using Hastie and Tibshirani's pairwise coupling
method.
Note: for improved speed standardization should be turned off when
operating on SparseInstances.
For more information on the SMO algorithm, see
J. Platt (1998). Fast Training of Support Vector
Machines using Sequential Minimal Optimization. Advances in Kernel
Methods - Support Vector Learning, B. Schölkopf, C. Burges, and
A. Smola, eds., MIT Press.
S.S. Keerthi, S.K. Shevade, C. Bhattacharyya, K.R.K. Murthy,
Improvements to Platt's SMO Algorithm for SVM Classifier Design.
Neural Computation, 13(3), pp 637-649, 2001.
Valid options are:
-C num
The complexity constant C. (default 1)
-E num
The exponent for the polynomial kernel. (default 1)
-G num
Gamma for the RBF kernel. (default 0.01)
-N <0|1|2>
Whether to 0=normalize/1=standardize/2=neither. (default 0=normalize)
-F
Feature-space normalization (only for non-linear polynomial kernels).
-O
Use lower-order terms (only for non-linear polynomial kernels).
-R
Use the RBF kernel. (default poly)
-A num
Sets the size of the kernel cache. Should be a prime number.
(default 1000003)
-T num
Sets the tolerance parameter. (default 1.0e-3)
-P num
Sets the epsilon for round-off error. (default 1.0e-12)
-M
Fit logistic models to SVM outputs.
-V num
Number of runs for cross-validation used to generate data
for logistic models. (default -1, use training data)
-W num
Random number seed for cross-validation. (default 1)
- Version:
- $Revision: 1.1 $
- Author:
- Eibe Frank (eibe@cs.waikato.ac.nz)
- Author:
- Shane Legg (shane@intelligenesis.net) (sparse vector code)
- Author:
- Stuart Inglis (stuart@reeltwo.com) (sparse vector code)
FILTER_NONE-
FILTER_NORMALIZE- The filter to apply to the training data
FILTER_STANDARDIZE-
TAGS_FILTER-
SMO()
-
attributeNames()
- Returns the attribute names.
bias()
- Returns the bias of each binary SMO.
buildClassifier(Instances)
- Method for building the classifier.
classAttributeNames()
-
distributionForInstance(Instance)
- Estimates class probabilities for given instance.
getBuildLogisticModels()
- Get the value of buildLogisticModels.
getC()
- Get the value of C.
getCacheSize()
- Get the size of the kernel cache
getEpsilon()
- Get the value of epsilon.
getExponent()
- Get the value of exponent.
getFeatureSpaceNormalization()
- Check whether feature spaces is being normalized.
getFilterType()
- Gets how the training data will be transformed.
getGamma()
- Get the value of gamma.
getLowerOrderTerms()
- Check whether lower-order terms are being used.
getNumFolds()
- Get the value of numFolds.
getOptions()
- Gets the current settings of the classifier.
getRandomSeed()
- Get the value of randomSeed.
getToleranceParameter()
- Get the value of tolerance parameter.
getUseRBF()
- Check if the RBF kernel is to be used.
listOptions()
- Returns an enumeration describing the available options.
main(String[])
- Main method for testing this class.
numClassAttributeValues()
-
obtainVotes(Instance)
- Returns an array of votes for the given instance.
pairwiseCoupling(double[][], double[][])
- Implements pairwise coupling.
setBuildLogisticModels(boolean)
- Set the value of buildLogisticModels.
setC(double)
- Set the value of C.
setCacheSize(int)
- Set the value of the kernel cache.
setEpsilon(double)
- Set the value of epsilon.
setExponent(double)
- Set the value of exponent.
setFeatureSpaceNormalization(boolean)
- Set whether feature space is normalized.
setFilterType(SelectedTag)
- Sets how the training data will be transformed.
setGamma(double)
- Set the value of gamma.
setLowerOrderTerms(boolean)
- Set whether lower-order terms are to be used.
setNumFolds(int)
- Set the value of numFolds.
setOptions(String[])
- Parses a given list of options.
setRandomSeed(int)
- Set the value of randomSeed.
setToleranceParameter(double)
- Set the value of tolerance parameter.
setUseRBF(boolean)
- Set if the RBF kernel is to be used.
sparseIndices()
- Returns the indices in sparse format.
sparseWeights()
- Returns the weights in sparse format.
toString()
- Prints out the classifier.
turnChecksOff()
- Turns off checks for missing values, etc.
turnChecksOn()
- Turns on checks for missing values, etc.
FILTER_NORMALIZE
public static final int FILTER_NORMALIZE
The filter to apply to the training data
FILTER_STANDARDIZE
public static final int FILTER_STANDARDIZE
FILTER_NONE
public static final int FILTER_NONE
TAGS_FILTER
public static final Tag[] TAGS_FILTER
SMO
public SMO()
turnChecksOff
public void turnChecksOff()
Turns off checks for missing values, etc. Use with caution.
turnChecksOn
public void turnChecksOn()
Turns on checks for missing values, etc.
buildClassifier
public void buildClassifier(Instances insts) throws java.lang.Exception
Method for building the classifier. Implements a one-against-one
wrapper for multi-class problems.
- Parameters:
insts - the set of training instances
- Throws:
- java.lang.Exception - if the classifier can't be built successfully
- Overrides:
- buildClassifier in class Classifier
distributionForInstance
public double[] distributionForInstance(Instance inst) throws java.lang.Exception
Estimates class probabilities for given instance.
- Overrides:
- distributionForInstance in class DistributionClassifier
pairwiseCoupling
public double[] pairwiseCoupling(double n[][],
double r[][])
Implements pairwise coupling.
- Parameters:
n - the sum of weights used to train each model
r - the probability estimate from each model
- Returns:
- the coupled estimates
obtainVotes
public int[] obtainVotes(Instance inst) throws java.lang.Exception
Returns an array of votes for the given instance.
- Parameters:
inst - the instance
- Returns:
- array of votex
- Throws:
- java.lang.Exception - if something goes wrong
sparseWeights
public double[][][] sparseWeights()
Returns the weights in sparse format.
sparseIndices
public int[][][] sparseIndices()
Returns the indices in sparse format.
bias
public double[][] bias()
Returns the bias of each binary SMO.
numClassAttributeValues
public int numClassAttributeValues()
classAttributeNames
public java.lang.String[] classAttributeNames()
attributeNames
public java.lang.String[][][] attributeNames()
Returns the attribute names.
listOptions
public java.util.Enumeration listOptions()
Returns an enumeration describing the available options.
- Returns:
- an enumeration of all the available options.
setOptions
public void setOptions(java.lang.String options[]) throws java.lang.Exception
Parses a given list of options. Valid options are:
-C num
The complexity constant C. (default 1)
-E num
The exponent for the polynomial kernel. (default 1)
-G num
Gamma for the RBF kernel. (default 0.01)
-N <0|1|2>
Whether to 0=normalize/1=standardize/2=neither. (default 0=normalize)
-F
Feature-space normalization (only for non-linear polynomial kernels).
-O
Use lower-order terms (only for non-linear polynomial kernels).
-R
Use RBF kernel (default poly).
-A num
Sets the size of the kernel cache. Should be a prime number. (default 1000003)
-T num
Sets the tolerance parameter. (default 1.0e-3)
-P num
Sets the epsilon for round-off error. (default 1.0e-12)
-M
Fit logistic models to SVM outputs.
-V num
Number of runs for cross-validation used to generate data
for logistic models. (default -1, use training data)
-W num
Random number seed for cross-validation. (default 1)
- Parameters:
options - the list of options as an array of strings
- Throws:
- java.lang.Exception - if an option is not supported
getOptions
public java.lang.String[] getOptions()
Gets the current settings of the classifier.
- Returns:
- an array of strings suitable for passing to setOptions
getExponent
public double getExponent()
Get the value of exponent.
- Returns:
- Value of exponent.
setExponent
public void setExponent(double v)
Set the value of exponent. If linear kernel
is used, rescaling and lower-order terms are
turned off.
- Parameters:
v - Value to assign to exponent.
getGamma
public double getGamma()
Get the value of gamma.
- Returns:
- Value of gamma.
setGamma
public void setGamma(double v)
Set the value of gamma.
- Parameters:
v - Value to assign to gamma.
getC
public double getC()
Get the value of C.
- Returns:
- Value of C.
setC
public void setC(double v)
Set the value of C.
- Parameters:
v - Value to assign to C.
getToleranceParameter
public double getToleranceParameter()
Get the value of tolerance parameter.
- Returns:
- Value of tolerance parameter.
setToleranceParameter
public void setToleranceParameter(double v)
Set the value of tolerance parameter.
- Parameters:
v - Value to assign to tolerance parameter.
getEpsilon
public double getEpsilon()
Get the value of epsilon.
- Returns:
- Value of epsilon.
setEpsilon
public void setEpsilon(double v)
Set the value of epsilon.
- Parameters:
v - Value to assign to epsilon.
getCacheSize
public int getCacheSize()
Get the size of the kernel cache
- Returns:
- Size of kernel cache.
setCacheSize
public void setCacheSize(int v)
Set the value of the kernel cache.
- Parameters:
v - Size of kernel cache.
getFilterType
public SelectedTag getFilterType()
Gets how the training data will be transformed. Will be one of
FILTER_NORMALIZE, FILTER_STANDARDIZE, FILTER_NONE.
- Returns:
- the filtering mode
setFilterType
public void setFilterType(SelectedTag newType)
Sets how the training data will be transformed. Should be one of
FILTER_NORMALIZE, FILTER_STANDARDIZE, FILTER_NONE.
- Parameters:
newType - the new filtering mode
getUseRBF
public boolean getUseRBF()
Check if the RBF kernel is to be used.
- Returns:
- true if RBF
setUseRBF
public void setUseRBF(boolean v)
Set if the RBF kernel is to be used.
- Parameters:
v - true if RBF
getFeatureSpaceNormalization
public boolean getFeatureSpaceNormalization() throws java.lang.Exception
Check whether feature spaces is being normalized.
- Returns:
- true if feature space is normalized.
setFeatureSpaceNormalization
public void setFeatureSpaceNormalization(boolean v) throws java.lang.Exception
Set whether feature space is normalized.
- Parameters:
v - true if feature space is to be normalized.
getLowerOrderTerms
public boolean getLowerOrderTerms()
Check whether lower-order terms are being used.
- Returns:
- Value of lowerOrder.
setLowerOrderTerms
public void setLowerOrderTerms(boolean v)
Set whether lower-order terms are to be used. Defaults
to false if a linear machine is built.
- Parameters:
v - Value to assign to lowerOrder.
getBuildLogisticModels
public boolean getBuildLogisticModels()
Get the value of buildLogisticModels.
- Returns:
- Value of buildLogisticModels.
setBuildLogisticModels
public void setBuildLogisticModels(boolean newbuildLogisticModels)
Set the value of buildLogisticModels.
- Parameters:
newbuildLogisticModels - Value to assign to buildLogisticModels.
getNumFolds
public int getNumFolds()
Get the value of numFolds.
- Returns:
- Value of numFolds.
setNumFolds
public void setNumFolds(int newnumFolds)
Set the value of numFolds.
- Parameters:
newnumFolds - Value to assign to numFolds.
getRandomSeed
public int getRandomSeed()
Get the value of randomSeed.
- Returns:
- Value of randomSeed.
setRandomSeed
public void setRandomSeed(int newrandomSeed)
Set the value of randomSeed.
- Parameters:
newrandomSeed - Value to assign to randomSeed.
toString
public java.lang.String toString()
Prints out the classifier.
- Returns:
- a description of the classifier as a string
- Overrides:
- toString in class java.lang.Object
main
public static void main(java.lang.String argv[])
Main method for testing this class.
All Packages Class Hierarchy This Package Previous Next Index WEKA's home