重复交叉验证:如何使用插入符号在每个折叠中执行特征选择

问题描述

我正在使用 caret 包来测试各种模型,以根据 RNA-seq 数据预测疾病状态。我只有 20 个样本,所以我使用重复交叉验证来估计模型准确性。

我想使用排名靠前的差异表达基因(DEGs)作为特征。我知道使用整个数据集来识别顶级 DEG 并使用这些特征来估计模型性能是不好的做法,因为这会高估模型的预测性能。我的问题是如何确定每个交叉验证折叠中的顶级 DEG?从我对插入符号的研究来看,如果我想使用插入符号,我有两个选择:(1)SBF(按过滤器选择)函数和(2)preProcess function。我的理解是,这两个选项都可以通过将特征选择仅应用于训练数据集来训练模型来适当地处理交叉验证,然后使用该模型来预测保留的折叠。这是准确的吗?如果是这样,哪个是最好的使用?我将详细说明我对这两种方法的理解。

对于选项 (1),即 SBF 函数,我的理解是内置功能仅限于使用 ANOVA 作为分类变量的分数,过滤器是生成的 ANOVA p 值(认允许具有 ANOVA p 的特征)

对于选项 (2),preProcess 函数方法的可能值似乎是“BoxCox”、“YeoJohnson”、“expoTrans”、“center”、“scale”、“range”、“knnImpute”、“ bagImpute”、“medianImpute”、“pca”、“ica”、“spatialSign”、“corr”、“zv”、“nzv”和“conditionalX”。因此,编辑源代码也是必要的。

当然,我也可以使用 for 循环来循环交叉验证折叠并使用 4 折叠识别 DEG 来训练模型并使用保留折叠进行测试。但这意味着我将无法使用插入符号。相反,我必须为我正在使用的不同模型(随机森林、pls-da、人工神经网络、SVM 和逻辑回归)使用单独的包。我已经投入时间学习 caret 并编写代码以使用 caret,所以我想避免必须学习每个包的复杂性,其中 caret 是包装器并重新编写所有内容。但如果这是最直接的选择,我想知道!对此事的任何见解将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)