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 多类分类停止