【发布时间】:2012-09-22 03:59:25
【问题描述】:
我在 CSV 文件中有一个非常大的训练集 (~2Gb)。该文件太大无法直接读入内存(read.csv() 使计算机停止运行),我想使用 PCA 减小数据文件的大小。问题是(据我所知)我需要将文件读入内存才能运行 PCA 算法(例如,princomp())。
我已经尝试使用bigmemory 包将文件作为big.matrix 读取,但princomp 对big.matrix 对象不起作用,而且big.matrix 似乎无法转换为某种东西比如data.frame。
有没有办法在我丢失的大型数据文件上运行princomp?
我是 R 的新手,所以对于经验丰富的用户来说,其中一些可能是显而易见的(提前道歉)。
感谢您提供任何信息。
【问题讨论】:
-
基本上你需要在不估计样本协方差矩阵的情况下进行 PCA。有大量关于高维 PCA 的文献,特别是在图像处理和金融市场的应用。然而,这很可能不是一件小事。
-
文件包含多少个观察值和多少个变量?
-
@rolando2 它包含大约 50K 行和 ~10000 列
-
它应该适合内存(前提是你有一台功能相当强大的计算机——我的意思是 >=4GB RAM ob board)——检查你是否没有将它作为字符串数组读取(即将前 100 行剪切为单独的文件,并检查是否可以将其直接导入为数字)。
-
如果您的问题是将数据加载到 R 中,或者只是为高维数据寻找有效的 PCA 算法,请更清楚地说明。