随机森林

决策树

随机森林算法是机器学习、计算机视觉等领域内应用极为广泛的一个算法,它不仅可以用来做分类,也可用来做回归即预测,随机森林机由多个决策树构成,相比于单个决策树算法,它分类、预测效果更好,不容易出现过度拟合的情况。

随机森林

图1 具体例子

决策树的含义:

决策树是数据挖掘与机器学习领域中一种非常重要的分类器,算法通过训练数据来构建一棵用于分类的树,从而对未知数剧进行高校分类。

决策树的构建步骤:

  1. 将所有记录看作是一个节点
  2. 遍历每个记录的分割方式,找到最好的分割点
  3. 利用分割点将记录分割成两个子节点C1和C2
  4. 对子结点C1和C2重复执行步骤2. 3. 直到满足特定条件为止。

分割点:

寻找好的分割点是通过量化分割后类的纯度来确定的,目前有三种纯度计算方式,分别是Gini不纯度、熵(Entropy)及错误率,它们的公式定义为:随机森林(1)、随机森林(2)、随机森林(3)。公式中的P(i)表示记录中第i类记录数占总记录数的比例。上面的三个公式均是值越大表示越"不纯",值越小表示越"纯"。最常用的是Gini不纯度公式。

互信息(信息增益):

指的是两个随机变量之间的关联程度,即给定一个随机变量后,另一个随机变量不确定性的削弱程度,因而互信息取值最小为0,意味着给定一个随机变量对确定另一个随机变量没有关系。取值最大,意味着给定一个随机变量,能完全消除另一个随机变量的不确定性。

对于步骤1中特征的选择(ID3):

  1. 假设约会去或不去的事件为Y,其信息熵为H(Y);
  2. 假设给定特征的条件下,其条件信息熵为H(Y|长相),H(Y|收入),H(Y|身高)
  3. 分别计算信息增益:G(Y,长相)=I(Y|长相)=H(Y)-H(Y|长相)、G(Y,收入)=I(Y|收入)=H(Y)-H(Y|收入)
  4. 选择信息增益最大的特征作为分类特征,因为增益信息大的特征意味着给定这个特征,能很大的消除去约会还是不约会的不确定性。
  5. 迭代选择特征即可。

决策树的优点:

  1. 决策树模型可读性好,具有描述性,有助于人工分析
  2. 效率高,决策树只需要一次构建,反复使用,每一次预测的最大计算次数不超过决策树的深度。

决策树的缺点:

  • 决策树很容易导致过度拟合(overfitting),因此在实际应用中需要设定停止条件,当达到停止条件时,直接停止决策树的构建。但这仍然不能完全解决过度拟合问题,过度拟合的经典表现是决策树对训练数据错误率很低,而对测试数据其错误率却非常高。
  • 过度拟合原因:(1)训练数据中存在噪声;(2)数据不具有代表性。过度拟合的经典表现是决策树的节点过多,因此实际中常常需要对构建好的决策树进行枝叶剪裁(Prune Tree),但它不能解决根本问题,随机森林算法的出现能够较好地解决过度拟合问题。

随机森林

通过构建大量的决策树组成森林来防止过拟合;虽然单个树可能存在过拟合,但通过广度的增加就会消除过拟合现象。由多个决策树构成的森林,算法分类结果由这些决策树投票得到,决策树在生成的过程中分别在行方向和列方向上添加随机过程,行方向上构建决策树时采用放回抽样(bootstraping)得到训练数据,列方向上采用无放回随机抽样得到特征子集,并据此得到其最优切分点,这便是随机森林算法的基本原理。

随机森林在bagging的基础上更进一步:

  1. 样本的随机:从样本集中用Bootstrap随机选择n个样本
  2. 特征的随机:从所有属性中随机选择K个属性,选择最佳分割属性作为节点建立CART决策树(泛化的理解,这里面也可以是其他类型的分类器,比如SVM、Logistics)
  3. 重复以上两步m次,即建立了m颗CART决策树
  4. 这m个CART形成随机森林,通过投票表决结果,决定数据属于哪一类
随机森林
图2: 随机森林算法示意图

                        

关于调参:

  1. 如何选取K, 可以考虑有N个属性,取随机森林
  2. 最大深度,不超过8层
  3. 颗数
  4. 最小分裂样本数
  5. 类别比例

随机森林的优点:

  • 在数据集上表现良好
  • 在当前的很多数据集上,相对其他算法有很强的优势
  • 它能够处理很高维度(feature)很多的数据,并且不用做特征选择
  • 在训练完成后,它能够给出哪些feature比较重要
  • 训练速度快
  • 在训练过程中,能够检测到feature间的互相影响
  • 实现比较简单
  • 随机森林在对数据进行分类的同时,还可以给出各个变量(基因)的重要性评分,评估各个变量在分类中所起的作用。

随机森林关于特征选择的代码实现:

点击打开链接/RandomForest.py