样本外数据的 PCA

机器算法验证 机器学习 主成分分析 降维
2022-03-27 19:00:47

我们知道,PCA 学习的投影矩阵可以应用于样本外数据点,以获得它们的低维嵌入。但是,与从 PCA 获得的嵌入这些样本外点与原始数据相结合的嵌入相比,这些嵌入的可靠性如何?

考虑这个假设的伪样本外设置:假设我有 1000 个数据点,我想对它们进行 PCA。我是否可以只对其中的 500 个进行 PCA(以节省一些计算量),然后使用学习的投影矩阵来嵌入其余点(通过将它们视为样本外数据)?

4个回答

在与 Ebony 交换评论之后(请参阅 Whiber 的回答)。我收集到在 Ebony 的应用程序中,p比 n 大得多,n本身就非常大。在这种情况下,计算特征分解的复杂性是O(n3)的数量级。我想到了两个解决方案:

  1. 部分分解:假设p非常大,可能不需要完整的特征分解。如果只需要k个最大的特征值(和相应的向量),大概可以通过接近O(nk2)的复杂度获得它们。这样的算法可以解决您的问题吗?

  2. 完全分解:在这种情况下,最好从大小为 n_0 的观察值中抽取J样本,并计算 pca 分解。反过来,这将为您值,可用于建立总体值的抽样分布(并且意味着将是总体特征值/向量的良好估计量)。Given the complexity, this could be made to be much faster (by appropriately choosing ). 第二个好处是这个过程可以在个内核/计算机上并行运行,从而产生Jn0nJJn3n0mO(jm1n03)

什么计算节省?PCA 计算基于协方差(或相关)矩阵,其大小取决于变量的数量,而不是数据点的数量。协方差矩阵的计算速度很快。即使您重复进行 PCA(例如,作为模拟的一部分),从 1000 个数据点减少到 500 个数据点甚至不会减少 50% 的时间。

这与模型选择问题没有什么不同,模型选择问题的目标是接近数据的“真实维度”。您可以尝试交叉验证方法,例如 5 倍 CV 与 500 个数据点。这将为您提供一个合理的样本外数据泛化误差度量。以下论文对相关方法进行了很好的调查和回顾:

我从未这样做过,但我的直觉表明答案将取决于 500 个数据点的协方差矩阵与样本外数据“不同”的程度。如果样本外协方差矩阵非常不同,那么显然这些点的投影矩阵将不同于从样本内数据中出现的投影矩阵。因此,就样本内和样本外数据的协方差矩阵“相似”而言,结果应该大致相同。

上述直觉建议您应该仔细选择 500 个样本内点,以便生成的协方差矩阵对于样本内和样本外尽可能相同。