machine-learning - 通过在 m 行的数据集上应用一次 PCA 与 IncrementalPCA 对 x 批大小为 m/x 的潜在加速?
问题描述
我一直在努力尝试对高维、大容量数据集(有很多行和列 - 大约 100,000 - 1M 行和 ~500 列)执行降维。
虽然我的数据集的大小(m 是行数,n 是列数)不会阻止应用 PCA,但 PCA 可能需要相当多的时间来训练和转换数据。
我想知道是否将数据集分成 x 个批次(每个批次大小相等 m/x 行),然后将 IncrementalPCA() 部分拟合到每个 x 批次中,是否比尝试拟合传统 PCA 更快( ) 针对大小为 m 行的整个数据集?
我相信 PCA 的运行时间是 O(m * n 2 ) + O(n 3 ),因此在这种情况下,IncrementalPCA 只需将内部因子除以 m/x 并将外部的两项乘以 x,因此会导致更高的总体时间复杂度和更慢的性能,总体 x * O(m/x * n 2 ) + x * O(n 3 ) = O(m * n 2 ) + x * O(n 3 )。所以,天真地似乎这个想法行不通。
但是,有人可以提供更多分析,说明使用带有 IncrementalPCA 的小批量进行这种加速是否仍然可行?我怀疑我的推理可能不完整。
我一直在尝试的另一种方法是随机分层抽样,这似乎更标准,但我正在尝试结合各种优化来实现更快的运行时间。
解决方案
推荐阅读
- python-3.x - 轮廓检测和操作轮廓
- jenkins - 如何从 jenkins 持续部署到 Kubernetes
- android - 发布构建崩溃,而调试构建按预期工作
- javascript - 即使安装了依赖项,我的代码也不会呈现
- java - 带有一些 ImageViews 的动画包
- vba - Word VBA 复制某些突出显示的颜色并粘贴到新文档中而不会丢失格式
- python-3.x - pyspark中的k均值聚类
- polymer - 向 vaadin-split-layout 元素中的元素添加 iron-resize
- terminal - ARD Unix 命令帮助 - 回答是吗?- 自动域取消加入/重新加入
- php - 无效的命令“位置”,可能拼写错误或由未包含在服务器配置中的模块定义