weka.attributeSelection
Class SVMAttributeEval

java.lang.Object
  extended by weka.attributeSelection.ASEvaluation
      extended by weka.attributeSelection.SVMAttributeEval
All Implemented Interfaces:
java.io.Serializable, AttributeEvaluator, CapabilitiesHandler, OptionHandler, RevisionHandler, TechnicalInformationHandler

public class SVMAttributeEval
extends ASEvaluation
implements AttributeEvaluator, OptionHandler, TechnicalInformationHandler

SVMAttributeEval :

Evaluates the worth of an attribute by using an SVM classifier. Attributes are ranked by the square of the weight assigned by the SVM. Attribute selection for multiclass problems is handled by ranking attributes for each class seperately using a one-vs-all method and then "dealing" from the top of each pile to give a final ranking.

For more information see:

I. Guyon, J. Weston, S. Barnhill, V. Vapnik (2002). Gene selection for cancer classification using support vector machines. Machine Learning. 46:389-422.

BibTeX:

 @article{Guyon2002,
    author = {I. Guyon and J. Weston and S. Barnhill and V. Vapnik},
    journal = {Machine Learning},
    pages = {389-422},
    title = {Gene selection for cancer classification using support vector machines},
    volume = {46},
    year = {2002}
 }
 

Valid options are:

 -X <constant rate of elimination>
  Specify the constant rate of attribute
  elimination per invocation of
  the support vector machine.
  Default = 1.
 -Y <percent rate of elimination>
  Specify the percentage rate of attributes to
  elimination per invocation of
  the support vector machine.
  Trumps constant rate (above threshold).
  Default = 0.
 -Z <threshold for percent elimination>
  Specify the threshold below which 
  percentage attribute elimination
  reverts to the constant method.
 -P <epsilon>
  Specify the value of P (epsilon
  parameter) to pass on to the
  support vector machine.
  Default = 1.0e-25
 -T <tolerance>
  Specify the value of T (tolerance
  parameter) to pass on to the
  support vector machine.
  Default = 1.0e-10
 -C <complexity>
  Specify the value of C (complexity
  parameter) to pass on to the
  support vector machine.
  Default = 1.0
 -N
  Whether the SVM should 0=normalize/1=standardize/2=neither.
  (default 0=normalize)

Version:
$Revision: 1.28 $
Author:
Eibe Frank (eibe@cs.waikato.ac.nz), Mark Hall (mhall@cs.waikato.ac.nz), Kieran Holland
See Also:
Serialized Form

Constructor Summary
SVMAttributeEval()
          Constructor
 
Method Summary
 java.lang.String attsToEliminatePerIterationTipText()
          Returns a tip text for this property suitable for display in the GUI
 void buildEvaluator(Instances data)
          Initializes the evaluator.
 java.lang.String complexityParameterTipText()
          Returns a tip text for this property suitable for display in the GUI
 java.lang.String epsilonParameterTipText()
          Returns a tip text for this property suitable for display in the GUI
 double evaluateAttribute(int attribute)
          Evaluates an attribute by returning the rank of the square of its coefficient in a linear support vector machine.
 java.lang.String filterTypeTipText()
          Returns a tip text for this property suitable for display in the GUI
 int getAttsToEliminatePerIteration()
          Get the constant rate of attribute elimination per iteration
 Capabilities getCapabilities()
          Returns the capabilities of this evaluator.
 double getComplexityParameter()
          Get the value of C used with SMO
 double getEpsilonParameter()
          Get the value of P used with SMO
 SelectedTag getFilterType()
          Get the filtering mode passed to SMO
 java.lang.String[] getOptions()
          Gets the current settings of SVMAttributeEval
 int getPercentThreshold()
          Get the threshold below which percentage elimination reverts to constant elimination.
 int getPercentToEliminatePerIteration()
          Get the percentage rate of attribute elimination per iteration
 java.lang.String getRevision()
          Returns the revision string.
 TechnicalInformation getTechnicalInformation()
          Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.
 double getToleranceParameter()
          Get the value of T used with SMO
 java.lang.String globalInfo()
          Returns a string describing this attribute evaluator
 java.util.Enumeration listOptions()
          Returns an enumeration describing all the available options
static void main(java.lang.String[] args)
          Main method for testing this class.
 java.lang.String percentThresholdTipText()
          Returns a tip text for this property suitable for display in the GUI
 java.lang.String percentToEliminatePerIterationTipText()
          Returns a tip text for this property suitable for display in the GUI
 void setAttsToEliminatePerIteration(int cRate)
          Set the constant rate of attribute elimination per iteration
 void setComplexityParameter(double svmC)
          Set the value of C for SMO
 void setEpsilonParameter(double svmP)
          Set the value of P for SMO
 void setFilterType(SelectedTag newType)
          The filtering mode to pass to SMO
 void setOptions(java.lang.String[] options)
          Parses a given list of options.
 void setPercentThreshold(int pThresh)
          Set the threshold below which percentage elimination reverts to constant elimination.
 void setPercentToEliminatePerIteration(int pRate)
          Set the percentage of attributes to eliminate per iteration
 void setToleranceParameter(double svmT)
          Set the value of T for SMO
 java.lang.String toleranceParameterTipText()
          Returns a tip text for this property suitable for display in the GUI
 java.lang.String toString()
          Return a description of the evaluator
 
Methods inherited from class weka.attributeSelection.ASEvaluation
forName, makeCopies, postProcess
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SVMAttributeEval

public SVMAttributeEval()
Constructor

Method Detail

globalInfo

public java.lang.String globalInfo()
Returns a string describing this attribute evaluator

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

getTechnicalInformation

public TechnicalInformation getTechnicalInformation()
Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.

Specified by:
getTechnicalInformation in interface TechnicalInformationHandler
Returns:
the technical information about this class

listOptions

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

Specified by:
listOptions in interface OptionHandler
Returns:
an enumeration of options

setOptions

public void setOptions(java.lang.String[] options)
                throws java.lang.Exception
Parses a given list of options.

Valid options are:

 -X <constant rate of elimination>
  Specify the constant rate of attribute
  elimination per invocation of
  the support vector machine.
  Default = 1.
 -Y <percent rate of elimination>
  Specify the percentage rate of attributes to
  elimination per invocation of
  the support vector machine.
  Trumps constant rate (above threshold).
  Default = 0.
 -Z <threshold for percent elimination>
  Specify the threshold below which 
  percentage attribute elimination
  reverts to the constant method.
 -P <epsilon>
  Specify the value of P (epsilon
  parameter) to pass on to the
  support vector machine.
  Default = 1.0e-25
 -T <tolerance>
  Specify the value of T (tolerance
  parameter) to pass on to the
  support vector machine.
  Default = 1.0e-10
 -C <complexity>
  Specify the value of C (complexity
  parameter) to pass on to the
  support vector machine.
  Default = 1.0
 -N
  Whether the SVM should 0=normalize/1=standardize/2=neither.
  (default 0=normalize)

Specified by:
setOptions in interface OptionHandler
Parameters:
options - the list of options as an array of strings
Throws:
java.lang.Exception - if an error occurs

getOptions

public java.lang.String[] getOptions()
Gets the current settings of SVMAttributeEval

Specified by:
getOptions in interface OptionHandler
Returns:
an array of strings suitable for passing to setOptions()

attsToEliminatePerIterationTipText

public java.lang.String attsToEliminatePerIterationTipText()
Returns a tip text for this property suitable for display in the GUI

Returns:
tip text string describing this property

percentToEliminatePerIterationTipText

public java.lang.String percentToEliminatePerIterationTipText()
Returns a tip text for this property suitable for display in the GUI

Returns:
tip text string describing this property

percentThresholdTipText

public java.lang.String percentThresholdTipText()
Returns a tip text for this property suitable for display in the GUI

Returns:
tip text string describing this property

epsilonParameterTipText

public java.lang.String epsilonParameterTipText()
Returns a tip text for this property suitable for display in the GUI

Returns:
tip text string describing this property

toleranceParameterTipText

public java.lang.String toleranceParameterTipText()
Returns a tip text for this property suitable for display in the GUI

Returns:
tip text string describing this property

complexityParameterTipText

public java.lang.String complexityParameterTipText()
Returns a tip text for this property suitable for display in the GUI

Returns:
tip text string describing this property

filterTypeTipText

public java.lang.String filterTypeTipText()
Returns a tip text for this property suitable for display in the GUI

Returns:
tip text string describing this property

setAttsToEliminatePerIteration

public void setAttsToEliminatePerIteration(int cRate)
Set the constant rate of attribute elimination per iteration

Parameters:
cRate - the constant rate of attribute elimination per iteration

getAttsToEliminatePerIteration

public int getAttsToEliminatePerIteration()
Get the constant rate of attribute elimination per iteration

Returns:
the constant rate of attribute elimination per iteration

setPercentToEliminatePerIteration

public void setPercentToEliminatePerIteration(int pRate)
Set the percentage of attributes to eliminate per iteration

Parameters:
pRate - percent of attributes to eliminate per iteration

getPercentToEliminatePerIteration

public int getPercentToEliminatePerIteration()
Get the percentage rate of attribute elimination per iteration

Returns:
the percentage rate of attribute elimination per iteration

setPercentThreshold

public void setPercentThreshold(int pThresh)
Set the threshold below which percentage elimination reverts to constant elimination.

Parameters:
pThresh - percent of attributes to eliminate per iteration

getPercentThreshold

public int getPercentThreshold()
Get the threshold below which percentage elimination reverts to constant elimination.

Returns:
the threshold below which percentage elimination stops

setEpsilonParameter

public void setEpsilonParameter(double svmP)
Set the value of P for SMO

Parameters:
svmP - the value of P

getEpsilonParameter

public double getEpsilonParameter()
Get the value of P used with SMO

Returns:
the value of P

setToleranceParameter

public void setToleranceParameter(double svmT)
Set the value of T for SMO

Parameters:
svmT - the value of T

getToleranceParameter

public double getToleranceParameter()
Get the value of T used with SMO

Returns:
the value of T

setComplexityParameter

public void setComplexityParameter(double svmC)
Set the value of C for SMO

Parameters:
svmC - the value of C

getComplexityParameter

public double getComplexityParameter()
Get the value of C used with SMO

Returns:
the value of C

setFilterType

public void setFilterType(SelectedTag newType)
The filtering mode to pass to SMO

Parameters:
newType - the new filtering mode

getFilterType

public SelectedTag getFilterType()
Get the filtering mode passed to SMO

Returns:
the filtering mode

getCapabilities

public Capabilities getCapabilities()
Returns the capabilities of this evaluator.

Specified by:
getCapabilities in interface CapabilitiesHandler
Overrides:
getCapabilities in class ASEvaluation
Returns:
the capabilities of this evaluator
See Also:
Capabilities

buildEvaluator

public void buildEvaluator(Instances data)
                    throws java.lang.Exception
Initializes the evaluator.

Specified by:
buildEvaluator in class ASEvaluation
Parameters:
data - set of instances serving as training data
Throws:
java.lang.Exception - if the evaluator has not been generated successfully

evaluateAttribute

public double evaluateAttribute(int attribute)
                         throws java.lang.Exception
Evaluates an attribute by returning the rank of the square of its coefficient in a linear support vector machine.

Specified by:
evaluateAttribute in interface AttributeEvaluator
Parameters:
attribute - the index of the attribute to be evaluated
Returns:
the "merit" of the attribute
Throws:
java.lang.Exception - if the attribute could not be evaluated

toString

public java.lang.String toString()
Return a description of the evaluator

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

getRevision

public java.lang.String getRevision()
Returns the revision string.

Specified by:
getRevision in interface RevisionHandler
Overrides:
getRevision in class ASEvaluation
Returns:
the revision

main

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

Parameters:
args - the options