RBF 内核的最佳西格玛?

Optimal sigma for the RBF kernel?

如何为 RBF 核选择最佳的 sigma?

我正在使用单个 class 的 class 转换器, 以什么为基础,采用什么参数

取决于您使用的是哪种机器学习平台。 如果您使用的是 Weka,则有一个可用的 "grid search" 选项可以吐出最佳分类参数。 (即对于线性内核,它给你成本函数,对于 RBF-SVM,它给出 sigma/gamma 和 C 等)

http://scikit-learn.org/stable/auto_examples/svm/plot_rbf_parameters.html

如果您使用的是 Python,我通常会以较小的步长迭代 sigma 值,并在每一步中确保乳头分类准确度。然后我选择导致最佳准确度的西格玛。 另请注意,如果您针对给定的分类任务优化 SVM 参数,您 运行 会面临过度拟合的风险。但是,迭代步骤更改应该可以让您更好地了解发生过度拟合的位置(如果有的话!)。

祝你好运!

我建议您使用某种 Grid-Search。这是一种同时评估两个参数性能的技术。对于您的 SVM,有 sigmaC。因此,您对参数 space 执行详尽搜索,其中每个轴代表一个参数,其中的一个点是两个参数值 (C_i, sigma_i).

的元组

因此,要执行它,您只需为 C{C_1,..., C_n}sigma{sigma_1,..., sigma_n} 选择一个集合,然后训练并随后对每一对进行测试两组中的参数 (C_i, sigma_i)

这实际上需要相当长的时间,所以我建议您尝试类似的方法:

LibSVM for example offers K-Fold Cross-Validation,所以画一组sigma值,定义一个固定的K(可能5到10)和运行交叉验证得到一个好的C 的估计。记录 C 参数和准确度分数。将此应用于 sigma 值集的所有元素后,选择在每个交叉验证过程中达到最高精度的参数对。

注: 我建议你不要用 SVM 来解决 one-class 的问题。即使有正式定义,基本 SVM 算法也需要两个 class 来确定最佳边界。因此,我建议您创建一个 catch-all class 并将您的一个 class 问题转换为两个 class 问题。