weka.classifiers.functions
Class SMOreg

java.lang.Object
  |
  +--weka.classifiers.Classifier
        |
        +--weka.classifiers.functions.SMOreg
All Implemented Interfaces:
java.lang.Cloneable, OptionHandler, java.io.Serializable, WeightedInstancesHandler

public class SMOreg
extends Classifier
implements OptionHandler, WeightedInstancesHandler

Implements Alex J.Smola and Bernhard Scholkopf sequential minimal optimization algorithm for training a support vector regression 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.) For more information on the SMO algorithm, see

Alex J. Smola, Bernhard Scholkopf (1998). A Tutorial on Support Vector Regression. NeuroCOLT2 Technical Report Series - NC2-TR-1998-030.

S.K. Shevade, S.S. Keerthi, C. Bhattacharyya, K.R.K. Murthy, Improvements to SMO Algorithm for SVM Regression. Technical Report CD-99-16, Control Division Dept of Mechanical and Production Engineering, National University of Singapore.

Version:
$$
Author:
Sylvain Roy (sro33@student.canterbury.ac.nz)
See Also:
Serialized Form

Field Summary
static int FILTER_NONE
           
static int FILTER_NORMALIZE
          The filter to apply to the training data
static int FILTER_STANDARDIZE
           
static Tag[] TAGS_FILTER
           
 
Constructor Summary
SMOreg()
           
 
Method Summary
 void buildClassifier(Instances insts)
          Method for building the classifier.
 java.lang.String cacheSizeTipText()
          Returns the tip text for this property
 double classifyInstance(Instance inst)
          Classifies a given instance.
 java.lang.String cTipText()
          Returns the tip text for this property
 java.lang.String epsilonTipText()
          Returns the tip text for this property
 java.lang.String epsTipText()
          Returns the tip text for this property
 java.lang.String exponentTipText()
          Returns the tip text for this property
 java.lang.String featureSpaceNormalizationTipText()
          Returns the tip text for this property
 java.lang.String filterTypeTipText()
          Returns the tip text for this property
 java.lang.String gammaTipText()
          Returns the tip text for this property
 double getC()
          Get the value of C.
 int getCacheSize()
          Get the size of the kernel cache
 double getEps()
          Get the value of eps.
 double getEpsilon()
          Get the value of epsilon.
 double getExponent()
          Get the value of exponent.
 boolean getFeatureSpaceNormalization()
          Check whether feature spaces is being normalized.
 SelectedTag getFilterType()
          Gets how the training data will be transformed.
 double getGamma()
          Get the value of gamma.
 boolean getLowerOrderTerms()
          Check whether lower-order terms are being used.
 java.lang.String[] getOptions()
          Gets the current settings of the classifier.
 double getToleranceParameter()
          Get the value of tolerance parameter.
 boolean getUseRBF()
          Check if the RBF kernel is to be used.
 java.lang.String globalInfo()
          Returns a string describing classifier
 java.util.Enumeration listOptions()
          Returns an enumeration describing the available options.
 java.lang.String lowerOrderTermsTipText()
          Returns the tip text for this property
static void main(java.lang.String[] argv)
          Main method for testing this class.
 void setC(double v)
          Set the value of C.
 void setCacheSize(int v)
          Set the value of the kernel cache.
 void setEps(double v)
          Set the value of eps.
 void setEpsilon(double v)
          Set the value of epsilon.
 void setExponent(double v)
          Set the value of exponent.
 void setFeatureSpaceNormalization(boolean v)
          Set whether feature space is normalized.
 void setFilterType(SelectedTag newType)
          Sets how the training data will be transformed.
 void setGamma(double v)
          Set the value of gamma.
 void setLowerOrderTerms(boolean v)
          Set whether lower-order terms are to be used.
 void setOptions(java.lang.String[] options)
          Parses a given list of options.
 void setToleranceParameter(double v)
          Set the value of tolerance parameter.
 void setUseRBF(boolean v)
          Set if the RBF kernel is to be used.
 java.lang.String toleranceParameterTipText()
          Returns the tip text for this property
 java.lang.String toString()
          Prints out the classifier.
 void turnChecksOff()
          Turns off checks for missing values, etc.
 void turnChecksOn()
          Turns on checks for missing values, etc.
 java.lang.String useRBFTipText()
          Returns the tip text for this property
 
Methods inherited from class weka.classifiers.Classifier
debugTipText, distributionForInstance, forName, getDebug, makeCopies, setDebug
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

FILTER_NORMALIZE

public static final int FILTER_NORMALIZE
The filter to apply to the training data

See Also:
Constant Field Values

FILTER_STANDARDIZE

public static final int FILTER_STANDARDIZE
See Also:
Constant Field Values

FILTER_NONE

public static final int FILTER_NONE
See Also:
Constant Field Values

TAGS_FILTER

public static final Tag[] TAGS_FILTER
Constructor Detail

SMOreg

public SMOreg()
Method Detail

globalInfo

public java.lang.String globalInfo()
Returns a string describing classifier

Returns:
a description suitable for displaying in the explorer/experimenter gui

buildClassifier

public void buildClassifier(Instances insts)
                     throws java.lang.Exception
Method for building the classifier.

Specified by:
buildClassifier in class Classifier
Parameters:
insts - the set of training instances
Throws:
java.lang.Exception - if the classifier can't be built successfully

classifyInstance

public double classifyInstance(Instance inst)
                        throws java.lang.Exception
Classifies a given instance.

Overrides:
classifyInstance in class Classifier
Parameters:
inst - the instance to be classified
Returns:
the classification
Throws:
java.lang.Exception - if instance could not be classified successfully

listOptions

public java.util.Enumeration listOptions()
Returns an enumeration describing the available options.

Specified by:
listOptions in interface OptionHandler
Overrides:
listOptions in class Classifier
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:

-S num
The amount up to which deviation are tolerated (epsilon). (default 1e-3) Watch out, the value of epsilon is used with the (normalized/standardize) data

-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)

Specified by:
setOptions in interface OptionHandler
Overrides:
setOptions in class Classifier
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.

Specified by:
getOptions in interface OptionHandler
Overrides:
getOptions in class Classifier
Returns:
an array of strings suitable for passing to setOptions

filterTypeTipText

public java.lang.String filterTypeTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

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

exponentTipText

public java.lang.String exponentTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

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.

gammaTipText

public java.lang.String gammaTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

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.

cTipText

public java.lang.String cTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

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.

toleranceParameterTipText

public java.lang.String toleranceParameterTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

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.

epsTipText

public java.lang.String epsTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

getEps

public double getEps()
Get the value of eps.

Returns:
Value of eps.

setEps

public void setEps(double v)
Set the value of eps.

Parameters:
v - Value to assign to epsilon.

epsilonTipText

public java.lang.String epsilonTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

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.

cacheSizeTipText

public java.lang.String cacheSizeTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

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.

useRBFTipText

public java.lang.String useRBFTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

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

featureSpaceNormalizationTipText

public java.lang.String featureSpaceNormalizationTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

getFeatureSpaceNormalization

public boolean getFeatureSpaceNormalization()
                                     throws java.lang.Exception
Check whether feature spaces is being normalized.

Returns:
true if feature space is normalized.
java.lang.Exception

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.
java.lang.Exception

lowerOrderTermsTipText

public java.lang.String lowerOrderTermsTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

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.

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.


toString

public java.lang.String toString()
Prints out the classifier.

Overrides:
toString in class java.lang.Object
Returns:
a description of the classifier as a string

main

public static void main(java.lang.String[] argv)
Main method for testing this class.



Copyright (c) 2003 David Lindsay, Computer Learning Research Centre, Dept. Computer Science, Royal Holloway, University of London