在几个主成分而不是所有变量上运行 LDA 是否有意义?

机器算法验证 分类 主成分分析 判别分析
2022-03-27 06:16:46

我有兴趣建立一个线性判别函数来区分 60 个变量中的 2 个组。(我计划为未来的诊断测试选择最具辨别力的变量。)我已经分别计算了每个变量的 ROC 曲线下面积,没有一个 AUC 大于 0.73。我有一个相当小的样本,包括 50 个健康人和 50 个患病个体(这是两组)。

我试图使用主成分分析(PCA)来减少变量的数量。有 3 个分量占变异的 83%。但不幸的是,所有 60 个变量在 3 个组件中都有相似的权重(负载),所以我不能只选择几个。我通常会选择权重最高的变量,然后将它们合并到一个线性判别函数中,但是 60 太多了,尤其是在小样本的情况下。

我想知道是否可以在线性判别分析 (LDA)中使用 3 个主成分本身,而不是使用 60 个变量?

2个回答

首先,您是否有实际迹象(外部知识)表明您的数据由几个变量组成,这些变量在纯噪声变量中携带区分信息?有些数据可以假设遵循这样的模型(例如基因微阵列数据),而其他类型的数据具有“散布”在许多变量上的区分信息(例如光谱数据)。降维技术的选择将取决于此。

我想你可能想看看The Elements of Statistical Learning 的第 3.4 章(收缩方法) 。

主成分分析和偏最小二乘法(类似于 PCA 的监督回归)最适合后一种类型的数据。

当然可以在所选主成分所跨越的新空间中进行建模。您只需将这些 PC 的分数作为 LDA 的输入。这种类型的模型通常被称为 PCA-LDA。

在我对“在我进行分类之前应该执行 PCA 吗? ”的回答中,我写了一些 PCA-LDA 和 PLS-LDA(在 PLS 分数空间中进行 LDA)之间的比较简而言之,我通常更喜欢 PLS 作为 LDA 的“预处理”,因为它非常适合具有大量(相关)变量的情况,并且(与 PCA 不同)它已经强调了有助于区分的方向团体。PLS-DA(没有 L)意味着通过对类使用虚拟级别(例如 0 和 1,或 -1 和 +1)然后对回归结果设置阈值来“滥用”PLS-Regression。以我的经验,这通常不如 PLS-LDA:PLS 是一种回归技术,因此在某些时候会拼命尝试将虚拟级别周围的点云减少到点(即将一个类的所有样本精确地投影到1 和所有另一个恰好为 0),这会导致过拟合。LDA 作为一种适当的分类技术有助于避免这种情况——但它受益于 PLS 减少的变量。

正如@January 指出的那样,您需要小心验证模型。但是,如果您牢记两点,这很容易:

  • 数据驱动的变量减少(或选择),例如 PCA、PLS,或借助从数据派生的度量来选择任何变量是模型的一部分如果您进行重采样验证(迭代k-fold cross-validation, out-of-bootstrap) - 鉴于您的样本量有限,您应该这样做 - 您需要为每个代理模型重做这个变量减少
  • 这同样适用于数据驱动的(超)参数选择,例如确定 PLS 的 PC 数量或潜在变量:为每个代理模型重做此操作(例如在内部重采样验证循环中)或提前修复超参数后者对于特定类型的数据有一些经验是可能的,特别是对于 PCA-LDA 和 PLS-LDA 模型,因为它们对变量的确切数量不太敏感。修复的好处还在于数据驱动的优化对于分类模型来说是相当困难的,你应该为此使用所谓的适当的评分规则,并且你需要相当大量的测试用例。

(我不能在 Stata 中推荐任何解决方案,但我可以给你一个 R 包,我在其中实现了这些组合模型)。


更新以回答@doctorate 的评论:

是的,原则上您可以将 PCA 或 PLS 投影视为降维预处理,并在任何其他类型的分类之前执行此操作。恕我直言,人们应该考虑一下这种方法是否适合手头的数据。

降低样本维度的一种方法可能是所谓的“稀疏 PCA ”(SPCA),但我不知道它是否适用于 Stata。SPCA 限制了每个分量具有非零权重的变量数量,因此允许您更严格地选择变量。

或者,使用具有最大绝对负载的前 N ​​个变量,然后测试您的模型的执行情况。但请注意:切勿使用相同的样品进行测试和选择程序;否则你的结果将一文不值。

我个人认为在这种情况下非常有用的另一种方法是使用 PLS-DA,它既是一种降维技术,也是一种监督机器学习算法。但是,您必须注意验证结果的方式(参见 Westerhuis 等人和 van Dorsten 的论文,Metabolomics 2008)。

其他机器学习算法也适用于变量选择——我有经验的另一种是随机森林,其中变量被赋予权重,并且可以选择用于具有有限数量变量的改进模型。