Decision tree learning uses a decision tree as a predictive model which maps observations
about an item to conclusions about the item's target value.
It is one of the predictive modelling approaches used in statistics, data mining and machine
learning.
More descriptive names for such tree models are classification trees or regression trees.
In these tree structures, leaves represent class labels and branches represent conjunctions
of features that lead to those class labels.
In decision analysis, a decision tree can be used to visually and explicitly represent
decisions and decision making.
In data mining, a decision tree describes data but not decisions; rather the resulting
classification tree can be an input for decision making.
This page deals with decision trees in data mining.
General
Decision tree learning is a method commonly used in data mining.
The goal is to create a model that predicts the value of a target variable based on several
input variables.
An example is shown on the right.
Each interior node corresponds to one of the input variables; there are edges to children
for each of the possible values of that input variable.
Each leaf represents a value of the target variable given the values of the input variables
represented by the path from the root to the leaf.
A decision tree is a simple representation for classifying examples.
Decision tree learning is one of the most successful techniques for supervised classification
learning.
For this section, assume that all of the features have finite discrete domains, and there is
a single target feature called the classification.
Each element of the domain of the classification is called a class.
A decision tree or a classification tree is a tree in which each internal node is labeled
with an input feature.
The arcs coming from a node labeled with a feature are labeled with each of the possible
values of the feature.
Each leaf of the tree is labeled with a class or a probability distribution over the classes.
A tree can be "learned" by splitting the source set into subsets based on an attribute value
test.
This process is repeated on each derived subset in a recursive manner called recursive partitioning.
The recursion is completed when the subset at a node has all the same value of the target
variable, or when splitting no longer adds value to the predictions.
This process of top-down induction of decision trees is an example of a greedy algorithm,
and it is by far the most common strategy for learning decision trees from data.
In data mining, decision trees can be described also as the combination of mathematical and
computational techniques to aid the description, categorisation and generalisation of a given
set of data.
Data comes in records of the form:
The dependent variable, Y, is the target variable that we are trying to understand, classify
or generalize.
The vector x is composed of the input variables, x1, x2, x3 etc., that are used for that task.
Types Decision trees used in data mining are of
two main types: Classification tree analysis is when the predicted
outcome is the class to which the data belongs.
Regression tree analysis is when the predicted outcome can be considered a real number.
The term Classification And Regression Tree analysis is an umbrella term used to refer
to both of the above procedures, first introduced by Breiman et al. Trees used for regression
and trees used for classification have some similarities - but also some differences,
such as the procedure used to determine where to split.
Some techniques, often called ensemble methods, construct more than one decision tree:
Bagging decision trees, an early ensemble method, builds multiple decision trees by
repeatedly resampling training data with replacement, and voting the trees for a consensus prediction.
A Random Forest classifier uses a number of decision trees, in order to improve the classification
rate.
Boosted Trees can be used for regression-type and classification-type problems.
Rotation forest - in which every decision tree is trained by first applying principal
component analysis on a random subset of the input features.
Decision tree learning is the construction of a decision tree from class-labeled training
tuples.
A decision tree is a flow-chart-like structure, where each internal node denotes a test on
an attribute, each branch represents the outcome of a test, and each leaf node holds a class
label.
The topmost node in a tree is the root node.
There are many specific decision-tree algorithms.
Notable ones include: ID3
C4.5 CART
CHAID.
Performs multi-level splits when computing classification trees.
MARS: extends decision trees to handle numerical data better.
Conditional Inference Trees.
Statistics-based approach that uses non-parametric tests as splitting criteria, corrected for
multiple testing to avoid overfitting.
This approach results in unbiased predictor selection and does not require pruning.
ID3 and CART were invented independently at around the same time, yet follow a similar
approach for learning decision tree from training tuples.
Metrics Algorithms for constructing decision trees
usually work top-down, by choosing a variable at each step that best splits the set of items.
Different algorithms use different metrics for measuring "best".
These generally measure the homogeneity of the target variable within the subsets.
Some examples are given below.
These metrics are applied to each candidate subset, and the resulting values are combined
to provide a measure of the quality of the split.
Gini impurity
Used by the CART algorithm, Gini impurity is a measure of how often a randomly chosen
element from the set would be incorrectly labeled if it were randomly labeled according
to the distribution of labels in the subset.
Gini impurity can be computed by summing the probability of each item being chosen times
the probability of a mistake in categorizing that item.
It reaches its minimum when all cases in the node fall into a single target category.
To compute Gini impurity for a set of items, suppose i takes on values in , and let be
the fraction of items labeled with value in the set.
Information gain
Used by the ID3, C4.5 and C5.0 tree-generation algorithms.
Information gain is based on the concept of entropy from information theory.
Decision tree advantages Amongst other data mining methods, decision
trees have various advantages: Simple to understand and interpret.
People are able to understand decision tree models after a brief explanation.
Requires little data preparation.
Other techniques often require data normalisation, dummy variables need to be created and blank
values to be removed.
Able to handle both numerical and categorical data.
Other techniques are usually specialised in analysing datasets that have only one type
of variable.
Uses a white box model.
If a given situation is observable in a model the explanation for the condition is easily
explained by boolean logic.
Possible to validate a model using statistical tests.
That makes it possible to account for the reliability of the model.
Robust.
Performs well even if its assumptions are somewhat violated by the true model from which
the data were generated.
Performs well with large datasets.
Large amounts of data can be analysed using standard computing resources in reasonable
time.
Limitations The problem of learning an optimal decision
tree is known to be NP-complete under several aspects of optimality and even for simple
concepts.
Consequently, practical decision-tree learning algorithms are based on heuristics such as
the greedy algorithm where locally-optimal decisions are made at each node.
Such algorithms cannot guarantee to return the globally-optimal decision tree.
To reduce the greedy effect of local-optimality some methods such as the dual information
distance tree were proposed.
[1] Decision-tree learners can create over-complex
trees that do not generalise well from the training data.
Mechanisms such as pruning are necessary to avoid this problem.
There are concepts that are hard to learn because decision trees do not express them
easily, such as XOR, parity or multiplexer problems.
In such cases, the decision tree becomes prohibitively large.
Approaches to solve the problem involve either changing the representation of the problem
domain or using learning algorithms based on more expressive representations.
For data including categorical variables with different numbers of levels, information gain
in decision trees is biased in favor of those attributes with more levels.
However, the issue of biased predictor selection is avoided by the Conditional Inference approach.
Extensions Decision graphs
In a decision tree, all paths from the root node to the leaf node proceed by way of conjunction,
or AND.
In a decision graph, it is possible to use disjunctions to join two more paths together
using Minimum message length.
Decision graphs have been further extended to allow for previously unstated new attributes
to be learnt dynamically and used at different places within the graph.
The more general coding scheme results in better predictive accuracy and log-loss probabilistic
scoring.
In general, decision graphs infer models with fewer leaves than decision trees.
Alternative search methods Evolutionary algorithms have been used to
avoid local optimal decisions and search the decision tree space with little a priori bias.
It is also possible for a tree to be sampled using MCMC.
The tree can be searched for in a bottom-up fashion.
See also Decision tree pruning
Binary decision diagram CHAID
CART ID3 algorithm
C4.5 algorithm Decision stump
Incremental decision tree Alternating decision tree
Structured data analysis Implementations
Many data mining software packages provide implementations of one or more decision tree
algorithms.
Several examples include Salford Systems CART, IBM SPSS Modeler, RapidMiner, SAS Enterprise
Miner, R, Weka, Orange, KNIME, Microsoft SQL Server [2], and scikit-learn.
References
External links Building Decision Trees in Python From O'Reilly.
An Addendum to "Building Decision Trees in Python" From O'Reilly.
Decision Trees Tutorial using Microsoft Excel.
Decision Trees page at aitopics.org, a page with commented links.
Decision tree implementation in Ruby Evolutionary Learning of Decision Trees in
C++ Java implementation of Decision Trees based
on Information Gain