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

Posted

技术标签:

【中文标题】scikit-learn SVM 可以有很多样本/小批量吗?【英文标题】:scikit-learn SVM with a lot of samples / mini batch possible? 【发布时间】:2017-04-05 21:15:33 【问题描述】:

据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?

欢迎任何意见!

【问题讨论】:

Does the SVM in sklearn support incremental (online) learning?的可能重复 只是出于好奇,为什么它有 10k+ 类?听起来课程太多了。 【参考方案1】:

我在answer 到this 的问题中提到了这个问题。

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

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

【讨论】:

以上是关于scikit-learn SVM 可以有很多样本/小批量吗?的主要内容,如果未能解决你的问题,请参考以下文章

机器学习:SVM(scikit-learn 中的 RBFRBF 中的超参数 γ)

使用 scikit-learn python 的线性 SVM 时出现 ValueError

机器学习:SVM(scikit-learn 中的 SVM:LinearSVC)

使用 scikit-learn 训练数据时,SVM 多类分类停止

scikit-learn 的 svm 的 predict_proba 的混淆概率

使用 SVM 模型和 scikit-learn 进行预测的 AttributeError