非常高维度的交叉验证(选择非常高维度分类中使用的变量的数量)

机器算法验证 机器学习 分类 交叉验证
2022-03-28 01:58:03

当变量多于观察值时,我的问题是关于交叉验证。为了修正想法,我建议将分类框架限制在非常高的维度(特征多于观察)。

问题:假设对于每个变量您有一个重要性度量,而不是准确度量特征对分类问题的兴趣。选择特征子集以最佳地减少分类错误的问题然后减少到寻找特征数量的问题。i=1,,pT[i]i

问题:在这种情况下运行交叉验证的最有效方法是什么(交叉验证方案)?我的问题不是关于如何编写代码,而是关于尝试查找所选特征的数量(以最小化分类错误)时使用的交叉验证版本,而是在进行交叉验证时如何处理高维(因此上面的问题可能有点像在高维度讨论 CV 的“玩具问题”)。

符号: 是学习集的大小,p是特征的数量(即特征空间的维度)。非常高的维度是指 p>>n (例如)。np=10000n=100

2个回答

你错过了一个重要的问题——几乎从来没有像 T[i] 这样的东西。考虑一个简单的问题,其中两个属性(幅度相似)的总和很重要;如果你删除其中一个,另一个的重要性会突然下降。此外,大量不相关的属性是大多数分类器的准确性,因此它们评估重要性的能力。最后但同样重要的是,随机算法将返回随机结果,因此即使 T[i] 排名也可能不稳定。因此,原则上您应该至少在每个(或至少在每个非平凡冗余的)属性被删除之后重新计算 T[i]。

回到主题,CV选择哪个问题主要取决于问题;在极少数情况下,LOO 可能是最佳选择,因为所有其他情况都开始减少;仍然很小是 n=10 而不是 n=100。所以我只推荐随机子采样(我最常使用)或 K-fold(然后在每一步重新创建拆分)。不过,您还应该收集误差估计的均值和标准差;这可以用来(大约)判断平均值的哪些变化是显着的,因此可以帮助您决定何时停止该过程。

这是一个很好的问题,它往往会触及更多所谓的集成学习器和模型平均(我将在下面提供链接):

当您处于高维设置中时,您的解决方案的稳定性(即选择了哪些特征/变量)可能会缺乏,因为单个模型可能会在许多携带相同信号的共线、可交换变量中选择 1 个(众多原因之一)。下面是一些关于如何解决这个问题的策略。

例如,在贝叶斯模型平均中,

霍廷,詹妮弗 A.,等人。“贝叶斯模型平均:教程”。统计科学(1999):382-401。

你构建了许多模型(比如 100 个),每个模型都是用原始特征的一个子集构建的。然后,每个单独的模型确定它看到的哪些变量是显着的,并且每个模型都通过数据似然性进行加权,从而为您提供了一个很好的总结,即如何以“交叉验证”之类的方式“判断”变量的有效性。您先验地知道某些特征是高度相关的,您可以引入一个采样方案,使它们永远不会一起选择(或者如果您有块相关结构,那么您可以在方差-协方差矩阵中选择不同块的元素)

机器学习类型设置中:查看“集成特征选择”。本文(一例)

诺伊曼、乌苏拉、尼基塔根泽和多米尼克海德。“EFS:作为 R 包和 Web 应用程序实现的集成特征选择工具。” 生物数据挖掘 10.1(2017):21。

确定各种“重要性”指标的特征重要性,以进行最终的特征选择。

我想说机器学习路线可能是更好的 b/c 线性模型(w/ 特征选择)在 p = nb/c 的优化重新制定时饱和(参见这篇文章如果 p > n,套索最多选择 n变量)。但是,只要您能够定义并证明一个良好的客观标准来“交叉验证”特征选择,那么您就有了一个良好的开端。

希望这可以帮助!