随机森林是一个用随机方式建立的,包含多个决策树的分类器。其输出的类别是由各个树输出的类别的众数而定。随机森林的随机性主要体现在两个方面,一是样本采样的随机性,主要是有放回的重采样(bootstrap 采样);二是特征集的随机选取,即随机选取所有特征的一个子集,用来计算最佳分割方式。
在学习机器学习的随机森林算法之前,我们首先要了解一下集成学习(ensemble learning)的概念。
集成学习(ensemble learning)是将若干个弱分类器进行组合从而形成强分类器的学习策略。
通俗一点讲,集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来。
集成学习主要分为3类:
- bagging 算法,是 bootstrap aggregating 的简写,又称为自助采样法,它是一种有放回的抽样方法,是一个并行的学习方法,其中最经典的代表就是随机森林(RF-random forest)。
- boosting 算法,是一种可以用来减小监督学习中偏差的机器学习算法,提升方法内部又分两大分类,一个是基于权重分布(weight_boosting)变化的 AdaBoost,另一个代表是基于梯度提升的GB学习算法;此外 boosting 是一个串行的学习方法,每一轮迭代训练需要依赖上一次的训练结果。
- stacking 方法,它是指训练一个模型用于组合其他各个模型。首先我们先训练多个不同的模型,然后把之前训练的各个模型的输出为输入来训练一个模型,以得到一个最终的输出,典型的代表有 GBDT+LR,GBDT+FM。
随机森林的发展历史
随机森林是一种比较新的机器学习模型。
- Leo Breiman 于1994年提出了 Bagging 算法(Bootstrap aggregating,引导聚集算法),又称装袋算法。
- 随机森林是基于 Boostrap 自助法,从一个总样本中构造不同的子样本和子特征来对目标进行学习多颗决策树的分类器。
- Random Forests 这个术语是1995年由贝尔实验室的 Tin Kam Ho 所提出的随机决策森林(random decision forests)而来的。
- Leo Breiman 于2001年正式发表了 Random Forests。
随机森林的核心思想
随机森林的出现主要是为了解决单一决策树可能出现的很大误差(error)和过拟合(overfitting)的问题。
这个算法的核心思想就是将多个不同的决策树进行组合,利用这种组合降低单一决策树有可能带来的片面性和判断不准确性。通俗一点儿讲就是“三个臭皮匠赛过一个诸葛亮”。
具体来讲,随机森林是用随机的方式建立一个森林。随机森林是由很多的决策树组成,但每一棵决策树之间是没有关联的。在得到森林之后,当对一个新的样本进行判断或预测的时候,让森林中的每一棵决策树分别进行判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。
随机森林的构建过程
随机森林的构建要从决策树说起,每一颗树其实是一个 CART(分类回归树)。
随机森林的构建主要是2点:
- 样本采样策略,有放回的抽样;
- 待选特征的随机选取。
Bootstrap 自助法是随机森林的要点,主要是应用在样本采样和特征选择上;Bootstrap Methods 是 Bradley Efron 在1979年提出的,后续有很多的变种。
自助采样法最常用的方法是0.632自助法,具体内容参考 Bootstrap Sample(有放回抽样)- 0.632自助法
随机森林分类-投票法
投票法主要针对分类任务。
- 绝对多数投票法(majority voting)
- 相对多数投票法(plurality voting)
- 加权投票法(weighted voting)
随机森林回归-平均法
平均法主要针对回归任务。
- 简单平均法
- 加权平均法
随机森林的优缺点
随机森林有诸多的优点,同时也有一些缺陷。
随机森林的优点
- 实现比较简单。
- 在数据集上的表现良好,由于两个随机性的引入(样本随机,特征随机),使得随机森林不容易陷入过拟合,同时具有很好的抗噪声能力。
- 它能够处理很高维度(feature 很多)的数据,并且不用做特征选择,对数据集的适应能力强,既能处理离散型数据,也能处理连续型数据,数据集无需规范化。
- 由于每棵树可以独立、同时生成,容易做成并行化方法,所以可以提高训练速度,可以运用在大规模数据集上。
- 由于有袋外数据(OOB),可以在模型生成过程中取得真实误差的无偏估计,且不损失训练数据量。
- 在训练过程中,能够检测到 feature 间的互相影响,且可以得出 feature 的重要性,具有一定参考意义。
- 对于不平衡的数据集来说,它可以平衡误差。
- 如果有很大一部分的特征遗失,仍可以维持准确度。
随机森林的缺点
- 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合(随机森林在解决回归问题时,并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续的输出。当进行回归时,随机森林不能够做出超越训练集数据范围的预测,这可能导致在某些特定噪声的数据进行建模时出现过度拟合。(PS:随机森林已经被证明在某些噪音较大的分类或者回归问题上回过拟合)。
- 对于小数据或者低维数据(特征较少的数据),可能不能产生很好的分类(处理高维数据、处理特征遗失数据、处理不平衡数据是随机森林的长处)。