【问题标题】:Techniques to improve the accuracy of SVM classifier提高SVM分类器准确率的技术
【发布时间】:2016-12-24 10:11:21
【问题描述】:

我正在尝试构建一个分类器来使用 UCI 数据集预测乳腺癌。我正在使用支持向量机。尽管我最真诚地努力提高分类器的准确性,但我无法超过 97.062%。我尝试了以下方法:

1. Finding the most optimal C and gamma using grid search.
2. Finding the most discriminative feature using F-score.

有人可以建议我提高准确性的技巧吗?我的目标是至少 99%。

1.Data are already normalized to the ranger of [0,10]. Will normalizing it to [0,1]  help?

2. Some other method to find the best C and gamma?

【问题讨论】:

  • 据我所知,您的问题的答案是否定的。
  • 这是课堂练习吗?
  • 不,不是。我只是在 SVM 中弄脏了自己的手。

标签: machine-learning svm


【解决方案1】:

在阅读您的问题以及您与这位声称已达到 acc=99.51% 的作者提出的论点时,我想到了一些想法。 我的第一个想法是过度拟合。我可能是错的,因为它可能取决于数据集 - 但首先想到的是过度拟合。现在我的问题;

1- 作者在他的文章中是否说明了数据集是否分为训练集和测试集? 2- 这个 acc = 99.51% 是通过训练集还是测试集实现的?

使用训练集,当您的模型过度拟合时,您可以达到这个 acc = 99.51%。 通常,在这种情况下,SVM 分类器在未知数据集上的性能较差。

【讨论】:

    【解决方案2】:

    对于 SVM,重要的是对所有特征进行相同的缩放,通常它是通过缩放每个(列)特征中的值来完成的,使得平均值为 0,方差为 1。另一种方法是缩放它,使得最小值和最大值例如是 0 和 1。但是,[0, 1] 和 [0, 10] 之间没有任何区别。两者将显示相同的性能。

    如果您坚持使用 SVM 进行分类,另一种可能导致改进的方法是集成多个 SVM。如果你使用的是 Python,你可以试试 BaggingClassifier from sklearn.ensemble

    另请注意,您不能期望从一组真实的训练数据中获得任何性能。我认为97%是一个非常好的表现。如果高于此值,则可能会过度拟合数据。

    【讨论】:

    • 实际上,我正在浏览一篇论文,作者使用与我类似的方法达到了 99.51% 的准确率。我认为至少达到 99% 是个好主意。
    • 是同一个数据集吗?这取决于数据。但通常应该在准确性和过度拟合之间做一些权衡。另一方面,您可以通过将数据集仔细划分为训练和测试来防止过度拟合。您还应该使用交叉验证。一种常见的类型是 10 倍分层交叉验证。
    猜你喜欢
    • 1970-01-01
    • 2014-08-05
    • 2016-06-16
    • 2020-08-13
    • 2018-10-20
    • 2017-11-16
    • 1970-01-01
    • 2019-02-14
    • 2020-09-12
    相关资源
    最近更新 更多