我正在讨论是否可以通过对数据执行PCA来节省磁盘空间。假设你有一个协方差矩阵,你的数据向量长度为1000.将空间减少50%的压缩方法是:
我:这不会为矢量保存任何空间,因为旋转后所有1000个组件中仍然会有非零元素。没有压缩。数据可能已经简化,但这是另一回事。 他:只需取结果中的前500个元素 - 这就是你的“压缩”。
我知道我是对的,但很多人在文献中说他们正在用PCA进行压缩 - 这是一个例子:
http://ufldl.stanford.edu/tutorial/unsupervised/PCAWhitening/
我认为本教程大部分是正确的,并且是一个很好的描述,但压缩的结论是错误的。但是,明确处理数据的人怎么会忽视这么明显的事情。让我知道我错了。
有人能帮我理解他们的观点吗?
答案 0 :(得分:1)
在我看来:
1-是的,您可以通过PCA压缩数据,因为您必须存储的矢量(每个)的尺寸小于原始尺寸。当然,您还必须存储矩阵以解压缩数据,但如果您的原始数据集足够大,则这对数据本身来说无关紧要。
2-当然有一个缺点。压缩不是无损的。您将永远丢失原始数据,解压缩后的新版本将与原始数据完全不同。这将是一个近似值。
此时此处是我的建议:
如果您有大量具有相同形式的数据(相同维度的向量...),您对此数据的兴趣是定性的(您不关心确切数字本身,只关注近似数字)和一些数据显示共线性(向量之间的依赖关系),PCA是一种节省存储空间的方法。
必须检查是否丢失了原始数据的方差,因为这是您选择过多压缩的信号。
无论如何,PCA的主要目的不是节省存储空间......而是要更快地对数据进行大量操作以获得非常相似的结果。
我希望这对你有所帮助。