weka.attributeSelection
Class CfsSubsetEval

java.lang.Object
  extended by weka.attributeSelection.ASEvaluation
      extended by weka.attributeSelection.SubsetEvaluator
          extended by weka.attributeSelection.CfsSubsetEval
All Implemented Interfaces:
java.io.Serializable, CapabilitiesHandler, OptionHandler, TechnicalInformationHandler

public class CfsSubsetEval
extends SubsetEvaluator
implements OptionHandler, TechnicalInformationHandler

CfsSubsetEval :

Evaluates the worth of a subset of attributes by considering the individual predictive ability of each feature along with the degree of redundancy between them.

Subsets of features that are highly correlated with the class while having low intercorrelation are preferred.

For more information see:

M. A. Hall (1998). Correlation-based Feature Subset Selection for Machine Learning. Hamilton, New Zealand.

BibTeX:

 @phdthesis{Hall1998,
    address = {Hamilton, New Zealand},
    author = {M. A. Hall},
    school = {University of Waikato},
    title = {Correlation-based Feature Subset Selection for Machine Learning},
    year = {1998}
 }
 

Valid options are:

 -M
  Treat missing values as a seperate value.
 -L
  Don't include locally predictive attributes.

Version:
$Revision: 1.26 $
Author:
Mark Hall (mhall@cs.waikato.ac.nz)
See Also:
Discretize, Serialized Form

Constructor Summary
CfsSubsetEval()
          Constructor
 
Method Summary
 void buildEvaluator(Instances data)
          Generates a attribute evaluator.
 double evaluateSubset(java.util.BitSet subset)
          evaluates a subset of attributes
 Capabilities getCapabilities()
          Returns the capabilities of this evaluator.
 boolean getLocallyPredictive()
          Return true if including locally predictive attributes
 boolean getMissingSeperate()
          Return true is missing is treated as a seperate value
 java.lang.String[] getOptions()
          Gets the current settings of CfsSubsetEval
 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.
 java.lang.String globalInfo()
          Returns a string describing this attribute evaluator
 java.util.Enumeration listOptions()
          Returns an enumeration describing the available options.
 java.lang.String locallyPredictiveTipText()
          Returns the tip text for this property
static void main(java.lang.String[] args)
          Main method for testing this class.
 java.lang.String missingSeperateTipText()
          Returns the tip text for this property
 int[] postProcess(int[] attributeSet)
          Calls locallyPredictive in order to include locally predictive attributes (if requested).
 void setLocallyPredictive(boolean b)
          Include locally predictive attributes
 void setMissingSeperate(boolean b)
          Treat missing as a seperate value
 void setOptions(java.lang.String[] options)
          Parses and sets a given list of options.
 java.lang.String toString()
          returns a string describing CFS
 
Methods inherited from class weka.attributeSelection.ASEvaluation
forName, makeCopies
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CfsSubsetEval

public CfsSubsetEval()
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 the available options.

Specified by:
listOptions in interface OptionHandler
Returns:
an enumeration of all the available options.

setOptions

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

Valid options are:

 -M
  Treat missing values as a seperate value.
 -L
  Don't include locally predictive attributes.

Specified by:
setOptions in interface OptionHandler
Parameters:
options - the list of options as an array of strings
Throws:
java.lang.Exception - if an option is not supported

locallyPredictiveTipText

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

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

setLocallyPredictive

public void setLocallyPredictive(boolean b)
Include locally predictive attributes

Parameters:
b - true or false

getLocallyPredictive

public boolean getLocallyPredictive()
Return true if including locally predictive attributes

Returns:
true if locally predictive attributes are to be used

missingSeperateTipText

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

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

setMissingSeperate

public void setMissingSeperate(boolean b)
Treat missing as a seperate value

Parameters:
b - true or false

getMissingSeperate

public boolean getMissingSeperate()
Return true is missing is treated as a seperate value

Returns:
true if missing is to be treated as a seperate value

getOptions

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

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

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
Generates a attribute evaluator. Has to initialize all fields of the evaluator that are not being set via options. CFS also discretises attributes (if necessary) and initializes the correlation matrix.

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

evaluateSubset

public double evaluateSubset(java.util.BitSet subset)
                      throws java.lang.Exception
evaluates a subset of attributes

Specified by:
evaluateSubset in class SubsetEvaluator
Parameters:
subset - a bitset representing the attribute subset to be evaluated
Returns:
the merit
Throws:
java.lang.Exception - if the subset could not be evaluated

toString

public java.lang.String toString()
returns a string describing CFS

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

postProcess

public int[] postProcess(int[] attributeSet)
                  throws java.lang.Exception
Calls locallyPredictive in order to include locally predictive attributes (if requested).

Overrides:
postProcess in class ASEvaluation
Parameters:
attributeSet - the set of attributes found by the search
Returns:
a possibly ranked list of postprocessed attributes
Throws:
java.lang.Exception - if postprocessing fails for some reason

main

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

Parameters:
args - the options