Class RandomTree

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, Classifier, BatchPredictor, CapabilitiesHandler, CapabilitiesIgnorer, CommandlineRunnable, Drawable, OptionHandler, PartitionGenerator, Randomizable, RevisionHandler, WeightedInstancesHandler

    public class RandomTree
    extends AbstractClassifier
    implements OptionHandler, WeightedInstancesHandler, Randomizable, Drawable, PartitionGenerator
    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 (or target mean in the regression case) based on a hold-out set (backfitting).

    Valid options are:

     -K <number of attributes>
      Number of attributes to randomly investigate. (default 0)
      (<1 = int(log_2(#predictors)+1)).
     
     -M <minimum number of instances>
      Set minimum number of instances per leaf.
      (default 1)
     
     -V <minimum variance for split>
      Set minimum numeric class variance proportion
      of train variance for split (default 1e-3).
     
     -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.
     
     -B
      Break ties randomly when several attributes look equally good.
     
     -output-debug-info
      If set, classifier is run in debug mode and
      may output additional info to the console
     
     -do-not-check-capabilities
      If set, classifier capabilities are not checked before classifier is built
      (use with caution).
     
     -num-decimal-places
      The number of decimal places for the output of numbers in the model (default 2).
     
    Version:
    $Revision: 13865 $
    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
      • getImpurityDecreases

        public double[][] getImpurityDecreases()
        Get the array of impurity decrease/gain sums
        Returns:
        the array of impurity decrease/gain sums
      • setComputeImpurityDecreases

        @ProgrammaticProperty
        public void setComputeImpurityDecreases​(boolean computeImpurityDecreases)
        Set whether to compute/store impurity decreases for variable importance in RandomForest
        Parameters:
        computeImpurityDecreases - true to compute and store impurity decrease values for splitting attributes
      • getComputeImpurityDecreases

        public boolean getComputeImpurityDecreases()
        Get whether to compute/store impurity decreases for variable importance in RandomForest
        Returns:
        true to compute and store impurity decrease values for splitting attributes
      • 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.
      • minVariancePropTipText

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

        public double getMinVarianceProp()
        Get the value of MinVarianceProp.
        Returns:
        Value of MinVarianceProp.
      • setMinVarianceProp

        public void setMinVarianceProp​(double newMinVarianceProp)
        Set the value of MinVarianceProp.
        Parameters:
        newMinVarianceProp - Value to assign to MinVarianceProp.
      • 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.
      • setMaxDepth

        public void setMaxDepth​(int value)
        Set the maximum depth of the tree, 0 for unlimited.
        Parameters:
        value - 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()
        Gets whether tree is allowed to abstain from making a prediction.
        Returns:
        true if tree is allowed to abstain from making a prediction.
      • setAllowUnclassifiedInstances

        public void setAllowUnclassifiedInstances​(boolean newAllowUnclassifiedInstances)
        Set the value of AllowUnclassifiedInstances.
        Parameters:
        newAllowUnclassifiedInstances - true if tree is allowed to abstain from making a prediction
      • breakTiesRandomlyTipText

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

        public boolean getBreakTiesRandomly()
        Get whether to break ties randomly.
        Returns:
        true if ties are to be broken randomly.
      • setBreakTiesRandomly

        public void setBreakTiesRandomly​(boolean newBreakTiesRandomly)
        Set whether to break ties randomly.
        Parameters:
        newBreakTiesRandomly - true if ties are to be broken randomly
      • 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. (default 0)
          (<1 = int(log_2(#predictors)+1)).
         
         -M <minimum number of instances>
          Set minimum number of instances per leaf.
          (default 1)
         
         -V <minimum variance for split>
          Set minimum numeric class variance proportion
          of train variance for split (default 1e-3).
         
         -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.
         
         -B
          Break ties randomly when several attributes look equally good.
         
         -output-debug-info
          If set, classifier is run in debug mode and
          may output additional info to the console
         
         -do-not-check-capabilities
          If set, classifier capabilities are not checked before classifier is built
          (use with caution).
         
         -num-decimal-places
          The number of decimal places for the output of numbers in the model (default 2).
         
        Specified by:
        setOptions in interface OptionHandler
        Overrides:
        setOptions in class AbstractClassifier
        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 interface 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.
        Specified by:
        distributionForInstance in interface Classifier
        Overrides:
        distributionForInstance in class AbstractClassifier
        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.
        Specified by:
        generatePartition in interface PartitionGenerator
        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.
        Specified by:
        getMembershipValues in interface PartitionGenerator
        Throws:
        java.lang.Exception
      • numElements

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

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