源地址 https://blog.csdn.net/haimengao/article/details/49615955
随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。随机森林可以用于分类和回归。
分类:
在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类,然后看看哪一类被选择最多,就预测这个样本为那一类。
回归:
在决策树的根部,所有的样本都在这里,此时树还没有生长,这棵树的残差平方和就是回归的残差平方和。然后选择一个变量也就是一个属性(feature),这个变量使得通过这个进行分类后的两部分的分别的残差平方和的和最小。然后在分叉的两个节点处,再利用这样的准则,选择之后的分类属性。一直这样下去,直到生成一颗完整的树。
回归树——预测值为叶节点目标变量的加权均值
分类树——某叶节点预测的分类值应是造成错判损失最小的分类值。
算法思想解释:
在上述中,这些决策树好比是臭皮匠,森林就是臭皮匠的聚集之地。在分类中,倘若臭皮匠大部分都决策出选择类别A(多数表决法),那么这就是最终的结果A(三个臭皮匠顶过一个诸葛亮)。
算法知识点:
决策树就是利用实例(instance)的特征,进行生成。决策树实际上是将空间用超平面进行划分的一种方法,每次分割的时候,都将当前的空间一分为二,需要信息熵的知识点。比如说下面的决策树:
在这里,x与y分别表示实例中的某个特征。
因此,在决策树中就涉及到了对特征的选取。
在建立每一棵决策树的过程中,有两点需要注意 - 采样与完全分裂。首先是两个随机采样的过程,random forest对输入的数据要进行行、列的采样。
对于行采样:bootstrap方式:采用有放回的方式,也就是在采样得到的样本集合中,可能有重复的样本。假设输入样本为N个,那么采样的样本也为N个。这样使得在训练的时候,每一棵树的输入样本都不是全部的样本,使得相对不容易出现over-fitting。
注: bootstrap方式采取有放回抽样,因此,针对N个样本中的某一个样本,可能不被选中,也可能被选中多次,这样组合成为一组训练集(N个样本)
然后进行列采样:m个feature就是用来做决策的:从M个feature中,选择m个(m << M)。之后就是对采样之后的数据使用完全分裂的方式建立出决策树,这样决策树的某一个叶子节点要么是无法继续分裂的,要么里面的所有样本的都是指向的同一个分类。一般很多的决策树算法都一个重要的步骤 - 剪枝,但是这里不这样干,由于之前的两个随机采样的过程保证了随机性,所以就算不剪枝,也不会出现over-fitting。