我有一个包含很多特征的数据集(>>3)。出于计算原因,我想应用降维。在这一点上,我可以使用不同的技术:
标准 PCA Kernel PCA LLE ...我的问题是选择正确的方法,因为特征数量如此之多,以至于我无法事先知道点的分布情况。我只有拥有 3D 数据才能做到这一点,但就我而言,我拥有的远不止这些。
例如,我知道如果点集是线性可分的,我可以使用标准 PCA;如果它是某种类似形状的同心圆,那么 KernelPCA 将是一个更好的选择。
因此,我如何事先知道我需要对高维数据使用哪种降维技术?
我有一个包含很多特征的数据集(>>3)。出于计算原因,我想应用降维。在这一点上,我可以使用不同的技术:
标准 PCA Kernel PCA LLE ...我的问题是选择正确的方法,因为特征数量如此之多,以至于我无法事先知道点的分布情况。我只有拥有 3D 数据才能做到这一点,但就我而言,我拥有的远不止这些。
例如,我知道如果点集是线性可分的,我可以使用标准 PCA;如果它是某种类似形状的同心圆,那么 KernelPCA 将是一个更好的选择。
因此,我如何事先知道我需要对高维数据使用哪种降维技术?
事实是,在无监督算法中,你永远不会知道。这是他们的主要瓶颈。无监督算法(聚类、降维等)基于假设。当做出假设时,它将被转换为数学算法并应用。
正如您所说,只有在您事先知道数据的分布和/或拓扑结构如何时,才能选择正确的东西。但不幸的是,大多数情况下它不会发生。数据的维度越高,猜测其结构就越困难。
如果您将其用作监督任务的特征提取步骤,那么正确的方法是通过统计模型选择(例如交叉验证)来评估每个步骤对监督学习的影响。
如果您将它们用于聚类等无监督任务,那么您可以选择一些实用标准(没有理论上的标准,即聚类任务没有任何理论依据)。例如,您可以将它们可视化为 2 或 3 维,并尝试检查集群是否正确(例如,通过数据中的一些已知样本。如果您知道不同样本的两个极端情况,则更好的集群会将它们放在远集群中,等等.)
我再次强调,对于像聚类这样的无监督任务没有普遍正确的评估。
希望它有所帮助!