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


76

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

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

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

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


我应该说是完全公开的意思,我已经将其发布到了生物导体列表中
-danielsbrewer

请在此处总结任何生物导体结果?
Shane 2010年

Answers:


39

在处理SNP数据时,这是我面临的一个很好的问题...而且我从文献中没有找到任何明显的答案。

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

或者,您也可以使用嵌入式方法,这些方法通过对变量的重要性进行度量来为您提供功能分级,例如在随机森林(RF)中。由于交叉验证已包含在RF中,因此您不必担心情况或维度诅咒。这是它们在基因表达研究中的应用的好论文:np

  1. 卡特勒(A. Cutler),博士卡特勒(Cutler)和JR(史蒂文斯)(2009)。《基于树的方法,在癌症研究中的高维数据分析》中,Li,X.和Xu,R.(eds。),第83-101页,Springer。
  2. Y. Saeys,I。Inza和P.Larrañaga(2007)。生物信息学中的特征选择技术综述。生物信息学23(19):2507-2517。
  3. Díaz-Uriarte,R.,Alvarez deAndrés,S.(2006年)。使用随机森林对基因芯片数据进行基因选择和分类。BMC生物信息学7:3。
  4. Diaz-Uriarte,R.(2007年)。GeneSrF和varSelRF:基于网络的工具和R包,用于使用随机森林进行基因选择和分类。BMC生物信息学8:328

由于您在谈论SVM,因此可以查找受惩罚的SVM


感谢那。我并不特别在SVM上出售产品,仅以它为例。因此,如果您使用随机树,则不必进行交叉验证?那正确吗。
danielsbrewer

7
是的,RF 在生长一棵树时包括随机变量采样(通常为),每棵树均基于个体的增强样本;变量重要性是使用置换技术对所谓的“外出”样本(未用于构建决策树的样本)进行计算的。对m棵树(默认m = 500)重复该算法,并对结果求平均值以补偿树级别的不确定性(增强)。p
chl 2010年

3
重要的是,它被称为随机森林而不是随机树。您可能在使用Google时遇到了问题。

1
+1,对我来说是个好答案,很偶然-非常感谢您提供的论文参考,尤其是评论。
ars 2010年

有了足够的数据,不是最好保留一个测试集,对训练集执行loocv以优化模型参数,拟合整个训练集(并称其为“最终”分类器),然后评估最终模型在测试仪上?
user0

40

原则上:

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

要了解为什么会发生这种情况,请考虑一个具有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),尼古拉·LC·塔尔伯特(Nicola LC Talbot),“模型选择中的过拟合和性能评估中的后续选择偏差”,JMLR 11(Jul):2079−2107,2010年http://jmlr.csail.mit.edu/papers /v11/cawley10a.html

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

在实践中:

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

艾伦·米勒斯(Alan Millers)关于回归子集选择的书(关于统计和应用概率的查普曼和霍尔专着,第95卷)给出了很好的建议(第221页),如果预测性能是最重要的,那么就不要进行任何特征选择,只需改用岭回归。那就是关于子集选择的书!!!; o)


17

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

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

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

弹性网的改进 Jun-Tao和Ying-Min(2010):用于癌症分类和基因选择的改进弹性网:自动学报,36-7,pp.976-981


9

在步骤6(或0)中,对整个数据集运行特征检测算法。

逻辑如下:您必须将交叉验证视为一种找出用于选择功能的过程属性的方法。它回答了一个问题:“如果我有一些数据并执行此过程,那么对新样品进行分类的错误率是多少?”。知道答案后,就可以对整个数据集使用该过程(功能选择+分类规则开发)。人们喜欢一劳永逸,因为预测属性通常取决于样本量,并且通常足够接近而不重要。nn1n


我认为,使用同一样本(1)在调整其参数(最终通过特征选择)时评估分类器分类/预测性能时仍然存在一个泛化问题,(2)反过来在整个数据集上使用其预测。实际上,您正在打破使用交叉验证详细说明的过拟合控制。Hastie等。提供了一个很好的CV陷阱的例证,尤其是。wrt。功能选择,请参见他们的ESL书,第2版的7.10.2。
chl 2010年

@chl:谁说过调优参数?如果执行了其他操作,则在交叉验证期间也应重复执行这些操作。清楚地修改算法,直到获得良好的交叉验证错误率才“作弊”。顺便说一句,我同意交叉验证,尤其是留一法,并不是那么好。
Aniko 2010年

并不是说这不是欺骗,因为CV向您显示了算法将如何对新数据执行的近似值。您只需要确保您还没有基于整套设备就可以解决问题(这是有关整套设备结构的信息泄漏,因此可以立即对所有列车部件进行偏置)。

@mbq-Ankino是正确的,调整模型以最大程度地降低CV统计量是“欺骗”,最终模型的CV统计量将具有很大的乐观偏见。原因是CV统计量具有不可忽略的方差(因为它是对有限的一组数据进行评估),因此,如果直接优化CV统计量,则可能会过度拟合它,最终得到一个模型概括性不如您刚开始的那样。有关此操作的演示,请在机器学习上下文中参阅 jmlr.csail.mit.edu/papers/v11/cawley10a.html 解决方案:使用嵌套XVAL
Dikran Marsupial 2010年

1

这就是我选择功能的方式。假设基于某些知识,有2个模型可以比较。模型A使用1号到1号特征。10.模型B使用11至11号。20.我将LOO CV应用于模型A,以获得其样本外性能。对模型B执行相同操作,然后进行比较。


-1

我不确定分类问题,但是在针对回归问题进行特征选择的情况下,Jun Shao表明,Leave-One-Out CV渐近不一致,即选择适当的特征子集的概率不会收敛为1样本数量增加。从实际的角度来看,Shao建议进行Monte-Carlo交叉验证或“多选”程序。


哦,我的,再一次;你读过这篇文章的标题吗?

2
好的,要明确地说-我并不是说LOOCV对于大量对象是个好主意;显然不是,但邵不适用于此。实际上,在大多数情况下,LM的规则并不适用于ML。

1
当查看具有大量特征且模式相对较少的数据集时,渐近结果是否实际使用还存在疑问。在那种情况下,程序的变化可能比偏差或一致性具有更大的实际重要性。LOOCV的主要价值在于,对于许多模型而言,它可以以可忽略的计算费用来实现,因此,尽管与自举法相比,方差更高,但它可能是可用的计算预算中唯一可行的方法。这就是为什么我使用它,但是我使用其他东西进行性能评估!
2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.