use*_*838 0 matlab regression vector libsvm
我正在研究一篇需要应用支持向量回归(SVR)的论文,最好是使用高斯核.经过一番搜索,我发现LibSVM可以帮助完成这项任务.
但是,我遇到了一些困难:我不确定如何做到这一点,使用这个或任何其他类似的库,如何根据经验确定SVR参数(内核带宽,成本和epsilon(松弛变量)),如以及如何绘制训练和测试错误.
欢迎所有建议.
最佳参数取决于您的数据.您最好的(也许是唯一的)选项是连续尝试多个参数集,并根据您选择的指标查看哪一个给您最佳性能.
至于绘制训练和测试错误 - 评估分类器的一种好方法是使用F-measure作为性能指标.这允许您考虑误报和误报错误,并根据您的特定域权重对其进行加权.如果您通过绘制培训和测试错误来表示其他内容,请澄清.
编辑:回应你的评论
LibSVM也不知道如何优化自己的参数 - 这就是为什么你需要提供参数作为svm_train函数的参数.您需要通过实验优化自己的参数,为此,您需要对性能进行一些单一的定量测量.我不确定30值问题是什么意思,但你应该能够通过创造性地重新定义真正的积极,假阳性,真阴性和假阴性来使用F-measure.
你有两个选择:一个更全面,一个计算更便宜.您可以使用三层嵌套循环来测试gamma,C和epsilon的各种可能组合,选择能够在测试数据上获得最高性能的参数(我建议使用交叉验证来避免过度拟合到特定测试数据),或者你可以连续优化每个 - 首先,给定一些平淡,默认的C和epsilon,迭代许多伽玛值,直到你找到最好的; 然后为C和epsilon做同样的事情.
如果你想增强第二种方法,那么当你优化每个参数时,使用所有其他参数的最佳值而不是某些默认值,并多次优化每个参数(以便它们可以连续运行)更好的其他参数值).
为了使任何一种方法更精确(尽管总是以潜在的过度拟合为代价,请记住),使用伸缩搜索 - 比如你第一次从1到101搜索,步长为10,所以你搜索1,11 ,21 ...... 101.在你获得51的最佳值之后的下一次运行中,搜索46,47,48,49,50,51,52,53,54,55,56,以便重复使用相同的信息但是变得更加精确.
为了使任一方法对随机波动不敏感(比如你为交叉验证生成的随机折叠),使用默认参数运行多个交叉验证测试(我会说,好的默认值,对于C来说可能是1.0,并且1E-9表示epsilon,我不确定伽玛)并获得您使用的性能指标的均值和标准差.然后,您可以判断给定的性能度量是否在统计上明显优于次优度,或者仅使用默认参数.
归档时间: |
|
查看次数: |
2589 次 |
最近记录: |