在機器學習中,隨機森林是一個包含多個決策樹的分類器,並且其輸出的類別是由個別樹輸出的類別的眾數而定。
這個術語是1995年由貝爾實驗室的所提出的隨機決策森林(random decision forests)而來的。这篇文章描述了一种结合随机节点优化和bagging,利用类CART过程构建不相关树的森林的方法。此外,本文还结合了一些已知的、新颖的、构成了现代随机森林实践的基础成分,特别是
使用out-of-bag误差来代替泛化误差
通过排列度量变量的重要性
算法
预备:决策树学习
决策树是机器学習的常用方法。 Hastie等说:“树学习是如今最能满足于数据挖掘的方法,因为它在特征值的缩放和其他各种转换下保持不变,对无关特征是穩健的,而且能生成可被檢查的模型。然而,它通常並不準確。”
特别的,生长很深的树容易学习到高度不规则的模式,即过学习,在训练集上具有低偏差和高變異數的特点。随机森林是平均多个深决策树以降低變異數的一种方法,其中,决策树是在一个数据集上的不同部分进行训练的。
典型地,对于一个包含 个特征的分类问题,可以在每次划分时使用 \sqrt p 个特征
性质
特征的重要性
随机森林天然可用来对回归或分类问题中变量的重要性进行排序。下面的技术来自Breiman的论文,R语言包randomForest包含它的实现。
度量数据集 \mathcal{D}_n =\{(X_i, Y_i)\}_{i=1}^n的特征重要性的第一步是,使用训练集训练一个随机森林模型。在训练过程中记录下每个数据点的out-of-bag误差,然后在整个森林上进行平均。
为了度量第j个特征的重要性,第j个特征的值在训练数据中被打乱,并重新计算打乱后的数据的out-of-bag误差。则第j个特征的重要性分数可以通过计算打乱前后的out-of-bag误差的差值的平均来得到,这个分数通过计算这些差值的标准差进行标准化。
产生更大分数的特征比小分数的特征更重要。这种特征重要性的度量方法的统计定义由Zhu et al.给出。
这种度量方法也有一些缺陷。对于包含不同取值个数的类别特征,随机森林更偏向于那些取值个数较多的特征,、growing unbiased trees可以用来解决这个问题。如果数据包含一些相互关联的特征组,那么更小的组更容易被选择。
与最近邻算法的关系
Lin和Jeon在2002年指出了随机森林算法和K-近邻算法(-NN)的关系。 事实证明,这两种算法都可以被看作是所谓的“加权邻居的方案”。这些在数据集\{(x_i, y_i)\}_{i=1}^n上训练的模型通过查看一个点的邻居来计算一个新点的预测值\hat{y},并且使用权重函数对这些邻居进行加权:
:\hat{y} = \sum_{i=1}^n W(x_i, x') \, y_i.
其中, W(x_i, x')是第个点在同一棵树中相对于新的数据点的非负权重。对于任一特定的点,x_i的权重的和必须为1。权重函数设定如下:
- 对于-NN算法,如果是距离最近的个点之一,则W(x_i, x') = \frac{1}{k},否则为0。
- 对于树,如果与属于同一个包含个点的叶结点,则W(x_i, x') = \frac{1}{k'},否则为0。
因为森林平均了棵树的预测,且这些树具有独立的权重函数W_j,故森林的预测值是:
:\hat{y} = \frac{1}{m}\sum_{j=1}^m\sum_{i=1}^n W_{j}(x_i, x') \, y_i = \sum_{i=1}^n\left(\frac{1}{m}\sum_{j=1}^m W_{j}(x_i, x')\right) \, y_i.
上式表明了整个森林也采用了加权的邻居方案,其中的权重是各个树的平均。在这里,的邻居是那些在任一树中属于同一个叶节点的点x_i。只要x_i与在某棵树中属于同一个叶节点,x_i就是的邻居。
基于随机森林的非监督学习
作为构建的一部分,随机森林预测器自然会导致观测值之间的不相似性度量。还可以定义未标记数据之间的随机森林差异度量:其思想是构造一个随机森林预测器,将“观测”数据与适当生成的合成数据区分开来。 观察到的数据是原始的未标记数据,合成数据是从参考分布中提取的。随机森林的不相似性度量之所以吸引人,是因为它能很好地处理混合变量类型,对输入变量的单调变换是不敏感的,而且在存在异常值的情况下度量结果依然可靠。由于其固有变量的选择,随机森林不相似性很容易处理大量的半连续变量。
學習演算法
根據下列演算法而建造每棵樹:
用N來表示訓練用例(样本)的個數,M表示特征数目。
输入特征数目m,用于确定决策树上一个节点的决策结果;其中m應远小於M。
從N個訓練用例(样本)中以有放回抽样的方式,取樣N次,形成一个训练集(即bootstrap取樣),並用未抽到的用例(样本)作預測,評估其誤差。
對於每一個節點,隨機選擇m個特征,决策树上每个节点的决定都是基于这些特征确定的。根據這m個特征,計算其最佳的分裂方式。
每棵樹都會完整成長而不會(Pruning,這有可能在建完一棵正常樹狀分類器後會被採用)。
優點
隨機森林的優點有:
- 對於很多種資料,它可以產生高準確度的分類器。
- 它可以處理大量的輸入變數。
- 它可以在決定類別時,評估變數的重要性。
- 在建造森林時,它可以在內部對於一般化後的誤差產生不偏差的估計。
- 它包含一個好方法可以估計遺失的資料,並且,如果有很大一部分的資料遺失,仍可以維持準確度。
- 它提供一個實驗方法,可以去偵測variable interactions。
- 對於不平衡的分類資料集來說,它可以平衡誤差。
- 它計算各例中的親近度,對於数据挖掘、偵測離群點(outlier)和將資料視覺化非常有用。
- 使用上述。它可被延伸應用在未標記的資料上,這類資料通常是使用非監督式聚類。也可偵測偏離者和觀看資料。
- 學習過程是很快速的。
开源实现
- [http://www.stat.berkeley.edu/~breiman/RandomForests/cc_software.htm The Original RF] by Breiman and Cutler written in Fortran 77.
- [http://www.alglib.net/dataanalysis/decisionforest.php ALGLIB] contains a modification of the random forest in C#, C++, Pascal, VBA.
- [http://cran.r-project.org/web/packages/party/index.html party] Implementation based on the conditional inference trees in R.
- [http://cran.r-project.org/web/packages/randomForest/index.html randomForest] for classification and regression in R.
- [http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html Python implementation] with examples in scikit-learn.
- suite includes random forest learner and can visualize the trained forest.
- [http://code.google.com/p/randomforest-matlab Matlab] implementation.
- [http://sqp.upf.edu SQP] software uses random forest algorithm to predict the quality of survey questions, depending on formal and linguistic characteristics of the question.
- [http://weka.sourceforge.net/doc.dev/weka/classifiers/trees/RandomForest.html Weka RandomForest] in Java library and GUI.
- [https://github.com/imbs-hl/ranger ranger] A C++ implementation of random forest for classification, regression, probability and survival. Includes interface for R.
参阅
- 机器学习
- 提升方法 - 机器学习方法
- 决策树学习 - 机器学习算法
*
- 無母數統計
- 随机化算法 - 将一定程度的随机性作为其逻辑或程序的一部分的算法
*
参考文献
外部連結
- [https://web.archive.org/web/20080704141852/http://cm.bell-labs.com/cm/cs/who/tkh/papers/odt.pdf Ho, Tin Kam (1995). "Random Decision Forest". Proc. of the 3rd Int'l Conf. on Document Analysis and Recognition, Montreal, Canada, August 14-18, 1995, 278-282](Preceding Work)
- [https://web.archive.org/web/20070930204101/http://cm.bell-labs.com/cm/cs/who/tkh/papers/df.pdf Ho, Tin Kam (1998). "The Random Subspace Method for Constructing Decision Forests". IEEE Trans. on Pattern Analysis and Machine Intelligence 20 (8), 832-844](Preceding Work)
- [https://web.archive.org/web/20110727072115/http://enpub.fulton.asu.edu/hdeng3/MultiICANN2011.pdf Deng, H; Runger, G; Tuv, Eugene (2011). Bias of importance measures for multi-valued attributes and solutions, Proceedings of the 21st International Conference on Artificial Neural Networks (ICANN2011)]
- [http://www.cis.jhu.edu/publications/papers_in_database/GEMAN/shape.pdf Amit, Yali and Geman, Donald (1997) "Shape quantization and recognition with randomized trees". Neural Computation 9, 1545-1588.] (Preceding work)
- [https://web.archive.org/web/20081204092820/http://www.ics.uci.edu/~liang/seminars/win05/papers/wald2002-2.pdf Breiman, Leo "Looking Inside The Black Box". Wald Lecture II](Lecture)
- [http://www.springerlink.com/content/u0p06167n6173512/fulltext.pdf Breiman, Leo (2001). "Random Forests". Machine Learning 45 (1), 5-32](Original Article)
- [https://web.archive.org/web/20080622230434/http://stat-www.berkeley.edu/users/breiman/RandomForests/cc_home.htm Random Forest classifier description](Site of Leo Breiman)
- [http://cran.r-project.org/doc/Rnews/Rnews_2002-3.pdf Liaw, Andy & Wiener, Matthew "Classification and Regression by randomForest" R News (2002) Vol. 2/3 p. 18] (Discussion of the use of the random forest package for R)
- [http://cm.bell-labs.com/cm/cs/who/tkh/papers/compare.pdf Ho, Tin Kam (2002). "A Data Complexity Analysis of Comparative Advantages of Decision Forest Constructors". Pattern Analysis and Applications 5, p. 102-112] (Comparison of bagging and random subspace method)
评论 (0)