public class RandomForest extends Object implements scala.Serializable, Logging
Random Forest
learning algorithm for classification and regression.
It supports both continuous and categorical features.
The settings for featureSubsetStrategy are based on the following references: - log2: tested in Breiman (2001) - sqrt: recommended by Breiman manual for random forests - The defaults of sqrt (classification) and onethird (regression) match the R randomForest package.
http://www.stat.berkeley.edu/~breiman/Using_random_forests_V3.1.pdf Breiman manual for
random forests}
,
Serialized FormModifier and Type | Class and Description |
---|---|
static class |
RandomForest.NodeIndexInfo |
Constructor and Description |
---|
RandomForest(Strategy strategy,
int numTrees,
String featureSubsetStrategy,
int seed) |
Modifier and Type | Method and Description |
---|---|
static long |
aggregateSizeForNode(DecisionTreeMetadata metadata,
scala.Option<int[]> featureSubset)
Get the number of values to be stored for this node in the bin aggregates.
|
RandomForestModel |
run(RDD<LabeledPoint> input)
Method to train a decision tree model over an RDD
|
static scala.Tuple2<scala.collection.immutable.Map<Object,Node[]>,scala.collection.immutable.Map<Object,scala.collection.immutable.Map<Object,RandomForest.NodeIndexInfo>>> |
selectNodesToSplit(scala.collection.mutable.Queue<scala.Tuple2<Object,Node>> nodeQueue,
long maxMemoryUsage,
DecisionTreeMetadata metadata,
scala.util.Random rng)
Pull nodes off of the queue, and collect a group of nodes to be split on this iteration.
|
static String[] |
supportedFeatureSubsetStrategies()
List of supported feature subset sampling strategies.
|
static RandomForestModel |
trainClassifier(JavaRDD<LabeledPoint> input,
int numClasses,
java.util.Map<Integer,Integer> categoricalFeaturesInfo,
int numTrees,
String featureSubsetStrategy,
String impurity,
int maxDepth,
int maxBins,
int seed)
Java-friendly API for
RandomForest$.trainClassifier(org.apache.spark.rdd.RDD<org.apache.spark.mllib.regression.LabeledPoint>, org.apache.spark.mllib.tree.configuration.Strategy, int, java.lang.String, int) |
static RandomForestModel |
trainClassifier(RDD<LabeledPoint> input,
int numClasses,
scala.collection.immutable.Map<Object,Object> categoricalFeaturesInfo,
int numTrees,
String featureSubsetStrategy,
String impurity,
int maxDepth,
int maxBins,
int seed)
Method to train a decision tree model for binary or multiclass classification.
|
static RandomForestModel |
trainClassifier(RDD<LabeledPoint> input,
Strategy strategy,
int numTrees,
String featureSubsetStrategy,
int seed)
Method to train a decision tree model for binary or multiclass classification.
|
static RandomForestModel |
trainRegressor(JavaRDD<LabeledPoint> input,
java.util.Map<Integer,Integer> categoricalFeaturesInfo,
int numTrees,
String featureSubsetStrategy,
String impurity,
int maxDepth,
int maxBins,
int seed)
Java-friendly API for
RandomForest$.trainRegressor(org.apache.spark.rdd.RDD<org.apache.spark.mllib.regression.LabeledPoint>, org.apache.spark.mllib.tree.configuration.Strategy, int, java.lang.String, int) |
static RandomForestModel |
trainRegressor(RDD<LabeledPoint> input,
scala.collection.immutable.Map<Object,Object> categoricalFeaturesInfo,
int numTrees,
String featureSubsetStrategy,
String impurity,
int maxDepth,
int maxBins,
int seed)
Method to train a decision tree model for regression.
|
static RandomForestModel |
trainRegressor(RDD<LabeledPoint> input,
Strategy strategy,
int numTrees,
String featureSubsetStrategy,
int seed)
Method to train a decision tree model for regression.
|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
initializeIfNecessary, initializeLogging, isTraceEnabled, log_, log, logDebug, logDebug, logError, logError, logInfo, logInfo, logName, logTrace, logTrace, logWarning, logWarning
public RandomForest(Strategy strategy, int numTrees, String featureSubsetStrategy, int seed)
public static RandomForestModel trainClassifier(RDD<LabeledPoint> input, Strategy strategy, int numTrees, String featureSubsetStrategy, int seed)
input
- Training dataset: RDD of LabeledPoint
.
Labels should take values {0, 1, ..., numClasses-1}.strategy
- Parameters for training each tree in the forest.numTrees
- Number of trees in the random forest.featureSubsetStrategy
- Number of features to consider for splits at each node.
Supported: "auto", "all", "sqrt", "log2", "onethird".
If "auto" is set, this parameter is set based on numTrees:
if numTrees == 1, set to "all";
if numTrees > 1 (forest) set to "sqrt".seed
- Random seed for bootstrapping and choosing feature subsets.public static RandomForestModel trainClassifier(RDD<LabeledPoint> input, int numClasses, scala.collection.immutable.Map<Object,Object> categoricalFeaturesInfo, int numTrees, String featureSubsetStrategy, String impurity, int maxDepth, int maxBins, int seed)
input
- Training dataset: RDD of LabeledPoint
.
Labels should take values {0, 1, ..., numClasses-1}.numClasses
- number of classes for classification.categoricalFeaturesInfo
- Map storing arity of categorical features.
E.g., an entry (n -> k) indicates that feature n is categorical
with k categories indexed from 0: {0, 1, ..., k-1}.numTrees
- Number of trees in the random forest.featureSubsetStrategy
- Number of features to consider for splits at each node.
Supported: "auto", "all", "sqrt", "log2", "onethird".
If "auto" is set, this parameter is set based on numTrees:
if numTrees == 1, set to "all";
if numTrees > 1 (forest) set to "sqrt".impurity
- Criterion used for information gain calculation.
Supported values: "gini" (recommended) or "entropy".maxDepth
- Maximum depth of the tree.
E.g., depth 0 means 1 leaf node; depth 1 means 1 internal node + 2 leaf nodes.
(suggested value: 4)maxBins
- maximum number of bins used for splitting features
(suggested value: 100)seed
- Random seed for bootstrapping and choosing feature subsets.public static RandomForestModel trainClassifier(JavaRDD<LabeledPoint> input, int numClasses, java.util.Map<Integer,Integer> categoricalFeaturesInfo, int numTrees, String featureSubsetStrategy, String impurity, int maxDepth, int maxBins, int seed)
RandomForest$.trainClassifier(org.apache.spark.rdd.RDD<org.apache.spark.mllib.regression.LabeledPoint>, org.apache.spark.mllib.tree.configuration.Strategy, int, java.lang.String, int)
public static RandomForestModel trainRegressor(RDD<LabeledPoint> input, Strategy strategy, int numTrees, String featureSubsetStrategy, int seed)
input
- Training dataset: RDD of LabeledPoint
.
Labels are real numbers.strategy
- Parameters for training each tree in the forest.numTrees
- Number of trees in the random forest.featureSubsetStrategy
- Number of features to consider for splits at each node.
Supported: "auto", "all", "sqrt", "log2", "onethird".
If "auto" is set, this parameter is set based on numTrees:
if numTrees == 1, set to "all";
if numTrees > 1 (forest) set to "onethird".seed
- Random seed for bootstrapping and choosing feature subsets.public static RandomForestModel trainRegressor(RDD<LabeledPoint> input, scala.collection.immutable.Map<Object,Object> categoricalFeaturesInfo, int numTrees, String featureSubsetStrategy, String impurity, int maxDepth, int maxBins, int seed)
input
- Training dataset: RDD of LabeledPoint
.
Labels are real numbers.categoricalFeaturesInfo
- Map storing arity of categorical features.
E.g., an entry (n -> k) indicates that feature n is categorical
with k categories indexed from 0: {0, 1, ..., k-1}.numTrees
- Number of trees in the random forest.featureSubsetStrategy
- Number of features to consider for splits at each node.
Supported: "auto", "all", "sqrt", "log2", "onethird".
If "auto" is set, this parameter is set based on numTrees:
if numTrees == 1, set to "all";
if numTrees > 1 (forest) set to "onethird".impurity
- Criterion used for information gain calculation.
Supported values: "variance".maxDepth
- Maximum depth of the tree.
E.g., depth 0 means 1 leaf node; depth 1 means 1 internal node + 2 leaf nodes.
(suggested value: 4)maxBins
- maximum number of bins used for splitting features
(suggested value: 100)seed
- Random seed for bootstrapping and choosing feature subsets.public static RandomForestModel trainRegressor(JavaRDD<LabeledPoint> input, java.util.Map<Integer,Integer> categoricalFeaturesInfo, int numTrees, String featureSubsetStrategy, String impurity, int maxDepth, int maxBins, int seed)
RandomForest$.trainRegressor(org.apache.spark.rdd.RDD<org.apache.spark.mllib.regression.LabeledPoint>, org.apache.spark.mllib.tree.configuration.Strategy, int, java.lang.String, int)
public static String[] supportedFeatureSubsetStrategies()
public static scala.Tuple2<scala.collection.immutable.Map<Object,Node[]>,scala.collection.immutable.Map<Object,scala.collection.immutable.Map<Object,RandomForest.NodeIndexInfo>>> selectNodesToSplit(scala.collection.mutable.Queue<scala.Tuple2<Object,Node>> nodeQueue, long maxMemoryUsage, DecisionTreeMetadata metadata, scala.util.Random rng)
nodeQueue
- Queue of nodes to split.maxMemoryUsage
- Bound on size of aggregate statistics.treeToNodeToIndexInfo holds indices selected features for each node: treeIndex --> (global) node index --> (node index in group, feature indices). The (global) node index is the index in the tree; the node index in group is the index in [0, numNodesInGroup) of the node in this group. The feature indices are None if not subsampling features.
public static long aggregateSizeForNode(DecisionTreeMetadata metadata, scala.Option<int[]> featureSubset)
featureSubset
- Indices of features which may be split at this node.
If None, then use all features.public RandomForestModel run(RDD<LabeledPoint> input)
input
- Training data: RDD of LabeledPoint