Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compression PCA用于数据压缩_Compression_Pca - Fatal编程技术网

Compression PCA用于数据压缩

Compression PCA用于数据压缩,compression,pca,Compression,Pca,我正在讨论是否可以通过对数据进行PCA来节省磁盘空间。假设你有一个协方差矩阵,你的数据向量长度为1000。将空间切割50%的压缩方法为: 导出一个矩阵,该矩阵将协方差矩阵旋转为对角线形式,使特征值沿对角线 删除最小的500个对角线元素-替换为零 使用原始旋转的转置旋转结果 Me:这不会为向量节省任何空间,因为旋转后所有1000个分量中仍然会有非零元素。没有压缩。数据可能被简化了,但那是另一回事。 他:就拿结果中的前500个元素来说吧——那就是你的“压缩” 我知道我是对的,但很多人在文献中说他

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

  • 导出一个矩阵,该矩阵将协方差矩阵旋转为对角线形式,使特征值沿对角线
  • 删除最小的500个对角线元素-替换为零
  • 使用原始旋转的转置旋转结果
Me:这不会为向量节省任何空间,因为旋转后所有1000个分量中仍然会有非零元素。没有压缩。数据可能被简化了,但那是另一回事。 他:就拿结果中的前500个元素来说吧——那就是你的“压缩”

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

我认为本教程基本上是正确的,是一个很好的描述,但是关于压缩的结论是错误的。但是,如此明显的事情怎么会被那些清楚地处理数据的人忽视呢。让我觉得我错了

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

在我看来:

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

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

在这一点上,我的建议是:

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

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

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


我希望这对您有所帮助。

什么是PCA?是主成分分析吗?要压缩的数据是什么?在压缩-解压循环之后,您可以更改数据吗(允许的错误是什么),或者您需要精确()方法吗?PCA在本文中引用了主成分分析。假设要压缩的数据是一张照片,通过连接照片的行将其组织为一个长向量。或者实际上是存储为一个长向量的任何数据。当然,压缩可能是有损的,正如PCA所期望的那样。最后,一个压缩-解压循环可能会有一些特定的误差,这些误差将由光谱截止控制。感谢您帮助澄清。abby,“旋转后所有1000个组件中的非零元素”可能比之前有更多可预测的分布。当值是可预测的时,可以使用一些参数将其存储在更少的空间中。另外,在学者搜索中也有一些关于PCA应用于图像的论文。如果你的矩阵现在大部分为0,那么我想补充一点重要的警告:不仅压缩不是无损的,而且损失不是随机的。PCA针对要删除的特定维度,这些维度可能有用,也可能无用。假设PCA中的顶级$n$基向量是数据中唯一的“重要”基向量,有时可能有用,但通常不成立。为什么PCA不能压缩,即使我们不删除不太重要的成分?例如,如果原始元素每个都用100个变量表示,其中大部分是纯冗余的,我可以想象PCA可以用60个变量表示它们,而不会丢失任何信息。我错了吗?简单地说,试着把主成分分析看作一种线性回归。从二维点云开始,线性回归允许您将其简化为一维点云。如果所有点与回归线完全重合,则不会丢失任何信息。但是,在正常情况下,某些点靠近直线,但不超过直线,在降维后,将丢失这些点与拟合直线之间距离的信息。