机器学习第17篇 - 特征变量筛选(1)

高维数据包括的检测变量越来越多,如基因表达数据中检测到的基因数目、扩增子测序中的OTU数目等。在训练模型时通常需要先对数据去冗余,提取一些关键变量。这不只可以加速模型的构建还可以降低模型的复杂度,使其更易于解释 (而不只是一个预测黑盒子)。同时也有助于提高模型的性能(或在不损失太多模型性能的基础上获得更简单的模型),降低过拟合问题的出现。

主成分分析、奇异值分解是常用的降维方式。如PCA通过把原始变量进行线性组合获得主成分就是一个特征选择的过程。在使用tSNE算法进行单细胞聚类时使用的就是核心的主成分。但PCA等未考虑原始特征值与其所属分类或响应值的关系。因此并不适用于所有的情况。

有一些算法如随机森林等在构建模型时可以自己选择有最合适的分类或预测能力的特征集合。前面随机森林算法之理论概述提到,基于随机置换的变量的整体重要性得分(ACS)是评估变量重要性的一个比较可靠的方式。但这种方式获得的ACS Z-score只能用于排序确定哪些变量更重要,但不能根据统计显著性获得所有重要的变量。因此如果我们的目的还希望鉴定出哪些特征对分类或预测有贡献时,还需要借助其他的方式。

特征递归消除(RFE, recursive feature elimination)是一个常用的方法;它基于模型预测性能评估指标如准确性等选择一个性能较佳的最小集合的特征变量。它首先应用所有的特征变量构建模型,然后移除对模型最不重要的一定比例的变量再次构建模型;持续迭代直至获得准确性最高的模型。

在后续应用预测模型时,只需要使用数目比较少的变量,这样的好处是便于新样品的变量检测。但在临床应用时,不同的数据集包含的变量可能相差较大,共有的变量较少,但却可以获得相似的预测性能。其中一个主要原因是组学数据中,很多变量之间是相关性比较强的。因此不同的变量集合可能会获得同样的预测性能。而在构建模型时保留这些相关的冗余变量可以获得更稳定、准确的预测结果,同时对病理机制也能提供更全面的解释。

其它变量选择方法不去除冗余变量,而是通过估计不相干变量的重要性值的分布,选择具有显著更高重要性值的变量作为预测变量。这些方法越来越受欢迎。包括permutation (Perm)和它的参数化版本Altmann,Boruta, r2VIM (recurrent relative variable importance)Vita。在2019年的一篇基于组学数据的评估文章中得出结论:BorutaVita算法的稳定性最好,适合分析高维数据。Vita的计算速度比Boruta快很多更适合大数据集,但只有Boruta可用于低维数据。(https://doi.org/10.1093/bib/bbx124)

Abbreviation Name Goal Approach R package Citationsa
Altmann Altmann All relevant variables Permutation of outcome; parametric P-value R code on first author’s Web site (http://www.altmann.eu/documents/PIMP.R) Implemented in ranger package (https://cran.r-project.org/web/packages/ranger/index.html) and vita package (https://cran.r-project.org/web/packages/vita/index.html) 511
Boruta Boruta All relevant variables Importance significantly larger than those of shadow variables Boruta (https://cran.r-project.org/web/packages/Boruta/index.html) 1271
Perm Permutation All relevant variables Permutations of outcome; nonparametric P-value No specific implementation for RF
r2VIM Recurrent relative variable importance All relevant variables Relative importance based on minimal observed importance; several runs of RF r2VIM (http://research.nhgri.nih.gov/software/r2VIM) 35
RFE Recursive feature elimination Minimal set RF with smallest error based on iterative removal of least important variables varSelRF (https://cran.r-project.org/web/packages/varSelRF/index.html) 2668
Vita Vita All relevant variables P-values based on empirical null distribution based on non-positive importance scores calculated using hold-out approach Vita (https://cran.r-project.org/web/packages/vita/index.html) Implemented in ranger package (https://cran.r-project.org/web/packages/ranger/index.html) 82
下面我们就逐个实战比较下这些方法!

机器学习系列教程

从随机森林开始,一步步理解决策树、随机森林、ROC/AUC、数据集、交叉验证的概念和实践。

文字能说清的用文字、图片能展示的用、描述不清的用公式、公式还不清楚的写个简单代码,一步步理清各个环节和概念。

再到成熟代码应用、模型调参、模型比较、模型评估,学习整个机器学习需要用到的知识和技能。

  1. 机器学习算法 - 随机森林之决策树初探(1)

  2. 机器学习算法-随机森林之决策树R 代码从头暴力实现(2)

  3. 机器学习算法-随机森林之决策树R 代码从头暴力实现(3)

  4. 机器学习算法-随机森林之理论概述

  5. 随机森林拖了这么久,终于到实战了。先分享很多套用于机器学习的多种癌症表达数据集 https://file.biolab.si/biolab/supp/bi-cancer/projections/。

  6. 机器学习算法-随机森林初探(1)

  7. 机器学习 模型评估指标 - ROC曲线和AUC值

  8. 机器学习 - 训练集、验证集、测试集

  9. 机器学习 - 随机森林手动10 折交叉验证

  10. 一个函数统一238个机器学习R包,这也太赞了吧

  11. 基于Caret和RandomForest包进行随机森林分析的一般步骤 (1)

  12. Caret模型训练和调参更多参数解读(2)

  13. 机器学习相关书籍分享

  14. 基于Caret进行随机森林随机调参的4种方式

  15. 送你一个在线机器学习网站,真香!

  16. UCI机器学习数据集

你可能感兴趣的:(算法,决策树,机器学习,人工智能,深度学习)