Class RandomTree

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, CapabilitiesHandler, Drawable, OptionHandler, Randomizable, RevisionHandler, WeightedInstancesHandler

    public class RandomTree
    extends Classifier
    implements OptionHandler, WeightedInstancesHandler, Randomizable, Drawable
    Class for constructing a tree that considers K randomly chosen attributes at each node. Performs no pruning. Also has an option to allow estimation of class probabilities based on a hold-out set (backfitting).

    Valid options are:

     -K <number of attributes>
      Number of attributes to randomly investigate. (default 0)
      (<0 = int(log_2(#predictors)+1)).
     
     -M <minimum number of instances>
      Set minimum number of instances per leaf.
     
     -S <num>
      Seed for random number generator.
      (default 1)
     
     -depth <num>
      The maximum depth of the tree, 0 for unlimited.
      (default 0)
     
     -N <num>
      Number of folds for backfitting (default 0, no backfitting).
     
     -U
      Allow unclassified instances.
     
     -D
      If set, classifier is run in debug mode and
      may output additional info to the console
     
    Version:
    $Revision: 10993 $
    Author:
    Eibe Frank (eibe@cs.waikato.ac.nz), Richard Kirkby (rkirkby@cs.waikato.ac.nz)
    See Also:
    Serialized Form
    • Constructor Detail

      • RandomTree

        public RandomTree()
    • Method Detail

      • globalInfo

        public java.lang.String globalInfo()
        Returns a string describing classifier
        Returns:
        a description suitable for displaying in the explorer/experimenter gui
      • minNumTipText

        public java.lang.String minNumTipText()
        Returns the tip text for this property
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • getMinNum

        public double getMinNum()
        Get the value of MinNum.
        Returns:
        Value of MinNum.
      • setMinNum

        public void setMinNum​(double newMinNum)
        Set the value of MinNum.
        Parameters:
        newMinNum - Value to assign to MinNum.
      • KValueTipText

        public java.lang.String KValueTipText()
        Returns the tip text for this property
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • getKValue

        public int getKValue()
        Get the value of K.
        Returns:
        Value of K.
      • setKValue

        public void setKValue​(int k)
        Set the value of K.
        Parameters:
        k - Value to assign to K.
      • seedTipText

        public java.lang.String seedTipText()
        Returns the tip text for this property
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • setSeed

        public void setSeed​(int seed)
        Set the seed for random number generation.
        Specified by:
        setSeed in interface Randomizable
        Parameters:
        seed - the seed
      • getSeed

        public int getSeed()
        Gets the seed for the random number generations
        Specified by:
        getSeed in interface Randomizable
        Returns:
        the seed for the random number generation
      • maxDepthTipText

        public java.lang.String maxDepthTipText()
        Returns the tip text for this property
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • getMaxDepth

        public int getMaxDepth()
        Get the maximum depth of trh tree, 0 for unlimited.
        Returns:
        the maximum depth.
      • numFoldsTipText

        public java.lang.String numFoldsTipText()
        Returns the tip text for this property
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • 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.
      • allowUnclassifiedInstancesTipText

        public java.lang.String allowUnclassifiedInstancesTipText()
        Returns the tip text for this property
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • getAllowUnclassifiedInstances

        public boolean getAllowUnclassifiedInstances()
        Get the value of NumFolds.
        Returns:
        Value of NumFolds.
      • setAllowUnclassifiedInstances

        public void setAllowUnclassifiedInstances​(boolean newAllowUnclassifiedInstances)
        Set the value of AllowUnclassifiedInstances.
        Parameters:
        newAllowUnclassifiedInstances - Value to assign to AllowUnclassifiedInstances.
      • setMaxDepth

        public void setMaxDepth​(int value)
        Set the maximum depth of the tree, 0 for unlimited.
        Parameters:
        value - the maximum depth.
      • listOptions

        public java.util.Enumeration listOptions()
        Lists the command-line options for this classifier.
        Specified by:
        listOptions in interface OptionHandler
        Overrides:
        listOptions in class Classifier
        Returns:
        an enumeration over all possible options
      • getOptions

        public java.lang.String[] getOptions()
        Gets options from this classifier.
        Specified by:
        getOptions in interface OptionHandler
        Overrides:
        getOptions in class Classifier
        Returns:
        the options for the current setup
      • setOptions

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

        Valid options are:

         -K <number of attributes>
          Number of attributes to randomly investigate
          (<0 = int(log_2(#attributes)+1)).
         
         -M <minimum number of instances>
          Set minimum number of instances per leaf.
         
         -S <num>
          Seed for random number generator.
          (default 1)
         
         -depth <num>
          The maximum depth of the tree, 0 for unlimited.
          (default 0)
         
         -N <num>
          Number of folds for backfitting (default 0, no backfitting).
         
         -U
          Allow unclassified instances.
         
         -D
          If set, classifier is run in debug mode and
          may output additional info to the console
         
        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
      • buildClassifier

        public void buildClassifier​(Instances data)
                             throws java.lang.Exception
        Builds classifier.
        Specified by:
        buildClassifier in class Classifier
        Parameters:
        data - the data to train with
        Throws:
        java.lang.Exception - if something goes wrong or the data doesn't fit
      • distributionForInstance

        public double[] distributionForInstance​(Instance instance)
                                         throws java.lang.Exception
        Computes class distribution of an instance using the tree.
        Overrides:
        distributionForInstance in class Classifier
        Parameters:
        instance - the instance to compute the distribution for
        Returns:
        the computed class probabilities
        Throws:
        java.lang.Exception - if computation fails
      • toString

        public java.lang.String toString()
        Outputs the decision tree.
        Overrides:
        toString in class java.lang.Object
        Returns:
        a string representation of the classifier
      • graph

        public java.lang.String graph()
                               throws java.lang.Exception
        Returns graph describing the tree.
        Specified by:
        graph in interface Drawable
        Returns:
        the graph describing the tree
        Throws:
        java.lang.Exception - if graph can't be computed
      • graphType

        public int graphType()
        Returns the type of graph this classifier represents.
        Specified by:
        graphType in interface Drawable
        Returns:
        Drawable.TREE
      • generatePartition

        public void generatePartition​(Instances data)
                               throws java.lang.Exception
        Builds the classifier to generate a partition.
        Throws:
        java.lang.Exception
      • getMembershipValues

        public double[] getMembershipValues​(Instance instance)
                                     throws java.lang.Exception
        Computes array that indicates node membership. Array locations are allocated based on breadth-first exploration of the tree.
        Throws:
        java.lang.Exception
      • numElements

        public int numElements()
                        throws java.lang.Exception
        Returns the number of elements in the partition.
        Throws:
        java.lang.Exception
      • main

        public static void main​(java.lang.String[] argv)
        Main method for this class.
        Parameters:
        argv - the commandline parameters