weka.attributeSelection
Class RandomSearch

java.lang.Object
  extended by weka.attributeSelection.ASSearch
      extended by weka.attributeSelection.RandomSearch
All Implemented Interfaces:
java.io.Serializable, StartSetHandler, OptionHandler, RevisionHandler, TechnicalInformationHandler

public class RandomSearch
extends ASSearch
implements StartSetHandler, OptionHandler, TechnicalInformationHandler

RandomSearch :

Performs a Random search in the space of attribute subsets. If no start set is supplied, Random search starts from a random point and reports the best subset found. If a start set is supplied, Random searches randomly for subsets that are as good or better than the start point with the same or or fewer attributes. Using RandomSearch in conjunction with a start set containing all attributes equates to the LVF algorithm of Liu and Setiono (ICML-96).

For more information see:

H. Liu, R. Setiono: A probabilistic approach to feature selection - A filter solution. In: 13th International Conference on Machine Learning, 319-327, 1996.

BibTeX:

 @inproceedings{Liu1996,
    author = {H. Liu and R. Setiono},
    booktitle = {13th International Conference on Machine Learning},
    pages = {319-327},
    title = {A probabilistic approach to feature selection - A filter solution},
    year = {1996}
 }
 

Valid options are:

 -P <start set>
  Specify a starting set of attributes.
  Eg. 1,3,5-7.
  If a start point is supplied,
  random search evaluates the start
  point and then randomly looks for
  subsets that are as good as or better
  than the start point with the same
  or lower cardinality.
 -F <percent> 
  Percent of search space to consider.
  (default = 25%).
 -V
  Output subsets as the search progresses.
  (default = false).

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

Constructor Summary
RandomSearch()
          Constructor
 
Method Summary
 java.lang.String[] getOptions()
          Gets the current settings of RandomSearch.
 java.lang.String getRevision()
          Returns the revision string.
 double getSearchPercent()
          get the percentage of the search space to consider
 java.lang.String getStartSet()
          Returns a list of attributes (and or attribute ranges) as a 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.
 boolean getVerbose()
          get whether or not output is verbose
 java.lang.String globalInfo()
          Returns a string describing this search method
 java.util.Enumeration listOptions()
          Returns an enumeration describing the available options.
 int[] search(ASEvaluation ASEval, Instances data)
          Searches the attribute subset space randomly.
 java.lang.String searchPercentTipText()
          Returns the tip text for this property
 void setOptions(java.lang.String[] options)
          Parses a given list of options.
 void setSearchPercent(double p)
          set the percentage of the search space to consider
 void setStartSet(java.lang.String startSet)
          Sets a starting set of attributes for the search.
 void setVerbose(boolean v)
          set whether or not to output new best subsets as the search proceeds
 java.lang.String startSetTipText()
          Returns the tip text for this property
 java.lang.String toString()
          prints a description of the search
 java.lang.String verboseTipText()
          Returns the tip text for this property
 
Methods inherited from class weka.attributeSelection.ASSearch
forName, makeCopies
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

RandomSearch

public RandomSearch()
Constructor

Method Detail

globalInfo

public java.lang.String globalInfo()
Returns a string describing this search method

Returns:
a description of the search 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 a given list of options.

Valid options are:

 -P <start set>
  Specify a starting set of attributes.
  Eg. 1,3,5-7.
  If a start point is supplied,
  random search evaluates the start
  point and then randomly looks for
  subsets that are as good as or better
  than the start point with the same
  or lower cardinality.
 -F <percent> 
  Percent of search space to consider.
  (default = 25%).
 -V
  Output subsets as the search progresses.
  (default = false).

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

getOptions

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

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

startSetTipText

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

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

setStartSet

public void setStartSet(java.lang.String startSet)
                 throws java.lang.Exception
Sets a starting set of attributes for the search. It is the search method's responsibility to report this start set (if any) in its toString() method.

Specified by:
setStartSet in interface StartSetHandler
Parameters:
startSet - a string containing a list of attributes (and or ranges), eg. 1,2,6,10-15. "" indicates no start point. If a start point is supplied, random search evaluates the start point and then looks for subsets that are as good as or better than the start point with the same or lower cardinality.
Throws:
java.lang.Exception - if start set can't be set.

getStartSet

public java.lang.String getStartSet()
Returns a list of attributes (and or attribute ranges) as a String

Specified by:
getStartSet in interface StartSetHandler
Returns:
a list of attributes (and or attribute ranges)

verboseTipText

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

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

setVerbose

public void setVerbose(boolean v)
set whether or not to output new best subsets as the search proceeds

Parameters:
v - true if output is to be verbose

getVerbose

public boolean getVerbose()
get whether or not output is verbose

Returns:
true if output is set to verbose

searchPercentTipText

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

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

setSearchPercent

public void setSearchPercent(double p)
set the percentage of the search space to consider

Parameters:
p - percent of the search space ( 0 < p <= 100)

getSearchPercent

public double getSearchPercent()
get the percentage of the search space to consider

Returns:
the percent of the search space explored

toString

public java.lang.String toString()
prints a description of the search

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

search

public int[] search(ASEvaluation ASEval,
                    Instances data)
             throws java.lang.Exception
Searches the attribute subset space randomly.

Specified by:
search in class ASSearch
Parameters:
ASEval - the attribute evaluator to guide the search
data - the training instances.
Returns:
an array (not necessarily ordered) of selected attribute indexes
Throws:
java.lang.Exception - if the search can't be completed

getRevision

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

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