机器学习——随机森林算法

机器学习——随机森林算法

1、随机森林引入

在之前的文章机器学习——AdaBoost算法中,我们引入了集成学习的概念,我们再来回忆一下集成学习的基本框架:
在这里插入图片描述

上述的每一个学习器称为弱学习器,通过多个弱学习器,最终构建出集成学习器系统,集成学习系统主要可以分成两个类别,第一个是各个弱学习器之间是有关的,第二种是各个学习器之间是无关的,对于第一种,我们已经讲述了AdaBoost算法,我们接下来是讲述关于第二个分类的代表算法——随机森林。

对于随机森林而言,其也是由多个弱学习器所构建的,每一个若学习器都是一个决策树,关于决策树的相关知识,可以参考我之前的文章机器学习算法—决策树(ID3)算法。在这里就不具体描述了。

2、随机森林具体描述

2.1 随机森林的基本流程

  1. 根据训练数据,构建出多棵决策树,形成随机森林。
  2. 对于测试数据,将测试数据输入到随机森林中,每一棵决策树做出预测结果。
  3. 对于每一棵决策的决策结果,根据少数服从多数的投票方法或者加权的方式来决定最终的结果。

2.2 随机森林的构建过程

我们假设训练集包括M个训练样本,具体形式为:
D = [ X 1 , X 2 , . . . . . , X M ] D=[X_1,X_2,.....,X_M]
每一个 X i X_i 都是一个训练样本。

  1. 首先,我们需要对样本集合进行有放回的随机抽样,我们假定每一个样本的被抽样的概率为:
    P i = 1 M P_i=\frac{1}{M}
    P i P_i 表示第i个样本被抽样的概率。我们每次抽取M个样本来构建一棵决策树。这里我们需要重点关注一下,首先对于D中的一个样本 X i X_i 由于抽样是有放回的抽样,那么也就是说该样本可能被一棵决策树多次的抽中,也可能没有别任何决策树抽中。有放回抽样的原因在于使得各个决策树之间是有重复的数据,如果各个决策树的数据是完全不相干的,那么在指定分类结果的时候,由于数据完全不同,我们无法去评估每一个决策树生成的结果的好坏。这种少数服从多数的分类结果也是片面的。
  2. 在进行了K次抽样之后,我们也就构建出来了K棵决策树,在构建决策树的过程中没有采用剪枝的方法。但是在构建随机森林的时候,如果每一个样本的特征维度过高,我们也可以选择一部分特征来构建决策树。但是减少分类特征的个数,分类的效果也会下降,所有选择构建决策树的特征个数N,是构建随机森林的一个超参数。

最后,我们用一个图来描述一下:
在这里插入图片描述

2.3 特征个数N的选择

上面我们介绍了,随机森林中特征个数的选择是一个超参数,那么我们应该如何选择这个超参数N呢?这里使用的是袋外错误率(out-of-bag)。

根据上面的描述,我们可以知道对于某一棵决策树J而言,其没有用的训练数据的全部样本,每一棵决策树大概有1/3的样本没有参与训练,这些样本称为J的oob样本。

对于每一个样本而言:
1、计算其作为oob样本对应的决策树对其分类情况。
2、根据投票的规则,决定该样本的分类结果
3、最后使用被错误分类的样本和样本总数的误差作为损失。
4、通过修改选择特征的个数N来降低上述的误差。

3 参考

  1. 随机森林算法及其实现