上海百趣生物医学科技有限公司
400-6699-117转1000
热门搜索:
分析测试百科网 > 百趣代谢组学 > 新闻动态 > 浅述生物学中的机器学习算法——随机森林篇

浅述生物学中的机器学习算法——随机森林篇

发布时间: 2021-04-16 10:44 来源:上海百趣生物医学科技有限公司

微信图片_20210416103317.jpg


01.随机森林概述

随机森林=决策树+bagging,随机森林是一种比较新的机器学习算法,是集成算法的一种。上世纪八十年代Breiman等人发明分类树算法,通过反复二分数据进行分类或回归,计算量大大降低,2001年Breiman把分类树组合成随机森林,即在样本和特征的使用上进行随机化,生成很多分类树,再汇总分类树结果。随机森林在运算量没有显著提高前提下提高了预测精度,随机森林对多元共线性不敏感,结果对缺失数据和非平衡数据比较稳健,可以很好地预测多达几千个解释变量的作用,被誉为当前最好算法之一。


随机森林是集成分类算法的一种,随机森林是用随机的方式建立一个森林,森林由很多的决策树组成,且每一棵决策树之间是没有关联的。得到随机森林模型后,当对新的样本进行预测时,随机森林中的每一棵决策树分别进行判断,bagging集成策略比较简单,对于分类问题通常采用简单的投票法,得到最多票数的类别为最终模型输出。对于回归问题通常使用平均法,T个弱分类器得到的回归结果进行算术平均即为最终模型输出。


02.相关基础知识

1. 集成学习概述

集成学习集合多个机器学习算法来完成学习任务。即“博采众长”,集成学习可用于分类问题集成、回归问题集成、特征选取集成、异常点检测集成等。

从下图可以看出集成学习通过训练集训练出若干个个体学习器,通过一定的结合策略,可以最终形成一个强学习器,达到博采众长的目的。

微信图片_20210416103412.jpg

据此可以看出,集成学习要解决的主要问题有两个,第一如何得到个体学习器;第二如何选择一种结合策略。


2. 集成学习中的个体学习器

得到若干个个体学习器,有两种方式。第一种是所有的个体学习器都是同一类的,或者说是同质的,即所有的个体学习器都是同一种机器学习算法,比如都是决策树或者神经网络个体学习器。第二种是所有的个体学习器不全是同一类学习器,如里面包含支持向量机、逻辑回归、朴素贝叶斯等个体学习器,再通过某种策略来确定最终的分类强学习器。

目前来看,同质个体学习器应用广泛。一般说的集成学习算法多指同质个体学习器。而同质个体学习器使用最多的模型是神经网络和决策树。

同质个体学习器按照个体学习器之间是否存在依赖关系分为两类:第一类是个体学习器之间不存在强依赖关系,一系列个体学习器并行生成,代表算法是bagging和随机森林(Random Forest)系列模型。第二类是个体学习器之间存在强依赖关系,一系列个体学习器都需要串行生成,代表算法boosting算法。


3. 集成学习之bagging

Bagging的算法原理用一张图概括如下:

微信图片_20210416103435.jpg


从上图可以看出,bagging的个体弱学习器的训练集是通过随机采样得到的,通过T次随机采样,可以得到T个采样集,可以分别独立的训练出T个弱学习器,再对这T个弱学习器通过集合策略得到最终的强学习器。这里的随机采样,一般采用的是自助采样法,即有放回地随机采样。这样每次采样集和原始训练集不同,和其他采样集也不同,这样便得到多个不同的弱学习器。

随机森林可以理解成是bagging的一个特化进阶版,所谓的特化是因为随机森林的弱学习器都是决策树。所谓的进阶是随机森林在bagging的样本随机采样基础上,又加了特征的随机选择,其基本思想和bagging一致。


4. 集成学习及结合策略

集成学习结合策略主要有三类:

(1)对于数值类的回归问题,常采用平均法的集合策略,即对所有弱学习器的输出结果求平均作为强学习器的输出。

(2)对于分类问题,常采用的集合策略是投票法,最简单的投票法是相对多数投票法,也就是少数服从多数,也就是T个弱学习器对样本x的预测结果中,数量最多的类为最终的分类类别,如果不止一个类别获得最高票,则随机选择一个作为最终类别;稍复杂的投票方法是绝对多数投票法,也就是要票数过半,在相对多数投票的基础上,不仅要最高票,还要票数过半,否则会没有预测结果;更复杂的是加权投票法,和加权平均法一样,每一个弱学习器的分类票数乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别即为最终预测类别。

(3)另外一种更加复杂的集合策略是学习法,代表方法是stacking,当使用stacking的结合策略时,我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,即将弱学习器的学习结果作为所加的一层学习器的输入,重新训练一个学习器来得到最终结果,这种情况下,我们将弱学习器成为初级学习器,把用于结合的学习器作为次级学习器,对于测试集,首先通过初级学习器预测一次,得到次级学习器的输入样本,再用次级学习器预测一次,得到最终的预测结果。


5. 决策树(Decision Tree)

决策树是一种基本的分类器,主要工作原理就是根据特征对数据集进行划分,最后把数据贴上两类不同的标签。构建好的决策树呈树状结构,可以理解成是if-then规则的集合,主要优点是模型具有较好的可读性,分类速度快。常见的决策树算法有ID3、C4.5、和CART。

下图为决策树模型的一个典型案例,根据西瓜的各种特征去判断西瓜是好瓜还是坏瓜,从根节点开始一级一级地进行判断决策,直到叶节点,也即判断出其是好瓜还是坏瓜。

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

微信图片_20210416103502.jpg

03.随机森林介绍

1. 随机森林原理


Bagging+decision trees,我们便可得到随机森林。随机森林对bagging只做了小的改动,基学习器的多样性不仅来自对初始训练集有放回的采样,还有对样本属性的随机无放回的抽样。将CART决策树作为弱分类器,然后采用bagging技术训练一些小决策树,最后将这些小决策树集合起来,便可得到一个森林模(随机森林)。


在对预测输出进行集合时,通常对分类任务使用简单投票法,对回归任务采用简单平均法。


2. 随机森林的构建过程

1) 在生成每棵决策树时,随机有放回地从训练集中抽取N个训练样本,作为该树的训练集(每棵树的训练集都是不同的,而且里面包含重复的训练样本)。

2) 若特征空间共有D个特征,则在每一轮生成决策树的过程中,从D个特征中随机选择其中的d个特征(d<D)组成一个新的特征集,通过使用新的特征集来生成决策树,d的选取要是最优的,通常取。通常减小特征选择的个数d,各决策树的相关性和分类能力也会相应降低,增大d,两者也都会随之增大。所以如何选择最优的d是一个关键的问题,也是随机森林的一个重要参数。

3) 重复以上两步s次,即建立s个决策树。

4) 这s个决策树形成随机森林,通过投票表决结果,得到最终的输出结果。

随机森林包括两个随机的层面:样本随机、特征选择随机。


3. 随机森林的评价指标

上面我们提到,构建随机森林的一个关键问题是如何选择最优的d,要解决这个问题主要依据计算袋外误差率obb error(out-of-bag error)。

随机森林有一个重要的优点是:没有必要对其进行交叉验证或用一个独立的测试集去获得误差的一个无偏估计。其可以在内部进行评估,即在生成过程中就对误差建立了一个无偏估计。在构建每个树时,我们对训练集采用了不同的bootstrap sample(随机且有放回的采样)。所以对每棵树来说,假设对第k棵树,大约有1/3的样本没有参与第k棵树的生成,它们称为第k棵树的obb样本。

根据采样特点我们可以进行obb估计,计算方式如下:

1) 对每个样本,计算其作为obb样本时决策树对它的分类情况。

2) 然后以简单多数投票作为样本的分类结果。

3) 最后用误分个数占样本总数的比率,作为随机森林的obb的误分率。

obb误分率是随机森林泛化误差的一个无偏估计,它的结果近似于需要大量计算的k折交叉验证。对随机森林而言,袋外误差率等于测试集的误差率。测试集上表现好,说明泛化能力强,反之说明泛化能力弱。


4. 随机森林分类模型案例

本案例是使用sklearn里的鸢尾花数据集,根据鸢尾花的不同特征组合构建随机森林模型,并对鸢尾花的进行分类。代码如下图:

微信图片_20210416103554.jpg

微信图片_20210416103556.jpg

不同两两特征组合对鸢尾花分类的准确率


微信图片_20210416103617.jpg

随机森林对鸢尾花数据的两特征组合的分类结果


由上图可知,所有鸢尾花被分为三类,不同两特征组合的分类准确率不同。

随机森林算法在随机决策树生成过程采用的Boostrap,所以在一棵树的生成过程并不会使用所有的样本,未使用的样本就叫(Out_of_bag)袋外样本(oob 数据集),通过袋外样本,可以评估这个树的准确度,其他子树叶按这个原理评估,最后可以取平均值。

oob_score = True:表示使用 oob 数据集作为测试数据集,估算算法的泛化能力;oob_score 默认为 False,不使用 oob 数据集作为测试数据集。

微信图片_20210416103637.jpg

max_depth = 3,没有出现过拟合

微信图片_20210416103649.jpg

max_depth = 5

微信图片_20210416103702.jpg

max_depth = 10,出现过拟合

微信图片_20210416103714.jpg


由上图可知,当使用obb数据做测试集时,不同的模型可以得到不同的obb误分率,当改变RF决策树的深度时(max_depth参数)时,同一模型的准确率和袋外误分率也不同,但当max_depth较大时,各模型准确率都随之增大,而袋外误分率却在变小,说明模型可能出现了过拟合现象。

当然,我们也可以通过其他指标来评价模型的优劣,如模型的混淆矩阵、ROC曲线等评价指标等,请多多关注阿趣代谢微信公众号的推送哟。

如需代码可以在文末或后台留言:姓名+单位+手机+邮箱+随机森林。也欢迎大家转给需要的小伙伴们!


标签:生物学 机器学习算法
移动版: 资讯 直播 仪器谱

Copyright ©2007-2023 ANTPEDIA, All Rights Reserved

京ICP备07018254号 京公网安备1101085018 电信与信息服务业务经营许可证:京ICP证110310号