【发布时间】:2018-05-04 21:59:24
【问题描述】:
如何为 RBF 内核选择最佳 sigma?
我正在使用单个类的分类器, 以什么为基础,采用什么参数
【问题讨论】:
标签: svm
如何为 RBF 内核选择最佳 sigma?
我正在使用单个类的分类器, 以什么为基础,采用什么参数
【问题讨论】:
标签: svm
取决于您使用的是哪种机器学习平台。 如果您使用的是 Weka,则可以使用“网格搜索”选项来找出最佳分类参数。 (即对于线性内核,它为您提供成本函数,对于 RBF-SVM,它提供 sigma/gamma 和 C 等)
http://scikit-learn.org/stable/auto_examples/svm/plot_rbf_parameters.html
如果您使用的是 Python,我通常会以小步数迭代 sigma 值,并在每一步上提高分类精度。然后我选择导致最佳准确性的 sigma。 另请注意,如果您针对给定的分类任务优化 SVM 参数,则存在过拟合的风险。但是,迭代步骤更改应该让您更好地了解过度拟合发生的位置(如果有的话!)。
祝你好运!
【讨论】:
我建议你使用某种Grid-Search。这是一种同时评估两个参数的性能的技术。对于您的 SVM,有 sigma 和 C。因此,您对参数空间执行详尽搜索,其中每个轴代表一个参数,其中一个点是两个参数值的元组(C_i, sigma_i)。
因此,要执行它,您只需为C:{C_1,..., C_n} 和sigma:{sigma_1,..., sigma_n} 选择一组,然后针对两组(C_i, sigma_i) 中的每对参数进行训练和测试。
这实际上需要很长时间,所以我建议您尝试类似的方法:
LibSVM 例如提供K-Fold Cross-Validation,因此请绘制一组sigma 值,定义一个固定的K(可能是5 到10)并运行交叉验证以获得C 的良好估计值。记录C 参数和准确度分数。将此应用于sigma 值集的所有元素后,选择在每个交叉验证过程中实现最高准确度的参数对。
注意:
我建议你不要使用 SVM 来解决一类问题。即使有正式的定义,基本的 SVM 算法也需要两个类来确定最佳边界。因此,我建议您创建一个catch-all 类并将您的一类问题转换为二类问题。
【讨论】: