在硬盘上存储的非常大的数据集上训练 SVM

Sae*_*eed 5 r machine-learning svm bigdata libsvm

存在一个非常大的自己收集的数据集,大小为[2000000 12672],其中行显示实例数,列显示特征数。该数据集在本地硬盘上占用约 60 GB 。我想在这个数据集上训练线性支持向量机。问题是我只有8 GB RAM!所以我无法一次加载所有数据。有什么解决方案可以在这么大的数据集上训练 SVM 吗?生成数据集是我自己的愿望,目前是HDF5格式。谢谢

Tch*_*hke 2

SVM 的随机梯度下降方法可能会有所帮助,因为它可以很好地扩展并避免该n^2问题。R 中可用的实现是RSofia由 Google 的团队创建的,并在大规模学习排名中进行了讨论。在论文中,他们表明,与传统的 SVM 相比,SGD 方法显着减少了训练时间(这是由于 1,成对学习方法和 2,最终仅使用观察的一个子集来训练模型) 。

请注意,它RSofia比 R 中可用的其他一些 SVM 包要简单一些;例如,您需要自己进行特征的居中和缩放。

至于你的记忆问题,如果你需要整个数据集,那就有点令人惊讶了——我希望你能很好地阅读数据样本,然后据此训练你的模型。为了确认这一点,您可以在不同的样本上训练多个模型,然后估计同一保留集上的性能 - 不同模型的性能应该相似。