在机器学习中执行交叉验证时“最终”模型的特征选择

机器算法验证 机器学习 分类 交叉验证 特征选择 遗传学
2022-01-22 22:24:48

我对特征选择和机器学习有点困惑,我想知道你是否可以帮助我。我有一个微阵列数据集,它分为两组,有 1000 个特征。我的目标是在签名中获取少量基因(我的特征)(10-20),理论上我将能够将其应用于其他数据集以对这些样本进行最佳分类。由于我没有那么多样本(<100),我没有使用测试和训练集,而是使用 Leave-one-out 交叉验证来帮助确定稳健性。我已经读过应该为样本的每个拆分执行特征选择,即

  1. 选择一个样本作为测试集
  2. 在剩余的样本上进行特征选择
  3. 使用所选特征将机器学习算法应用于剩余样本
  4. 测试测试集是否正确分类
  5. 转到 1。

如果你这样做,你可能每次都得到不同的基因,那么你如何得到你的“最终”最优基因分类器呢?即第6步是什么。

我所说的最佳是指任何进一步研究都应该使用的基因集合。例如,假设我有一个癌症/正常数据集,我想找到根据 SVM 对肿瘤类型进行分类的前 10 个基因。我想知道可以在进一步实验中使用的基因集和 SVM 参数,看看它是否可以用作诊断测试。

4个回答

原则:

使用在整个数据集上训练的单个模型进行预测(因此只有一组特征)。交叉验证仅用于估计在整个数据集上训练的单个模型的预测性能。使用交叉验证至关重要的是,在每个折叠中,您都重复用于拟合主要模型的整个过程,否则您最终可能会在性能上出现相当大的乐观偏差。

要了解为什么会发生这种情况,请考虑一个具有 1000 个二元特征但只有 100 个案例的二元分类问题,其中案例和特征都是纯随机的,因此特征和案例之间没有任何统计关系。如果我们在完整数据集上训练一个主要模型,我们总是可以在训练集上实现零错误,因为特征多于案例。我们甚至可以找到“信息丰富”特征的子集(碰巧相关)。如果我们然后仅使用这些特征执行交叉验证,我们将获得比随机猜测更好的性能估计。原因是在交叉验证过程的每一部分中,都有一些关于用于测试的保留案例的信息,因为选择了这些特征,因为它们有利于预测,所有这些,包括那些坚持的。当然,真正的错误率是 0.5。

如果我们采用正确的程序,并在每个折叠中执行特征选择,则在选择该折叠中使用的特征时不再有任何关于保留案例的信息。如果您使用正确的程序,在这种情况下,您将获得大约 0.5 的错误率(尽管对于数据集的不同实现会有所不同)。

值得阅读的好论文是:

Christophe Ambroise,Geoffrey J. McLachlan,“基于微阵列基因表达数据的基因提取中的选择偏差”,PNAS http://www.pnas.org/content/99/10/6562.abstract

这与 OP 高度相关,并且

Gavin C. Cawley, Nicola LC Talbot,“论模型选择中的过度拟合和性能评估中的后续选择偏差”,JMLR 11(七月):2079−2107,2010 http://jmlr.csail.mit.edu/papers /v11/cawley10a.html

这表明在模型选择中很容易发生同样的事情(例如调整 SVM 的超参数,这也需要在 CV 过程的每次迭代中重复)。

在实践中:

我建议使用 Bagging,并使用袋外错误来估计性能。您将获得使用许多功能的委员会模型,但这实际上是一件好事。如果您只使用单个模型,您可能会过度拟合特征选择标准,并最终得到一个比使用大量特征的模型给出更差预测的模型。

Alan Millers 关于回归中的子集选择的书(Chapman 和 Hall 关于统计和应用概率的专着,第 95 卷)给出了一个很好的建议(第 221 页),如果预测性能是最重要的事情,那么不要进行任何特征选择,只需使用岭回归。那是在一本关于子集选择的书中!!!;o)

正如您所说,无论您使用 LOO 还是 K-fold CV,您最终都会得到不同的功能,因为交叉验证迭代必须是最外层的循环。您可以考虑某种投票方案,对您从 LOO-CV 中获得的特征的 n 向量进行评分(不记得这篇论文,但值得检查Harald BinderAntoine Cornuéjols的工作)。在没有新的测试样本的情况下,通常会在找到最佳交叉验证参数后将 ML 算法重新应用于整个样本。但是以这种方式进行,您无法确保没有过度拟合(因为样本已经用于模型优化)。

或者,您也可以使用嵌入式方法,通过衡量变量重要性为您提供特征排名,例如在随机森林(RF) 中。由于交叉验证包含在 RF 中,您不必担心np维度的案例或诅咒。以下是它们在基因表达研究中的应用的好论文:

  1. Cutler, A.、Cutler, DR 和 Stevens, JR (2009)。基于树的方法,在癌症研究中的高维数据分析中,Li, X. 和 Xu, R.(编辑),第 83-101 页,Springer。
  2. Saeys, Y.、Inza, I. 和 Larrañaga, P. (2007)。生物信息学特征选择技术综述。生物信息学23(19):2507-2517。
  3. Díaz-Uriarte, R., Alvarez de Andrés, S. (2006)。使用随机森林对微阵列数据进行基因选择和分类。BMC 生物信息学7 :3。
  4. Diaz-Uriarte, R. (2007)。GeneSrF 和 varSelRF:一个基于网络的工具和 R 包,用于使用随机森林进行基因选择和分类。BMC 生物信息学, 8 : 328

由于您在谈论 SVM,因此您可以查找Penalized SVM

添加到 chl:当使用支持向量机时,强烈推荐的惩罚方法是弹性网络。这种方法会将系数缩小到零,理论上可以保留模型中最稳定的系数。最初它用于回归框架,但很容易扩展以与支持向量机一起使用。

原始出版物:Zou 和 Hastie (2005):通过弹性网络进行正则化和变量选择。JRStatist.Soc. B, 67-2, pp.301-320

SVM 的弹性网络:Zhu & Zou (2007):支持向量机的变量选择:神经计算趋势,第 2 章(编辑:Chen 和 Wang)

弹性网络的改进Jun-Tao 和 Ying-Min (2010): An Improvement Elastic Net for Cancer Classification and Gene Selection : Acta Automatica Sinica, 36-7, pp.976-981

作为步骤 6(或 0),您在整个数据集上运行特征检测算法。

逻辑如下:您必须将交叉验证视为一种查找用于选择特征的过程的属性的方法。它回答了这个问题:“如果我有一些数据并执行此过程,那么对新样本进行分类的错误率是多少?”。一旦你知道了答案,你就可以在整个数据集上使用这个过程(特征选择+分类规则开发)。人们喜欢留一法,因为预测属性通常取决于样本量,并且n1通常足够接近n没关系。