scikit-learn SVM 有很多样本/小批量可能吗?

dom*_*771 5 svm scikit-learn

根据http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html我读到:

“拟合时间复杂度与样本数量的二次方相比,这使得很难扩展到具有超过 10000 个样本的数据集。”

我目前有 350,000 个样本和 4,500 个类,这个数字将进一步增长到 1-2 百万个样本和 10k + 个类。

我的问题是我的内存不足。当我只使用少于 1000 个类的 200,000 个样本时,一切正常。

有没有办法在 SVM 中内置或使用类似 minibatches 的东西?我看到存在 MiniBatchKMeans 但我不认为它适用于 SVM?

欢迎任何输入!

Ser*_*rov 4

我在回答这个问题时提到过这个问题。

您可以将大型数据集分成可由 SVM 算法安全使用的批次,然后分别查找每个批次的支持向量,然后在由所有批次中找到的所有支持向量组成的数据集上构建生成的 SVM 模型。

另外,如果您的情况不需要使用内核,那么您可以使用 sklearn 的SGDClassifier,它实现随机梯度下降。默认情况下它适合线性 SVM。