【问题标题】:Too Much Data for SVM?SVM 的数据太多?
【发布时间】:2016-12-08 01:19:45
【问题描述】:

因此,我在具有大约 120 个特征和 10,000 个观察值的数据帧上运行来自 sklearn 的 SVM 分类器(具有线性内核和概率错误)。该程序需要数小时才能运行,并且由于超出计算限制而不断崩溃。只是想知道这个数据框是否可能太大了?

【问题讨论】:

  • 对于线性内核应该没问题(至少对于 LinearSVC;不确定带有 kernel=linear 的 SVC)。向我们展示代码!

标签: python scikit-learn svm


【解决方案1】:

您可以尝试更改算法的参数。

Tips on practical use from the documentation.

您可以尝试不同的算法,这里有一份备忘单可能会对您有所帮助:

【讨论】:

  • 他使用的是线性内核,所以没有内核缓存(正在使用)!
  • 并且备忘单准确地推荐了他正在做的事情(分类 线性 SVC)。因此,这些信息没有任何好处。
  • 在这种情况下,k 个最近的邻居会表现得更好吗?
  • 感谢有用的图表!所以我想10,000毕竟不是太多,我必须再试一次,也许还有一些参数调整的KNeighbors。
【解决方案2】:

总之no,这根本不算太大。线性 svm 可以进一步扩展。另一方面,libSVC 库不能。好消息是,即使在 scikit-learn 中,您也确实有大规模的 svm 实现 - 基于 liblinear 的 LinearSVC。您还可以使用 SGD(也可在 scikitlearn 中获得)来解决它,这也将收敛到更大的数据集。

【讨论】:

    【解决方案3】:

    该实现基于 libsvm。拟合时间复杂度更高 与样本数量成二次方,这使得难以扩展 拥有超过 10000 个样本的数据集。

    关于sklearn svm的官方数据告诉theshold是10,000个样本 所以 SGD 可能是一个更好的尝试。

    【讨论】:

      猜你喜欢
      • 2012-02-21
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 2018-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多