我将使用 openCV 的 (C++) SVM(支持 vector 机)进行分类。但有一个问题:
特征向量是如此之大(每个有1890000个元素),我有超过10000个特征向量来训练SVM。如何操作或使用特征向量而不遇到内存问题?
最佳答案
有了如此高的维度和如此多的训练样本,您将需要大量内存才能使用任何流行的 SVM 实现。如果我面临这个问题,那么我至少会考虑以下选项之一:
- 减少每个 vector 的维度,有很多算法可以做到这一点,但 PCA 是一个很好的开始。
- 在具有大量内存的主机上获取计算时间(也许亚马逊 ec2 实例之一就足够了)
- 使用 SVM 的线性在线近似进行测试。在高维度中,您很可能可以将类分开 linearly还有SVM online approximations您可以使用它,然后一次只加载一个样本到内存,在这种情况下您不需要那么多内存(我会考虑使用 pegasos-svm)。
关于SVM 的 C++ 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22939086/