用于数据压缩的 PCA

PCA for data compression

我正在讨论是否可以通过对数据执行 PCA 来节省磁盘 space。假设您有一个协方差矩阵并且您的数据向量的长度为 1000。将 space 削减 50% 的压缩方法为:

我:这不会为向量保存任何 space,因为在旋转后所有 1000 个分量中仍然会有非零元素。没有压缩。数据可能被简化了,但那是另一回事。 他:只取结果中的前 500 个元素 - 那就是你的 "compression".

我知道我是对的,但很多人在文献中说他们正在使用 PCA 进行压缩 - 这是一个例子:

http://ufldl.stanford.edu/tutorial/unsupervised/PCAWhitening/

我认为这个教程大部分是正确的,是一个很好的描述,但关于压缩的结论是错误的。但是,明明与数据打交道的人怎么会忽视如此明显的事情。让我做错事。

谁能帮我理解他们的观点?

我认为:

1- 是的,您可以通过 PCA 压缩数据,因为您必须存储的向量(每个向量)的维度小于原始维度。当然,你也必须存储矩阵来解压数据,但如果你的原始数据集足够大,这对数据本身来说是无关紧要的。

2-当然有一个缺点。压缩不是无损的。您将永远丢失原始数据,并且解压后的新版本不会与原始数据完全相同。这将是一个近似值。

此时我的建议是:

如果你有很多相同形式的数据(相同维度的向量...),你对这些数据的兴趣是定性的(你不关心确切的数字本身,只关心大概的数字)并且一些数据显示共线性(向量之间的依赖性),PCA 是一种节省存储空间的方法 space.

必须检查是否丢失了原始数据的方差,因为这是您选择过多压缩的信号。

无论如何,PCA 的主要目的不是节省存储空间 space...它是为了更快地对数据进行繁重的操作以获得非常相似的结果。

希望对您有所帮助。