【生信】“随机森林”在生物信息学方面的应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ARPOSPF/article/details/84873525

“随机森林”在生物信息学方面的应用


简介

随机森林是一种基于决策树的机器学习算法,可以用于样本分类或回归任务,属于非线性分类器。因此它可以挖掘变量之间复杂的非线性的相互依赖关系。通过随机森林分析,可以找出区分两组样本间差异的关键成分。

基础知识

1. 集成学习(ensemble learning)

通过建立多个模型组合来解决单一预测问题。工作原理是生成多个学习器模型,各自独立地学习和做出预测,最后将这些预测结合成单预测。

根据个体学习器的生成方式,集成学习可以分为两大类:

  • 个体学习器间存在强依赖关系,必须串行生成的序列化方法,代表是Boosting
  • 个体学习器间不存在强依赖关系,可同时生成的并行化方法,代表是Bagging和随机森林

2.Bagging

Bootstrap sampling:自助采样法,就是随机有放回的抽取,有一部分样本会多次出现,另一部分样本不出现。初始数据集中约有1/3的样本未出现在采样数据集中

Bagging:基于自助采样法(boostrap sampling),将所有待训练的数据放进一个黑盒子中,然后从这个bag中随机且有放回地抽取一部分数据出来用于训练一个基学习器(base estimator),再将这些基学习器结合。

3.决策树

决策树是一种基本的分类器,主要工作就是选取特征对数据集进行划分,最后把数据贴上不同的标签。常见的决策树算法有C4.5、ID3和CART

  • ID3:信息增益 最大的准则
  • C4.5:信息增益比 最大的准则
  • CART:回归树(平方误差 最小的准则);分类树(基尼系数 最小的准则)

决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构建一棵熵值下降最快的树,到叶子结点处的熵值为零,此时每个叶结点中的实例都属于同一类。

4.随机森林

  • 扰动:基学习器的多样性不仅来自样本扰动(对初始训练集有放回的采样),还有属性扰动(对样本属性的随机无放回的抽样)。
  • bagging+decision trees,得到随机森林。决策树作为基学习器,然后采用bagging技术训练一大堆小决策树,最后将这些小决策树组合起来,这样就得到了随机森林。
  • 预测:对分类任务,通常采用投票法,对回归任务,通常采用平均法;若分类任务得到的两个类具有相同的票数,则可考察学习器的置信度。

5.OOB Error

初始数据集每次约有1/3的样本不会出现在采样数据集中,所以使用这1/3的数据作为袋外数据(out of bag),用于取代测试集误差估计的方法。

6.过拟合

指学习时选择的模型所包含的参数过多,以致出现这一模型对已知数据预测很好,但对未知数据预测很差的现象。

7.剪枝

为了尽可能正确分类训练样本,通过去掉一些分支来降低过拟合风险:包括预剪枝和后剪枝。

随机森林介绍

每棵树的构建规则如下:

  1. 对于每棵树而言,随机且有放回地从训练集中抽取N个训练样本,作为该树的训练集;每棵树的训练集都是不同的,里面包含重复的训练样本。
  2. 如果每个样本的特征维度为M,指定一个常数m<<M,随机从M个特征中选取m个特征子集(不放回),每次树进行分裂时,从这m个特征中选择最优的,通常取\huge \sqrt{M};减小特征选择个数m,树的相关性和分类能力也会相应的降低;增大m,两者会随之增大。所以关键问题是如何选择最优的m(或者说是范围),这也是随机森林唯一的一个参数。
  3. 每棵树都尽最大程度的生长,并且没有剪枝的过程。

总结:两个随机性的引入对随机森林的分类性能至关重要。随机森林不容易陷入过拟合,且具有很好的抗噪能力,对缺省值不敏感。

袋外错误率

构造随机森林的关键问题是如何选择最优的m,要解决这个问题主要依据计算袋外错误率oob error。

随机森林的一个重要优点是没有必要对它进行交叉验证或者用一个独立的测试集来获得误差的一个无偏估计。它可以在内部进行评估,也就是说在生成的过程中就可以对误差建立一个无偏估计。

在构建每棵树时,对训练集使用了不同的boostrap sampling。所以对于每棵树而言(假设第k棵树),大约有1/3的训练实例没有参与第k棵树的生成,称为第k棵树的oob样本。

oob估计的计算方式如下:

  1. 对每个样本,计算它作为oob样本时树对它的分类情况(约1/3的树)
  2. 然后以简单多数投票作为该样本的分类结果
  3. 最后用误分个数占样本总数的比率作为随机森林的oob误分率。

随机森林的优缺点

  • 优点
    • 在当前所有算法中,具有极好的准确率
    • 能够有效地运行在大数据集上
    • 能够处理具有高维特征的输入样本,而且不需要降维能够评估各个特征在分类问题上的重要性,在生成过程中,能够获取到内部生成误差的一种无偏估计
    • 对于缺省值问题也能够得到很好的结果
    • 不需剪枝,不容易出现过拟合问题
  • 缺点
    • 无法控制模型内部的运行,只能在不同的参数和随机种子之间进行尝试

猜你喜欢

转载自blog.csdn.net/ARPOSPF/article/details/84873525