PCA 是否允许在进行聚类分析之前识别可以删除的冗余变量?

机器算法验证 聚类 主成分分析 多元分析 特征选择
2022-03-30 12:33:47

我希望这适合这个论坛:我是 PCA 的新手,我最终想做的是对我的数据集进行聚类分析。

我有 20 个生物体的物理描述符变量,每个变量都有 300 个数据点。我制作了一个相关矩阵来查看哪些变量可能相互关联,其中我发现有许多变量相互关联。

在对我的数据集进行聚类分析之前,我想从分析中删除任何冗余变量(那些没有真正贡献任何东西的变量)。我进行了 PCA,发现 3 个主成分约占我数据方差的 90%。我的问题与我如何解释此输出有关:我是否需要确定这三个主要成分中包含哪些变量,然后删除未包含的变量?这甚至是识别没有为数据集贡献任何信息的变量的正确方法吗?

对于上下文:我最终想要做的是减少描述生物群所需的变量数量,这将允许我对共享这些物理描述符(但没有收集数据)的其他生物进行建模。


编辑

谢谢大家的建议。@hssay:您强调了一个我想知道的问题:是对原始数据还是对我的 PCA 输出进行聚类分析。派生的新变量缺乏可解释性这一事实无疑让我停下来重新考虑我的方法。谢谢你的澄清。

如果我要对派生变量进行聚类分析,是否可以在聚类后提取/识别原始变量,或者它们是否丢失?例如。如果我要对主成分进行聚类分析,则聚类本身对于我提到的其他生物体(即从原始数据集中显示某些物理特征的生物体,但对于那些测量不存在)。原因是,集群将由派生变量组成,而不是真实世界的物理描述符变量。那是对的吗?

@Paul Siegel 感谢您的警告。我的数据不是分类的,但我同意你的观点。我会看看你建议的其他方法。

@Frank Harrell我不使用R,只使用matlab,并且希望我的代码只使用一种语言......不过,我肯定会看看你建议的功能代码/阅读。

@DJohnson。谢谢!我会试试你的方法。

4个回答

还要考虑稀疏主成分分析和冗余分析。后者在 RHmiscredun函数中实现,涉及尝试从所有其他预测器中预测每个预测器。它处理上面讨论的“翅膀”问题。

我首先要指出的是,传统的 PCA 不太适合分类特征(例如有机体是否有翅膀)。原因是主成分通常是输入特征的非平凡线性组合,并不总是很清楚这应该意味着什么。例如,第一个主成分可以由 “有翅膀”、 “有羽毛”和 “6 条腿”之类的东西组成(这些百分比可以从第一个特征向量计算出来)。很难用它来消除一个特征,因为“正确的”特征是“有翅膀和羽毛”(鸟)和“有翅膀和六只腿”(昆虫)。45%30%25%

也就是说,在这个方向上有一些工作;一个很好的流行语是多重对应分析您正在考虑的更普遍的问题是特征选择,并且有许多好的方法可以消除受某些约束的特征中的冗余;鉴于您没有进行天文数字的观测,mRMR 可能对您的问题有好处。

在完成了 PCA 的两步练习和多次聚类之后,我开发了一个强大的 POV。首先,使用 PCA 平滑输入有很多很好的理由——最重要的是,冗余被消除了。接下来,正如@hssay 所指出的,生成的 PCA 是所有输入的线性组合。识别最大负载的特征子集并仅保留该子集用于集群解决方案会破坏方差。鉴于此,我的建议是使用完整的组件集作为聚类算法的输入。

然后是你的解释问题。在应用世界中,人们(团队)可以、将会并且确实会花费大量时间来解释组件,这是一个事实。对我来说,这是浪费时间,因为它们只是达到目的的一种手段……最终成为“好的”集群解决方案。

生成具有良好统计属性的信息分区后,创建一个输出文件,其中包含数据中每个对象的集群分配。接下来,基于忽略组件的原始特征生成后端解释(因为您不关心它们的含义)。该后端分析可以包括基于新输出文件的电子表格,该文件具有集群的列,并且行是集中趋势的适当度量,例如均值、中值、众数等。

为了便于解释,为每个集群添加一个索引列,表示集群值与总体(或总)值的比率——将工作表中总体数据的值包含在单独的列中。通过将该比率乘以 100(并四舍五入),您可以创建一个类似于非正式 t 检验或 IQ 分数的新启发式方法。80 到 120 之间的索引将被视为“正常”行为,120+ 是一个特征或行为,对于一个集群来说是独特的,而索引 80 和更少是不代表该集群的特征或行为。指数越极端,集群越偏离规范行为。请谨慎解释分母中的小值,因为索引可能会变得非常大。这种“又快又脏”的另一个问题 当你的一些价值观是负面的时,就会出现解释方法。负索引需要更仔细的考虑。

事实是人们通常不在乎,也不想知道你是如何找到解决方案的。他们只想要答案。有时他们愿意与您合作以获得最终答案,有时他们只是将整个事情留给您。

当然,这个讨论忽略了什么是“好的”集群解决方案的问题。那是另一个故事。

特别是在解释结果的问题上:您通常无法确定导致最大方差的单个变量。3个分量贡献最大方差的结果是这样的:通过对原始变量进行线性组合得出3个新变量,这些变量被发现代表最大方差。这是 PCA 的一个已知问题:您失去了解释能力。不同变量组合得出的所谓因子,可能没有任何直观的意义。

现在的一项建议是在派生变量数据上构建您的后续模型(聚类)。因此,不是在 20 列数据上构建集群,而是在 3 列数据上构建集群。