【问题标题】:LIBSVM parameter selectionLIBSVM 参数选择
【发布时间】:2014-06-29 14:53:46
【问题描述】:

我正在开发一个可以同时优化 SVM 参数(LIBSVM 工具箱)和最佳特征(输入)的系统。我的优化技术是和声搜索或遗传算法。我在将数据插入系统之前对其进行了规范化(Maxmin 或白化),所以你知道我必须设置

-g gamma : set gamma in kernel function 
-c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR

我有一个金融数据库的二元分类问题。除此之外,有时我会使用降维技术,如“PCA”和其他技术。

那么您建议的 gamma 和成本参数搜索间隔是多少?

第二个问题:你认为我应该用我的优化技术优化 LIBSVM 的其他哪些参数?

谢谢。

PS.我的核函数是“RBF”

【问题讨论】:

    标签: parameters svm libsvm


    【解决方案1】:

    我建议你看看林博士提供的教程Tips and tricks for liblinear。除非您有非常充分的理由使用特定内核,否则请尝试使用所有可用内核。同样,我也会尝试使用未标准化/未缩放的数据进行训练/测试。请记住,这些(缩放)是启发式的,没有人知道满足您要求的参数集是什么。探索所有。

    【讨论】:

    • 感谢您的回复。我在 Lin 博士的文档中发现他对 C 使用了 {-2^14 2^14},但是因为线性内核我们在这段代码中没有用于“RBF”的 Sigma。那么你对这个参数有什么建议呢?
    • @user2991243 尝试从 10^-1 到 10^5,步长为 10 的倍数。
    • 为什么你的范围更积极?为什么不选择 [10^(-5) 10^5] ?另一个问题。我可以按 10 的倍数进行搜索。我的算法搜索这两个数字之间的所有值。正如您所知,算法的趋势是朝着 C 和 Sigma 的最佳组合方向发展。谢谢。
    • @user2991243 那是一个错字。我的意思是 10^-5 到 10^5。 :)
    【解决方案2】:

    那么您建议的 gamma 和成本参数搜索间隔是多少?

    基本上,您应该通过对网格单元大小进行一些有根据的猜测来进行启发式网格搜索,希望找到一个好的最佳值。查看 LIBSVM 包中的 Grid.py 文件。它会给你一些关于这些值的提示。有更高级的技术可以做到这一点,但这是值得尝试的第一件事。

    第二个问题:你认为我应该用我的优化技术优化 LIBSVM 的其他哪些参数?

    这取决于您选择的内核。请注意,gamma 不会影响所有内核类型(例如,线性内核类型)。您可能还可以尝试调整其他一些东西,但从这两个开始,看看效果如何。

    【讨论】:

    • 感谢您的回答。您能简要介绍一下网格搜索吗?我不熟悉它。我应该只为优化算法中的每个参数间隔设置两个值(下限和上限)。谢谢。
    • “请注意,C 和/或 gamma 不会影响所有内核类型”看起来是个糟糕的措辞。 C 影响每个“内核类型”,因为它是一个 SVM 参数,而不是内核参数。
    • @leilot 那是真正的 lejlot。我应该在主要问题中提到它。我的内核函数是“RBF”。我认为我的分类准确率更高。
    • @lejlot 事实上,C 是一个 SVM 参数。我更正了我的答案。
    • @user2991243 如果您查看 Grid.py,您会看到它为 gamma 生成一个值数组,为 C 生成一个值,然后它会尝试每种值组合以查看哪对值最好准确性。如果需要,有一个扩展名over here 允许您使用其他标准。我不知道他们是如何选择这些特定值的,但我认为它们在大多数情况下都会产生良好的结果。 Andrew Ng 在他的Coursera 讲座中还提供了一些关于如何选择这些值的直觉。
    猜你喜欢
    • 2016-09-23
    • 2016-05-16
    • 2014-04-19
    • 2015-06-13
    • 2016-03-21
    • 2014-05-31
    • 2013-12-05
    • 2011-12-14
    • 2012-07-30
    相关资源
    最近更新 更多