ixxmu / mp_duty

抓取网络文章到github issues保存
https://archives.duty-machine.now.sh/
122 stars 30 forks source link

4.图解机器学习 | 随机森林分类模型详解 #4221

Closed ixxmu closed 11 months ago

ixxmu commented 11 months ago

https://mp.weixin.qq.com/s/yd_PBJKACVPHrem9ebt8uw

ixxmu commented 11 months ago

4.图解机器学习 | 随机森林分类模型详解 by 生信小知识

4.图解机器学习 | 随机森林分类模型详解

微信公众号:生信小知识
关注可了解更多的生物信息学教程及知识。问题或建议,请公众号留言;

目录

前言1.集成学习1)集成学习2)个体学习器3)集成学习核心问题(1)使用什么样的个体学习器?(2)如何选择合适的结合策略构建强学习器?2.Bagging1)Bootstrap Sampling2)Bagging3.随机森林算法1)随机森林算法介绍2)随机森林核心特点3)随机森林决策边界可视化4)随机森林算法优点(1)随机森林优点(2)随机森林缺点4.影响随机森林的参数与调优1)核心影响参数(1)生成单颗决策树时的特征数 max_features(2)决策树的棵数 n_estimators(3)树深 max_depth2)参数调优(1)RF划分时考虑的最大特征数 max_features(2)决策树的棵树 n_estimators(3)决策树最大深度 max_depth(4)内部节点再划分所需最小样本数 min_samples_split(5)叶子节点最少样本数 min_samples_leaf后记

前言

本系列内容均来自 ShowMeAI 论坛:https://www.showmeai.tech/

该论坛中内容详实,部分系列非常适合数学功底不那么好的同学学习,这里仅对 【图解机器学习】系列进行学习,并同时整理为笔记。

过往已发布笔记:

今天主要介绍随机森林的原理知识

本公众号已与ShowMeAI论坛负责人联系,并得到授权转载。在次给做机器学习的朋友们推荐下他们的微信公众号,有兴趣的同学可以自行关注。

1.集成学习

1)集成学习

学习随机森林,我们需要先了解一些概念,比如第1个大家要了解的概念是集成学习(ensemble learning)

随机森林分类模型; 集成学习; Ensemble Learning;

对于训练数据集,我们训练一系列「个体学习器」,再通过「结合策略」将它们集成起来,形成一个更强的学习器,这就是「集成学习」在做的事情,内核思想类似「三个臭皮匠,顶个诸葛亮」

2)个体学习器

个体学习器是相对于集成学习来说的,其实我们在之前了解到的很多模型,比如 C4.5 决策树算法、逻辑回归算法、朴素贝叶斯算法等,都是个体学习器。

  • 若集成中只包含同种类型的个体学习器,叫做「同质」集成,个体学习器称作「基学习器」。例如随机森林中全是决策树集成。

  • 若集成中包含不同类型的个体学习器,叫做「异质」集成,个体学习器称作「组件学习器」。例如同时包含决策树和神经网络进行集成。

个体学习器代表的是单个学习器,集成学习代表的是多个学习器的结合。

随机森林分类模型; 集成学习; 个体学习器;

3)集成学习核心问题

(1)使用什么样的个体学习器?
  • 个体学习器不能太「弱」,需要有一定的准确性

  • 个体学习器之间要具有「多样性」,即存在差异性

(2)如何选择合适的结合策略构建强学习器?
  • 并行组合方式,例如随机森林。

  • 串行组合方式,例如boosting树模型。

随机森林分类模型; 集成学习; 两个核心问题;

2.Bagging

我们在这里讲到的随机森林是并行集成模型,而Bagging是并行式集成学习方法最著名的代表。

1)Bootstrap Sampling

要理解bagging,首先要了解自助采样法(Bootstrap Sampling):

  • 给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中【有放回抽样】。

  • 上述过程重复m轮,我们得到m个样本的采样集,初始训练集中有的样本在采样集中多次出现,有的则从未出现。根据数学计算,可以证明:约63.2%的样本出现在采样集中,而未出现的约36.8%的样本可用作验证集来对后续的泛化性能进行「包外估计」

随机森林分类模型; Bagging; 自助采样法;

2)Bagging

Bagging是Bootstrap aggregating的缩写,是在Boostrap Sampling基础上构建的:上述的采样过程我们可以重复T次,采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,然后将这些基学习器进行结合

在对预测输出进行结合时:

  • Bagging 通常对分类任务使用简单投票法

  • Bagging 通常对回归任务使用简单平均法

这就 是Bagging 的基本流程。

随机森林分类模型; 参数调优;

从「偏差-方差分解」的角度看,Bagging主要关注降低方差,因此它在不剪枝的决策树、神经网络等易受到样本扰动的学习器上效用更明显

3.随机森林算法

1)随机森林算法介绍

Random Forest(随机森林,简称RF)是一种基于树模型的Bagging的优化版本。核心思想依旧是Bagging,但是做了一些独特的改进——RF使用了CART决策树作为基学习器

假设我们一共有N个样本,这些样本一共有M个特征,从这些样本中一共进行T次有放回抽样,每次抽样n个样本。具体过程如下:

  • 输入为样本集D ={(x1,y1), (x2,y2), …, (xN,yN) }

  • 对于每次抽样 t=1, 2, 3, …, T:

  • 对训练集进行第t次随机采样,共采集得到包含n个样本的采样集Dt

  • 用采样集Dt训练第t个决策树模型Gt(x):在训练决策树模型的节点的时候,在抽样得到的n个样本中,从全部M个特征中随机不放回选择m(m << M)个特征,利用信息增益基尼指数或者其他指标,从m个特征中选择一个最优的特征来做决策树的左右子树划分。

  • 左右子树划分后,继续从全部M个特征中随机不放回选择m(m << M)个特征,选择一个最优的特征来做决策树的左右子树划分。

  • 每棵树都一直这样分裂下去,直到该节点的所有训练样例都属于同一类,不需要剪枝

这样运行的结果是:生成了T个决策树

将模型应用到新的数据中时,会根据T个基模型(决策树)投出最多票数的类别为最终类别。

随机森林分类模型; 随机森林算法; Random Forest, RF;

2)随机森林核心特点

随机森林核心点是「随机」「森林」,也是给它带来良好性能的最大支撑。

「随机」主要体现在两个方面

  • 样本扰动:直接基于自助采样法(Bootstrap Sampling),使得初始训练集中约63.2%的样本出现在一个采样集中,并带来数据集的差异化。

  • 属性扰动:在随机森林中,对基决策树的每个结点,先在该结点的特征属性集合中随机选择k个属性,然后再从这k个属性中选择一个最优属性进行划分。这一重随机性也会带来基模型的差异性。

「集成」体现在:根据多个(差异化)采样集,训练得到多个(差异化)决策树,采用简单投票或者平均法提高模型稳定性和泛化能力

3)随机森林决策边界可视化

下面是对于同一份数据集(iris数据集),我们使用决策树和不同棵数的随机森林做分类的结果,我们对其决策边界做了可视化。

随机森林分类模型; 决策边界可视化; iris数据集;

可以很明显地看到,随着随机森林中决策树数量的增多,模型的泛化能力逐渐增强,决策边界越来越趋于平滑(受到噪声点的影响越来越小)。

4)随机森林算法优点

下面我们来总结一下随机森林的优缺点:

(1)随机森林优点
  • 对于高维(特征很多)稠密型的数据适用,不用降维,无需做特征选择。

  • 构建随机森林模型的过程,亦可帮助判断特征的重要程度

  • 可以借助模型构建组合特征。

  • 并行集成,有效控制过拟合

  • 工程实现并行简单,训练速度快

  • 对于不平衡的数据集友好,可以平衡误差

  • 对于数据缺失的情况,鲁棒性仍然强,可以维持不错的准确度

(2)随机森林缺点
  • 噪声过大的分类和回归数据集上还是可能会过拟合。

  • 相比单一决策树,因其随机性,模型解释会更复杂一些

4.影响随机森林的参数与调优

上面我们已经系统了解了随机森林的原理与机制,下面我们一起来看看工程应用实践中的一些重点,比如随机森林模型有众多可调参数,它们有什么影响,又如何调优。

1)核心影响参数

随机森林分类模型; 核心影响参数;
(1)生成单颗决策树时的特征数 max_features
  • 增加 max_features 一般能提高单个决策树模型的性能,但降低了树和树之间的差异性,且可能降低算法的速度

  • 太小的 max_features影响单颗树的性能,进而影响整体的集成效果。

  • 需要适当地平衡和选择最佳的 max_features

(2)决策树的棵数 n_estimators
  • 较多的子树可以让模型有更好的稳定性和泛化能力,但同时让模型的学习速度变慢

  • 我们会在计算资源能支撑的情况下,选择稍大的子树棵树

(3)树深 max_depth
  • 太大的树深,因为每颗子树都过度学习,可能会有过拟合问题

  • 如果模型样本量多特征多,我们会限制最大树深,提高模型的泛化能力。

2)参数调优

随机森林分类模型; 参数调优;
(1)RF划分时考虑的最大特征数 max_features
  • 总数的百分比,常见的选择区间是 [0.5-0.9]

(2)决策树的棵树 n_estimators
  • 可能会设置为 >50 的取值,可根据计算资源调整。

(3)决策树最大深度 max_depth
  • 常见的选择在 4-12 之间。

(4)内部节点再划分所需最小样本数 min_samples_split
  • 如果样本量不大,不需要调整这个值。

  • 如果样本量数量级非常大,我们可能会设置这个值为 16, 32, 64 等。

(5)叶子节点最少样本数 min_samples_leaf
  • 为了提高泛化能力,我们可能会设置这个值 >1

后记

这部分内容详细介绍了随机森林的算法模型原理,在理解了决策树的基础上,还是比较容易理解,并且对于后面的机器学习真的很有帮助,再次感叹 ShowMeAI 论坛整理的真的非常棒,对数学能力不太高的我真的非常友善了!

https://www.showmeai.tech/tutorials/34?articleId=191