【问题标题】:SVM Multiclass Classification using Scikit Learn - Code not completing使用 Scikit Learn 的 SVM 多类分类 - 代码未完成
【发布时间】:2013-06-12 02:12:48
【问题描述】:

我有一个标记为 3 类的文本数据,第 1 类有 1% 的数据,第 2 类 - 69% 和第 3 类 - 30%。总数据量为 10000。我正在使用 10 倍交叉验证。对于分类,scikit learn python 库的 SVM 与 class_weight=auto 一起使用。但是 10 倍 CV 的 1 步的代码已经运行了 2 小时,还没有完成。这意味着代码至少需要 20 小时才能完成。在不添加 class_weight=auto 的情况下,它会在 10-15 分钟内完成。但是,输出中没有数据被标记为 1 类。有没有办法解决这个问题?

【问题讨论】:

    标签: python python-2.7 machine-learning svm scikit-learn


    【解决方案1】:

    首先,对于文本数据,您不需要非线性内核,因此您应该使用高效的线性 SVM 求解器,例如 LinearSVC 或 PassiveAggressiveClassifier。

    SVC / libsvm 的 SMO 算法是不可扩展的:复杂度超过二次方,这在实践中常常使得它对于大于 5000 个样本的数据集毫无用处。

    此外,为了处理类不平衡,您可能希望尝试对第 2 类和第 3 类进行二次抽样,以使样本数最多为第 1 类样本数的两倍。

    【讨论】:

      猜你喜欢
      • 2020-01-04
      • 2016-05-25
      • 2017-10-11
      • 2020-06-13
      • 2018-03-24
      • 2012-12-06
      • 2012-05-18
      • 1970-01-01
      相关资源
      最近更新 更多