利用随机森林对特征重要性进行评估(公式原理)

这篇具有很好参考价值的文章主要介绍了利用随机森林对特征重要性进行评估(公式原理)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文参考来源于:
杨凯, 侯艳, 李康. 随机森林变量重要性评分及其研究进展[J]. 2015.

码字不易,各位看官大大的赞是我更细的动力!

一、引言

随机森林( r a n d o m      f o r e s t , R F random\;\; forest,RF randomforestRF)由 B r e i m a n Breiman Breiman等人在2001年提出。

R F RF RF具有很高的预测准确率,对异常值和噪声有很强的容忍度,能够处理高维数据(变量个数远大于观测个数),有效地分析非线性、具有共线性和交互作用的数据, 并能够在分析数据的同时给出变量重要性评分( v a r i a b l e i m p o r t a n c e      m e a s u r e s , V I M variableimportance\;\;measures,VIM variableimportancemeasuresVIM)。这些特点使得 R F RF RF特别适用于高维组学数据的研究,即在对疾病进行分类的同时通过 V I M VIM VIM值筛选出潜在的生物标志物,研究疾病发生、发展的生物学机制。然而, 由于在实际中由RF筛选变量使用的统计量不同,可能会使结果有较大的差异,为此本文在简单介绍 R F RF RF筛选变量的基础上,拟针对目前随机森林变量重要性评分的不同计算方法和新近提出的改进方法, 说明其在高维组学数据分析中的应用。

二、随机森林的基本原理

了解决策树的算法,那么随机森林是相当容易理解的。随机森林的算法可以用如下几个步骤概括:

1.用有抽样放回的方法(bootstrap)从样本集中选取 n n n个样本作为一个训练集;

2.用抽样得到的样本集生成一棵决策树。在生成的每一个结点:

(1)随机不重复地选择 d d d个特征

(2)利用这 d d d个特征分别对样本集进行划分,找到最佳的划分特征(可用基尼系数、增益率或者信息增益判别)

3.重复步骤1到步骤2共 k k k次, k k k即为随机森林中决策树的个数。

4.用训练得到的随机森林对测试样本进行预测,并用投票法决定预测的结果。

下图比较直观地展示了随机森林算法:

随机森林变量重要性评分及其研究进展,机器学习系列文章,随机森林,机器学习,决策树,特征重要性

图片来源:
杨凯, 侯艳, 李康. 随机森林变量重要性评分及其研究进展[J]. 2015.

R F RF RF中的每一棵分类树为二叉树,根节点包含全部训练自助样本,按照一定的原则,在每个节点从一组随机选取的变量中选择使分枝后节点“不纯度” 最小的变量作为分枝变量,分裂为左节点和右节点, 它们分别包含训练数据的一个子集, 分裂后的节点按照同样规则继续分裂, 直到满足分枝停止规则而停止生长, 具体过程见图 1。

“不纯度” 的衡量标准包括 G i n i Gini Gini不纯度、 熵和错误率等。 变量筛选使用 V I M VIM VIM统计量。

三、随机森林常规的变量重要性评分

现假定有变量 X 1    ,    X 2    ,    L    ,    X M X_1\;,\;X_2\;,\;L\;,\;X_M X1,X2,L,XM,需要计算出 M M M V I M VIM VIM得分统计量。

R F RF RF常规的 V I M VIM VIM计算方法分为两种,即根据 G i n i Gini Gini指数和袋外数据( O O B OOB OOB) 错误率计算得到, 变量 X j X_j Xj的得分统计量分别用 V I M j ( G i n i ) VIM_{j}^{(Gini)} VIMj(Gini) V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB)表示。

2.1 Gini指数

统计量 V I M j ( G i n i ) VIM_{j}^{(Gini)} VIMj(Gini)表示第 j j j个变量在 R F RF RF所有树中节点分裂不纯度的平均改变量。 G i n i Gini Gini指数的计算公式为:

G I m = ∑ k = 1 K p ^ m k ( 1 − p ^ m k )          ( 1 ) GI_{m}=\sum_{k=1}^K\hat{p}_{mk}(1-\hat{p}_{mk})\;\;\;\;(1) GIm=k=1Kp^mk(1p^mk)(1)

K K K为自助样本集的类别数, p ^ m k \hat{p}_{mk} p^mk为节点 m m m样本属于第 k k k类的概率估计值,当样本为二分类数据时( K = 2 K=2 K=2) ,节点 m m m G i n i Gini Gini指数为:

G I m = 2 p ^ m ( 1 − p ^ m )          ( 2 ) GI_{m}=2\hat{p}_{m}(1-\hat{p}_{m})\;\;\;\;(2) GIm=2p^m(1p^m)(2)

p ^ m \hat{p}_{m} p^m为样本在节点 m m m属于任意一类的概率估计值。

变量 X j X_j Xj在节点 m m m的重要性,即节点 m m m分枝前后 G i n i Gini Gini指数变化量为:

V I M j m ( G i n i ) = G I m − G I l − G I r          ( 3 ) VIM_{jm}^{(Gini)}=GI_{m}-GI_{l}-GI_{r}\;\;\;\;(3) VIMjm(Gini)=GImGIlGIr(3)

G I l GI_{l} GIl G I r GI_{r} GIr分别表示由节点 m m m分裂的两新节点的 G i n i Gini Gini指数。

如果变量 X j X_j Xj在第 i i i棵树中出现 M M M次,则变量 X j X_j Xj在第 i i i棵树的重要性为:

V I M i j ( G i n i ) = ∑ m = 1 M V I M j m ( G i n i )          ( 4 ) VIM_{ij}^{(Gini)}=\sum_{m=1}^MVIM_{jm}^{(Gini)}\;\;\;\;(4) VIMij(Gini)=m=1MVIMjm(Gini)(4)

变量 X j X_j Xj R F RF RF中的 G i n i Gini Gini重要性定义为:

V I M j ( G i n i ) = 1 n ∑ i = 1 n V I M i j ( G i n i )          ( 5 ) VIM_{j}^{(Gini)}=\frac{1}{n}\sum_{i=1}^nVIM_{ij}^{(Gini)}\;\;\;\;(5) VIMj(Gini)=n1i=1nVIMij(Gini)(5)

其中, n n n R F RF RF中分类树的数量。

2.2 OOB 错误率

V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB)的定义为:在 R F RF RF的每棵树中,使用随机抽取的训练自助样本建树,并计算袋外数据( O O B OOB OOB)的预测错误率,然后随机置换变量 X j X_j Xj的观测值后再次建树并计算 O O B OOB OOB的预测错误率,最后计算两次 O O B OOB OOB错误率的差值经过标准化处理后在所有树中的平均值即为变量 X j X_j Xj的置换重要性( V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB))。

变量 X j X_j Xj在第 i i i棵树的 V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB)为:

V I M j ( O O B ) = ∑ p = 1 n o i I ( Y p = Y p i ) n o i − ∑ p = 1 n o i I ( Y p = Y p , π j i ) n o i VIM_{j}^{(OOB)}=\frac{\sum_{p=1}^{n_o^i}I(Y_p=Y_p^i)}{n_o^i}-\frac{\sum_{p=1}^{n_o^i}I(Y_p=Y_{p,\pi_j}^i)}{n_o^i} VIMj(OOB)=noip=1noiI(Yp=Ypi)noip=1noiI(Yp=Yp,πji)

其中, n o i n_o^i noi为第 i i i棵树 O O B OOB OOB数据的观测例数, I ( g ) I(g) I(g)为指示函数,即两值相等时取1,不等时取0; Y p ∈ { 0 , 1 } Y_p\in\{0,1\} Yp{0,1}为第 p p p个观测的真实结果, Y p i ∈ { 0 , 1 } Y_p^i\in\{0,1\} Ypi{0,1}为随机置换前第 i i i棵树对 O O B OOB OOB数据第 p p p个观测的预测结果, Y p , π j i ∈ { 0 , 1 } Y_{p,\pi_j}^i\in\{0,1\} Yp,πji{0,1}为随机置换后第 i i i棵树对 O O B OOB OOB数据第 p p p个观测的预测结果。

当变量 j j j没有在第 i i i棵树中出现时, V I M i j ( O O B ) = 0 VIM_{ij}^{(OOB)}=0 VIMij(OOB)=0

变量 X j X_j Xj R F RF RF中的置换重要性定义为:

V I M j ( O O B ) = ∑ i = 1 n V I M i j ( O O B ) n VIM_{j}^{(OOB)}=\frac{\sum_{i=1}^nVIM_{ij}^{(OOB)}}{n} VIMj(OOB)=ni=1nVIMij(OOB)

其中, n n n R F RF RF中分类树的数量。

2.3 常规变量重要性评分的优缺点

V I M j ( G i n i ) VIM_{j}^{(Gini)} VIMj(Gini)在数据挖掘中估计变量重要性时有着广泛的应用。 当变量为连续型变量且互不相关时, V I M j ( G i n i ) VIM_{j}^{(Gini)} VIMj(Gini)的估计是无偏的;

当信噪比较低时, V I M j ( G i n i ) VIM_{j}^{(Gini)} VIMj(Gini)的准确性也高于 V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB),因此, V I M j ( G i n i ) VIM_{j}^{(Gini)} VIMj(Gini)有更高的稳定性。

然而, 当同时存在连续变量和分类变量或者分类变量的水平数不同时, V I M j ( G i n i ) VIM_{j}^{(Gini)} VIMj(Gini)估计则不够准确。由于 K K K个水平的分类变量在节点处可以有 2 K − 1 − 1 2^{K-1}-1 2K11种分割, 连续变量在节点处可以有 b − 1 b-1 b1种分割( b b b为样本量)。在备选分割较多时, 即使变量没有分类作用, 也可能使 G i n i Gini Gini指数降低, 从而更容易被选为分枝变量, 即 V I M j ( G i n i ) VIM_{j}^{(Gini)} VIMj(Gini)被高估。 实际上, 由于 G i n i Gini Gini指数的计算问题, 水平数多的分类变量的 G i n i Gini Gini指数降低会大于水平数少的分类变量。

当分类变量水平数相同时, 如果不同变量的水平间差别不同, 容易过高估计水平间差别大的变量的 V I M j ( G i n i ) VIM_{j}^{(Gini)} VIMj(Gini) 。 在 SNP 数据分析中, Nicodemus 等人指出当所有 SNP 都不具有分类能力时,不相关 SNP 的 V I M j ( G i n i ) VIM_{j}^{(Gini)} VIMj(Gini)高于高度相关 SNP 的 V I M j ( G i n i ) VIM_{j}^{(Gini)} VIMj(Gini)

事实上, V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB)在实际中的应用范围更加广泛。 由于 V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB)是通过 O O B OOB OOB数据计算的, 因此可以看作变量具有的分类能力, 没有分类能力的变量在观测值置换前后的 O O B OOB OOB错误率不会发生改变, 即数学期望 E ( V I M j ( O O B ) ) = 0 E(VIM_{j}^{(OOB)})=0 E(VIMj(OOB))=0,此外, V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB)不仅能够衡量变量单独的分类能力, 还能够衡量变量间交互作用的分类能力。

当同时存在连续变量和分类变量或者分类变量水平数不同时, 并不会影响 V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB)准确性。 V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB)是通过随机置换变量观测值前后 O O B OOB OOB错误率的差值计算的, 即使没有分类作用, 水平数多的变量也更容易被选为分枝变量, 但置换前后并不会影响 O O B OOB OOB错误率,同时会使 V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB)的变异增大。

在分类数据不平衡时, V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB)的准确性会受到一定影响。例如多数为正常人, 无论变量是否置换, 大部分的数据都会被预测为正常, 虽然 O O B OOB OOB错误率受到的影响可能不大,但却会严重低估所有变量的 V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB)

当单棵树的预测准确率较低时(如 O O B OOB OOB错误率达到 50%) , 会低估变量的 V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB)

当置换前 O O B OOB OOB错误率已经很大时, 置换变量观测值使得 OOB 错误率变大的可能性降低, 从而低估变量的 V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB)

当没有分类能力的变量与有分类能力的变量相关时, 可能低估相关有分类能力变量的 V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB),且估计方差变异增加, 而此时没有分类能力变量的 V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB)则被高估。

组学数据中存在大量的噪声变量, 当变量数目巨大而具有分类能力的变量所占比例很小时, R F RF RF建模容易受到大量噪声变量的干扰, 使变量的 V I M VIM VIM计算受到影响, 变量筛选的结果不可信。

2.4 变量重要性( VIM ) 的显著性检验

V I M VIM VIM给出了变量的重要性排序, 但无法在变量筛选时给出显著性假设检验的阈值。 事实上, 当所有变量都没有分类能力时, V I M VIM VIM也会给出变量重要性排序, 筛选出不具有分类能力的变量; 而当有分类能力的变量很多时, 仅通过变量的排序进行变量筛选, 可能漏掉一些具有分类能力的变量。

B r e i m a n Breiman Breiman等人提出通过 Z Z Z值直接计算 V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB)的显著性, 即:

Z = V I M j ( O O B ) / ( σ ^ / n ) Z=VIM_{j}^{(OOB)}/(\hat{\sigma}/\sqrt{n}) Z=VIMj(OOB)/(σ^/n )

其中, σ ^ \hat{\sigma} σ^ R F RF RF中各棵树 V I M j ( O O B ) VIM_{j}^{(OOB)} VIMj(OOB)的标准差, n n n为随机森林( R F RF RF)中树的数量。 然而, S t r o b l Strobl Strobl等人通过模拟实验表明: Z Z Z值的检验效能与样本量 b b b及树的数量 n n n有很大的关系, 当样本量 b b b很大而树的数量 n n n小时, 检验效能接近于0。文章来源地址https://www.toymoban.com/news/detail-830731.html

到了这里,关于利用随机森林对特征重要性进行评估(公式原理)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 决策树分析特征重要性可视化无监督特征筛选
  • 【Python机器学习】决策树——树的特征重要性

    【Python机器学习】决策树——树的特征重要性

    利用一些有用的属性来总结树的工作原理,其中最常用的事特征重要性,它为每个特征树的决策的重要性进行排序。对于每个特征来说,它都是介于0到1之间的数字,其中0代表“根本没有用到”,1代表“完美预测目标值”。特征重要性的求和为1。 将特征重要性进行可视化:

    2024年02月03日
    浏览(11)
  • 数据分析 | 特征重要性分析 | 树模型、SHAP值法

    数据分析 | 特征重要性分析 | 树模型、SHAP值法

            在分析特征重要性的时候,相关性分析和主成分分析往往是比较简单的方法,相关性分析是通过计算特征与目标变量之间的相关系数来评估特征的重要性。它可以告诉我们特征和目标变量之间的线性关系程度,但对于非线性关系就无能为力了;主成分分析是一种降

    2024年02月10日
    浏览(12)
  • 当进行一个npm包开发时,依赖管理的重要性

    当一个项目被拉下来并执行 npm install 的时候,其实 dependencies 和 devDependencies 都会被安装。 如果项目有严格区分生产、开发环境的话,是可以通过 --production 来以只安装 dependencies 字段的模块。 一个项目如果被当做第三方包引用的时候,它的 dependencies 和 devDependencies 的区分就

    2024年02月14日
    浏览(40)
  • LLMs:《A Survey on Evaluation of Large Language Models大型语言模型评估综述》理解智能本质(具备推理能力)、AI评估的重要性(识别当前算法的局限性+设

    LLMs:《A Survey on Evaluation of Large Language Models大型语言模型评估综述》理解智能本质(具备推理能力)、AI评估的重要性(识别当前算法的局限性+设

    LLMs:《A Survey on Evaluation of Large Language Models大型语言模型评估综述》翻译与解读 导读 :该文章首先介绍了人工智能(AI)对机器智能的专注,并探讨了评估AI模型的方法。随后,重点介绍了大语言模型(LLMs)的背景和特点,以及它们在自然语言处理、推理、生成等各类任务中

    2024年02月03日
    浏览(15)
  • 多线程在编程中的重要性有什么?并以LabVIEW为例进行说明

    多线程在编程中的重要性体现在以下几个方面: 并行处理: 多线程允许程序同时执行多个任务,这在现代多核心处理器上尤其重要。通过并行处理,可以显著提高程序的执行效率和响应速度。 资源利用最大化: 通过多线程,可以更有效地使用计算机的CPU资源。在一个线程等

    2024年01月20日
    浏览(16)
  • 从IC曲线提取特征,采用随机森林对电池SOH进行估计

    从IC曲线提取特征,采用随机森林对电池SOH进行估计

    现我们成立了梦龙工作室,工作室成员皆为985在读理工科学生,排名前20%,5%等,获得过国赛一等奖,大数据杯二等奖,美赛M奖,以一作发表ei会议,SCI二区等。旨在帮助大学生参与竞赛,如mathorcup 大数据杯,国赛,美赛,电工杯等等,入群可提问比赛或数据处理有关问题,

    2023年04月10日
    浏览(12)
  • 重要性采样

    前言 离散型随机变量 X X X ,我们可以通过以下方法求取其期望: 直接计算法,需要知道概率分布: E ( X ) = ∑ x ∈ X [ p ( x ) ⋅ x ] mathbb{E}(X)=sum_{xin X}left[p(x)cdot xright] E ( X ) = x ∈ X ∑ ​ [ p ( x ) ⋅ x ] 采样计算,这时即使 X X X 概率分布未知,依据大数定律,当采样次数够

    2024年02月09日
    浏览(18)
  • 【概率方法】重要性采样

    【概率方法】重要性采样

    假设我们有一个关于随机变量 X X X 的函数 f ( X ) f(X) f ( X ) ,满足如下分布 p ( X ) p(X) p ( X ) 0.9 0.1 f ( X ) f(X) f ( X ) 0.1 0.9 如果我们要对 f ( X ) f(X) f ( X ) 的期望 E p [ f ( X ) ] mathbb{E}_p[f(X)] E p ​ [ f ( X ) ] 进行估计,并且我们有一些从 p p p 中采样的样本,那么朴素的想法是,直接

    2024年02月04日
    浏览(21)
  • 性能优化的重要性

    性能优化的重要性

    博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之一~ 🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄

    2024年02月12日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包