维数大于样本数时的 PCA

机器算法验证 主成分分析 降维 svd
2022-01-25 07:48:44

我遇到了一个场景,我有 10 个人的 10 个信号(所以 100 个样本),其中包含我需要传递给分类器的 14000 个数据点(维度)。我想减少这些数据的维度,而 PCA 似乎是这样做的方法。但是,我只能找到样本数量大于维度数量的 PCA 示例。我正在使用一个使用 SVD 查找 PC 的 PCA 应用程序。当我传递我的 100x14000 数据集时,返回了 101 台 PC,因此绝大多数维度显然被忽略了。该程序表明前 6 台 PC 包含 90% 的方差。

假设这 101 个 PC 基本上包含所有方差并且其余维度可以忽略不计,这是一个合理的假设吗?

我读过的一篇论文声称,使用与我自己相似(尽管质量略低)的数据集,他们能够将 4500 个维度减少到 80 个,保留 96% 的原始信息。论文详细介绍了所使用的 PCA 技术的细节,只有 3100 个样本可用,我有理由相信比实际执行 PCA 所用的样本更少(以消除分类阶段的偏差)。

我是否遗漏了什么,或者这真的是 PCA 与高维低样本数据集一起使用的方式吗?任何反馈将不胜感激。

3个回答

我会从一个稍微不同的角度来看待这个问题:只有 10 个受试者/100 个样本,你能承受多复杂的模型?

我通常会回答这个问题:少于 100 台 PC。请注意,我处理的是不同类型的数据(振动光谱),因此情况可能会有所不同。在我的领域中,一个常见的设置是使用从 O (10) 对象的 O (1000) 光谱计算得出的 10 或 25 或 50 台 PC。

这是我要做的:

  • 查看这 100 台 PC 所涵盖的差异。我通常发现只有很少的组件真正导致我们数据的方差。

  • 我非常喜欢 PLS 作为分类的预处理,而不是 PCA,因为它在分类具有高变化的方向方面做得更好,这对分类没有帮助(在我的情况下,可能是焦点变化,不同的样本厚度,. ..)。根据我的经验,我经常得到具有 10 个 PLS 潜在变量或 25 到 50 个 PC 的类似分类器。

  • 验证样本需要仅使用从训练集计算的 PCA 旋转进行处理,否则验证可能(并且在您最可能会遇到的极端情况下)具有很大的过度乐观偏差。
    换句话说,如果您进行自举或交叉验证,则需要分别为每个训练/测试集组合计算 PCA 或 PLS 预处理。

如果n是点数和p是维数和np那么具有非零方差的主成分的数量不能超过n(在对原始数据进行 PCA 时)或n1(在对中心数据进行 PCA 时 - 像往常一样)。

从另一个角度来看:

在 PCA 中,您将协方差矩阵近似为k-rank 近似值(也就是说,你只保留顶部k主要成分)。如果你想描绘这个,协方差向量被正交投影到一个较低维的线性子空间中。由于您只有 100 个数据点,因此样本协方差必然位于维度的子空间中100(实际上正如 ttnphns 所证明的那样,99)。

当然,关键是要保留大 PC,扔掉小 PC,以避免安装噪音。你说 6 占方差的 96%,听起来不错。另一种技术是进行交叉验证并计算出多高k在保留数据的错误增加之前得到。