随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)方法。
2、特点
(1)具有极好的准确率
(2)能有效运行在大数据集上
(3)能够处理具有高维特征的输入样本,且不需要降维
(4)能够评估各个特征在分类问题上的重要性
(5)在生成过程中,能够获取到内部生成误差的一种无偏估计
(6)对于缺省值问题也能够获得很好得结果
(7)训练速度快,容易并行化计算
等等
缺点:
在噪音较大的分类或回归问题上会出现过拟合现象;
对于不同级别属性的数据,级别划分较多的属性会对随机森林有较大影响,则RF在这种数据上产出的数值是不可信的。
3、相关知识
(1)信息、熵和信息增益
(2)决策树
(3)集成学习
随机森林是集成学习的一个子类,它依靠于决策树的投票选择来决定最后的分类结果。
4、随机森林的生成(1)随机有放回的抽取样本训练每棵树;
随机原因:如果不进行随机抽样,每棵树的训练集都一样,那么最终训练出的树分类结果也是完全一样的,这样的话完全没有bagging的必要。
有放回原因:如果不是有放回的抽样,那么每棵树的训练样本都是不同的,都是没有交集的,这样每棵树都是"有偏的",都是绝对"片面的"(当然这样说可能不对),也就是说每棵树训练出来都是有很大的差异的;而随机森林最后分类取决于多棵树(弱分类器)的投票表决,这种表决应该是"求同",因此使用完全不同的训练集来训练每棵树这样对最终分类结果是没有帮助的,这样无异于是"盲人摸象"。
(2)如果每个样本的特征维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征子集,每次树进行分裂时,从这m个特征中选择最优的;
(3)每棵树都尽最大程度的生长,并且没有剪枝过程。
随机森林的“随机”指的就是(1)(2)两个随机性;引入其的作用:不容易过拟合,且具有很好的抗噪能力(如对缺省值不敏感)。
影响随机森林分类效果的因素:
5、袋外错误率(oob error)
我们知道,在构建每棵树时,我们对训练集使用了不同的bootstrap sample(随机且有放回地抽取)。所以对于每棵树而言(假设对于第k棵树),大约有1/3的训练实例没有参与第k棵树的生成,它们称为第k棵树的oob样本。
而这样的采样特点就允许我们进行oob估计,它的计算方式如下:
(note:以样本为单位)
1)对每个样本,计算它作为oob样本的树对它的分类情况(约1/3的树);
2)然后以简单多数投票作为该样本的分类结果;
3)最后用误分个数占样本总数的比率作为随机森林的oob误分率。
python实现可见:
https://blog.csdn.net/rosefun96/article/details/78833477