我正在尝试决定是否对我的高维数据集使用线性降维方法(例如 PCA)与非线性降维方法(例如 t-SNE)。但是,我对数据的底层结构一无所知。是否有测试可以知道使用其中一个或另一个更好?
如何知道何时使用线性降维与非线性降维?
一种方法是更多地了解数据的结构。降维假设数据分布在低维流形附近。如果是这种情况,如果流形(近似)是线性的,则可以选择 PCA,如果流形是非线性的,则可以选择非线性降维 (NLDR)。因此,需要解决一些问题:数据是低维的吗?如果是,它们是否分布在非线性流形附近?
估计维度和检查非线性
一个好的第一步是执行 PCA 并检查每个分量的方差,或解释的方差分数 () 作为组件数量的函数。通常,人们会在图中寻找肘部,或解释某些固定部分方差(通常为 95%)所需的组件数。或者,有更原则性的程序来选择组件的数量。这给出了数据近似占据的线性子空间的维度的估计。
如果数据分布在低维非线性流形附近,则内在维数将小于该线性子空间的维数。例如,想象一个嵌入 3 维的弯曲 2d 片材(例如经典的瑞士卷歧管)。现在将其线性投影为 5 个维度。外在维数为 5,数据将占据 3 维线性子空间。然而,内在维数将是 2。由于流形的曲率,线性子空间的维数高于内在维数。
文献中已经描述了许多内在维度估计量。使用其中一种方法,可以估计数据的内在维度并将其与线性子空间的维度(使用 PCA 估计)进行比较。如果内在维度较小,这表明流形可能是非线性的。请记住,我们正在处理可能会出错的估计,因此这在某种程度上是一种启发式过程。
幸运的是,内在维度估计器通常独立于任何特定的 NLDR 算法。这很好,因为有数十种 NLDR 算法可供选择,它们各自在不同的假设下运行,并在数据中保留不同形式的结构。请记住,内在维度并不意味着任何特定的 NLDR 算法都能够找到一个好的维度表示。例如,球体的表面本质上是二维的,但许多 NLDR 算法需要三个维度来表示它,因为它不能被展平。
其他注意事项
有时可以根据实际考虑做出选择。这些是运行时/内存成本、易用性和/或解释等。我在这篇文章中描述了 PCA 与 NLDR 的一些问题(问题被描述为“为什么使用 PCA 而不是 NLDR?”所以答案倾向于 PCA,这并不总是最合适的方法)。
有时简单地尝试多种方法并查看最适合您的应用程序的方法是有意义的。例如,如果降维被用作下游监督学习算法的预处理步骤,那么降维算法的选择就是一个模型选择问题(以及维数和任何超参数)。这可以使用交叉验证来解决。有时,在这种情况下,根本没有降维效果最好。如果为可视化执行降维,那么您可能会选择有助于对数据提供更好视觉直觉的方法(高度特定于应用程序)。