PCA用于数据压缩

时间:2017-03-28 00:15:06

标签: compression pca

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

  • 导出一个矩阵,将协方差矩阵旋转成对角线形式,使特征值沿对角线。
  • 删除最小的500个对角线元素 - 替换为零
  • 使用原始旋转的转置旋转结果。

我:这不会为矢量保存任何空间,因为旋转后所有1000个组件中仍然会有非零元素。没有压缩。数据可能已经简化,但这是另一回事。 他:只需取结果中的前500个元素 - 这就是你的“压缩”。

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

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

我认为本教程大部分是正确的,并且是一个很好的描述,但压缩的结论是错误的。但是,明确处理数据的人怎么会忽视这么明显的事情。让我知道我错了。

有人能帮我理解他们的观点吗?

1 个答案:

答案 0 :(得分:1)

在我看来:

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

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

此时此处是我的建议:

如果您有大量具有相同形式的数据(相同维度的向量...),您对此数据的兴趣是定性的(您不关心确切数字本身,只关注近似数字)和一些数据显示共线性(向量之间的依赖关系),PCA是一种节省存储空间的方法。

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

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

我希望这对你有所帮助。