1.定义 随机森林是集成学习中bagging方法的一种,bagging的思想是每棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本,N棵树会有N个分类结果。而随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是一种最简单的 Bagging 思想。 2.生成每颗树生成的规则如下:
1)如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取N个训练样本(这种采样方式称为bootstrap sample方法),作为该树的训练集;
从这里我们可以知道:每棵树的训练集都是不同的,而且里面包含重复的训练样本(理解这点很重要)。
2)如果每个样本的特征维度为M,指定一个常数m(小于M),随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的;
3)每棵树都尽最大程度的生长,并且没有剪枝过程
一开始我们提到的随机森林中的“随机”就是指的这里的两个随机性。两个随机性的引入对随机森林的分类性能至关重要。由于它们的引入,使得随机森林不容易陷入过拟合,并且具有很好得抗噪能力(比如:对缺省值不敏感)。
关键问题是如何选择最优的m(或者是范围),这也是随机森林唯一的一个参数。 3.特点能够有效地运行在大数据集上
能够处理具有高维特征的输入样本,而且不需要降维;
对于缺省值问题也能够获得很好得结果
能够评估各个特征在分类问题上的重要性 4.袋外错误率上面我们提到,构建随机森林的关键问题就是如何选择最优的m,要解决这个问题主要依据计算袋外错误率oob error(out-of-bag error)。 随机森林有一个重要的优点就是,没有必要对它进行交叉验证或者用一个独立的测试集来获得误差的一个无偏估计。它可以在内部进行评估,也就是说在生成的过程中就可以对误差建立一个无偏估计。 我们知道,在构建每棵树时,我们对训练集使用了不同的bootstrap sample(随机且有放回地抽取)。所以对于每棵树而言(假设对于第k棵树),大约有1/3的训练实例没有参与第k棵树的生成,它们称为第k棵树的oob样本。 而这样的采样特点就允许我们进行oob估计,它的计算方式如下: (note:以样本为单位) 1)对每个样本,计算它作为oob样本的树对它的分类情况(约1/3的树); 2)然后以简单多数投票作为该样本的分类结果; 3)最后用误分个数占样本总数的比率作为随机森林的oob误分率
|