随机森林(分类与回归)
随机森林(可用于分类和回归)
随机森林主要应用于回归和分类。
随机森林在运算量没有显著提高的前提下提高了预测精度。
1、简介
随机森林由多棵决策树构成,且森林中的每一棵决策树之间没有关联,模型的最终输出由森林中的每一棵决策树共同决定。
处理分类问题时,对于测试样本,森林中每棵决策树会给出最终类别,最后综合考虑森林内每一棵决策树的输出类别,以
投票方式来决定测试样本的类别;处理回归问题时,则以每棵决策树输出的均值为最终结果。
2、随机森林的随机性
体现在两个方面:
Ⅰ:样本的随机性,从训练集中随机抽取一定数量的样本,作为每颗决策树的根节点样本;
Ⅱ:属性的随机性,在建立每颗决策树时,随机抽取一定数量的候选属性,从中选择最合适的属性作为分裂节点。
3、随机森林算法框架
具体步骤:
(1)从训练集中随机抽取一定数量的样本,作为每棵树的根节点样本;
(2)在建立决策树时,随机抽取一定数量的候选属性,从中选择最合适属性作为分裂节点;(决策树构造见《决策树分类算法及python代码实现案例》)
(3)建立好随机森林以后,对于测试样本,进入每一颗决策树进行类型输出或回归输出;若是分类问题,以投票的方式输出最终类别,若是回归问题,
每一颗决策树输出的均值作为最终结果。
在建立每一棵决策树的过程中,有两点需要注意:采样与完全分裂
首先是两个随机采样的过程,随机森林对输入的数据要进行行、列的采样。对于行采样,采用有放回的方式,也就是在采样得到的样本集合中,可能有重复的样本。
假设输入样本为N个,那么采样的样本也为N个。这样使得在训练的时候,每一棵树的输入样本都不是全部的样本,使得相对不容易出现过拟合over-fitting。
然后进行列采样,从M个feature中,选择m个(m << M)。之后就是对采样之后的数据使用完全分裂的方式建立出决策树,这样决策树的某一个叶子节点要么是无
法继续分裂的,要么里面的所有样本的都是指向的同一个分类。
一般很多的决策树算法都一个重要的步骤 – 剪枝,但是这里不这样干,由于之前的两个随机采样的过程保证了随机性,所以就算不剪枝,也不会出现over-fitting。
每一棵决策树就是一个精通于某一个窄领域的专家(因为我们从M个feature中选择m让每一棵决策树进行学习),这样在随机森林中就有了很多个精通不同领域的专家,
对一个新的问题(新的输入数据),可以用不同的角度去看待它,最终由各个专家,投票得到结果。
4、可优化的参数
决策树算法中可优化的参数有:最小叶节点样本数、剪枝方式等。
随机森林中可优化的参数有:森林中决策树的棵数。