【问题标题】:selecting c and gamma value选择 c 和 gamma 值
【发布时间】:2012-04-03 04:33:52
【问题描述】:

您好,我正在使用 SMO 执行 SVM 分类,其中我的内核是 RBF,现在我想选择 csigma 值,使用网格搜索和交叉验证,我是内核函数的新手,请帮助,逐步进行

【问题讨论】:

    标签: kernel machine-learning svm


    【解决方案1】:
    1. 为 C 和 sigma 选择一些您认为有趣的值。例如,C = {1, 10, 100, 1000} 和 sigma = {.01, .1, 1}(我只是在编造这些)。
    2. 将训练集分成 k 个(例如 10 个)部分,最好采用stratified 的方式。
    3. 循环遍历所有 C 和 sigma 值对。
      1. 循环遍历训练集的所有 k 部分。把第 k 部分拿出来。在所有其他部分组合上训练分类器,然后在保留的部分上进行测试。
      2. 跟踪某些分数(准确度、F1 或您想要优化的任何内容)。
    4. 根据您刚刚计算的分数返回 C 的最佳性能值对,sigma。

    【讨论】:

    • 澄清一下:“在其他每个部分上训练分类器”通常意味着在其他部分的组合上训练它,而不是单独训练。
    • @Dougal:是的,我就是这个意思。谢谢。
    • 我认为值得注意的是,您所指的(划分为 k 个部分等)称为交叉验证,特别是 10 倍交叉验证。 OP 可能不知道,有时尝试查找更多信息最困难的部分是知道要搜索哪些关键字。
    • 您好,感谢您的回答,但请您说一下如何编码,
    • @pradeepdeep:我刚刚给了你算法,你必须自己编写代码。
    【解决方案2】:

    阅读 Chih-Wei Hsu、Chih-Chung Chang 和 Chih-Jen 的支持向量分类实用指南。他们解决了这个确切的问题并解释了执行网格搜索以选择参数的方法。 http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf

    【讨论】:

      【解决方案3】:

      我只是对larsmans' answer添加一点解释。

      C 参数是一个正则化/松弛参数。其较小的值迫使权重变小。它越大,允许的权重范围就越宽。结果,较大的 C 值会增加错误分类的惩罚,从而降低训练数据的分类错误率(这可能导致过度拟合)。随着 C 值的增加,您的训练时间和支持向量的数量也会增加。

      您可能还会发现阅读 K.K. 的 Extending SVM to a Soft Margin Classifier 很有用。下巴。

      【讨论】:

        【解决方案4】:

        您还可以使用统一设计模型选择来减少需要检查的元组数量。 解释它的论文是黄建明的“通过统一设计的支持向量机的模型选择” ssvm 0.2中存在python中的一些实现

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-12-09
          • 2014-01-10
          • 2018-08-06
          • 2011-01-26
          • 2022-12-22
          • 1970-01-01
          • 1970-01-01
          • 2012-05-19
          相关资源
          最近更新 更多