weka.classifiers.trees.m5
Class RuleNode

java.lang.Object
  extended byweka.classifiers.Classifier
      extended byweka.classifiers.trees.m5.RuleNode
All Implemented Interfaces:
java.lang.Cloneable, java.io.Serializable

public class RuleNode
extends Classifier

Constructs a node for use in an m5 tree or rule

See Also:
Serialized Form

Field Summary
protected  RuleNode m_left
          child nodes
protected  int m_numInstances
          the number of instances reaching this node
 int m_numParameters
          the number of paramters in the chosen model for this node---either the subtree model or the linear model.
protected  RuleNode m_right
           
 
Constructor Summary
RuleNode(double globalDev, double globalAbsDev, RuleNode parent)
          Creates a new RuleNode instance.
 
Method Summary
protected  Instance applyNodeFilter(Instance inst)
          Apply the attribute filter at this node to a set of supplied instances
protected  int assignIDs(int lastID)
          Assigns a unique identifier to each node in the tree
 void buildClassifier(Instances data)
          Build this node (find an attribute and split point)
 double classifyInstance(Instance inst)
          Classify an instance using this node.
 void findBestLeaf(double[] maxCoverage, RuleNode[] bestLeaf)
          Find the leaf with greatest coverage
 double getMinNumInstances()
          Get the minimum number of instances to allow at a leaf node
protected  LinearRegression getModel()
          Get the linear model at this node
 boolean getRegressionTree()
          Get the value of regressionTree.
 boolean getSmoothing()
          Method declaration
protected  void graph(java.lang.StringBuffer text)
          Assign a unique identifier to each node in the tree and then calls graphTree
protected  void graphTree(java.lang.StringBuffer text)
          Return a dotty style string describing the tree
 void installLinearModels()
          Traverses the tree and installs linear models at each node.
 RuleNode leftNode()
          Get the left child of this node
 java.lang.String nodeToString()
          Returns a description of this node (debugging purposes)
 int numberOfLinearModels()
          Get the number of linear models in the tree
 int numLeaves(int leafCounter)
          Sets the leaves' numbers
 RuleNode parentNode()
          Get the parent of this node
 void printAllModels()
          Print all the linear models at the learf (debugging purposes)
 java.lang.String printLeafModels()
          print all leaf models
 java.lang.String printNodeLinearModel()
          print the linear model at this node
 void prune()
          Recursively prune the tree
 void returnLeaves(FastVector[] v)
          Return a list containing all the leaves in the tree
 RuleNode rightNode()
          Get the right child of this node
protected  double rootMeanSquaredError()
          Get the root mean squared error at this node
 void setMinNumInstances(double minNum)
          Set the minumum number of instances to allow at a leaf node
 void setRegressionTree(boolean newregressionTree)
          Set the value of regressionTree.
protected  void setSaveInstances(boolean save)
          Set whether to save instances for visualization purposes.
 void setSmoothing(boolean s)
          Get if smoothing is being used
protected static double smoothingOriginal(double n, double pred, double supportPred)
          Applies the m5 smoothing procedure to a prediction
 void split()
          Finds an attribute and split point for this node
 int splitAtt()
          Get the index of the splitting attribute for this node
 double splitVal()
          Get the split point for this node
 java.lang.String toString()
          print the linear model at this node
 java.lang.String treeToString(int level)
          Recursively builds a textual description of the tree
 
Methods inherited from class weka.classifiers.Classifier
forName, makeCopies
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

m_numInstances

protected int m_numInstances
the number of instances reaching this node


m_numParameters

public int m_numParameters
the number of paramters in the chosen model for this node---either the subtree model or the linear model. The constant term is counted as a paramter---this is for pruning purposes


m_left

protected RuleNode m_left
child nodes


m_right

protected RuleNode m_right
Constructor Detail

RuleNode

public RuleNode(double globalDev,
                double globalAbsDev,
                RuleNode parent)
Creates a new RuleNode instance.

Parameters:
globalDev - the global standard deviation of the class
globalAbsDev - the global absolute deviation of the class
parent - the parent of this node
Method Detail

buildClassifier

public void buildClassifier(Instances data)
                     throws java.lang.Exception
Build this node (find an attribute and split point)

Specified by:
buildClassifier in class Classifier
Parameters:
data - the instances on which to build this node
Throws:
java.lang.Exception - if an error occurs

classifyInstance

public double classifyInstance(Instance inst)
                        throws java.lang.Exception
Classify an instance using this node. Recursively calls classifyInstance on child nodes.

Specified by:
classifyInstance in class Classifier
Parameters:
inst - the instance to classify
Returns:
the prediction for this instance
Throws:
java.lang.Exception - if an error occurs

smoothingOriginal

protected static double smoothingOriginal(double n,
                                          double pred,
                                          double supportPred)
                                   throws java.lang.Exception
Applies the m5 smoothing procedure to a prediction

Parameters:
n - number of instances in selected child of this node
pred - the prediction so far
supportPred - the prediction of the linear model at this node
Returns:
the current prediction smoothed with the prediction of the linear model at this node
Throws:
java.lang.Exception - if an error occurs

split

public void split()
           throws java.lang.Exception
Finds an attribute and split point for this node

Throws:
java.lang.Exception - if an error occurs

numLeaves

public int numLeaves(int leafCounter)
Sets the leaves' numbers

Parameters:
leafCounter - the number of leaves counted
Returns:
the number of the total leaves under the node

toString

public java.lang.String toString()
print the linear model at this node


printNodeLinearModel

public java.lang.String printNodeLinearModel()
print the linear model at this node


printLeafModels

public java.lang.String printLeafModels()
print all leaf models


nodeToString

public java.lang.String nodeToString()
Returns a description of this node (debugging purposes)

Returns:
a string describing this node

treeToString

public java.lang.String treeToString(int level)
Recursively builds a textual description of the tree

Parameters:
level - the level of this node
Returns:
string describing the tree

installLinearModels

public void installLinearModels()
                         throws java.lang.Exception
Traverses the tree and installs linear models at each node. This method must be called if pruning is not to be performed.

Throws:
java.lang.Exception - if an error occurs

prune

public void prune()
           throws java.lang.Exception
Recursively prune the tree

Throws:
java.lang.Exception - if an error occurs

findBestLeaf

public void findBestLeaf(double[] maxCoverage,
                         RuleNode[] bestLeaf)
Find the leaf with greatest coverage

Parameters:
maxCoverage - the greatest coverage found so far
bestLeaf - the leaf with the greatest coverage

returnLeaves

public void returnLeaves(FastVector[] v)
Return a list containing all the leaves in the tree

Parameters:
v - a single element array containing a vector of leaves

parentNode

public RuleNode parentNode()
Get the parent of this node

Returns:
the parent of this node

leftNode

public RuleNode leftNode()
Get the left child of this node

Returns:
the left child of this node

rightNode

public RuleNode rightNode()
Get the right child of this node

Returns:
the right child of this node

splitAtt

public int splitAtt()
Get the index of the splitting attribute for this node

Returns:
the index of the splitting attribute

splitVal

public double splitVal()
Get the split point for this node

Returns:
the split point for this node

numberOfLinearModels

public int numberOfLinearModels()
Get the number of linear models in the tree

Returns:
the number of linear models

rootMeanSquaredError

protected double rootMeanSquaredError()
Get the root mean squared error at this node

Returns:
the root mean squared error

getModel

protected LinearRegression getModel()
Get the linear model at this node

Returns:
the linear model at this node

setSmoothing

public void setSmoothing(boolean s)
Get if smoothing is being used

Parameters:
s - true if smoothing is being used

getSmoothing

public boolean getSmoothing()
Method declaration

Returns:
true if smoothing has been selected.

getRegressionTree

public boolean getRegressionTree()
Get the value of regressionTree.

Returns:
Value of regressionTree.

setMinNumInstances

public void setMinNumInstances(double minNum)
Set the minumum number of instances to allow at a leaf node

Parameters:
minNum - the minimum number of instances

getMinNumInstances

public double getMinNumInstances()
Get the minimum number of instances to allow at a leaf node

Returns:
a double value

setRegressionTree

public void setRegressionTree(boolean newregressionTree)
Set the value of regressionTree.

Parameters:
newregressionTree - Value to assign to regressionTree.

applyNodeFilter

protected Instance applyNodeFilter(Instance inst)
                            throws java.lang.Exception
Apply the attribute filter at this node to a set of supplied instances

Parameters:
inst - the instances to apply the filter to
Returns:
a filtered set of instances
Throws:
java.lang.Exception - if an error occurs

printAllModels

public void printAllModels()
Print all the linear models at the learf (debugging purposes)


assignIDs

protected int assignIDs(int lastID)
Assigns a unique identifier to each node in the tree

Parameters:
lastID - last id number used
Returns:
ID after processing child nodes

graph

protected void graph(java.lang.StringBuffer text)
Assign a unique identifier to each node in the tree and then calls graphTree

Parameters:
text - a StringBuffer value

graphTree

protected void graphTree(java.lang.StringBuffer text)
Return a dotty style string describing the tree

Parameters:
text - a StringBuffer value

setSaveInstances

protected void setSaveInstances(boolean save)
Set whether to save instances for visualization purposes. Default is to save memory.

Parameters:
save - a boolean value