选择c和gamma值

时间:2012-03-18 10:12:57

标签: kernel machine-learning svm

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

4 个答案:

答案 0 :(得分:18)

  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返回效果最佳的值对。

答案 1 :(得分:4)

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

答案 2 :(得分:1)

我将向larsmans' answer添加一些解释。

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

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

答案 3 :(得分:0)

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