我是一个SVM的新手,对于libsvm中的一个工具有几个问题。
有一个工具/grid.py,tools/README中解释为“使用RBF(径向基函数)核的C-SVM分类参数选择工具”。
我对这个工具有两个问题。
- 这个工具的作用是:给定一组标签/特征参数,通过进行网格搜索,选择最“有效”和“最小”的特征参数。我的理解正确吗?
例如,给定如下数据集,其标签仅依赖于param1,
label, param1, param2, param30 , 0 , 61 , 2 0 , 0 , 92 , 61 , 1 , 10 , 321 , 1 , 83 , 10
如果我们将grid.py应用于这个数据集,它会告诉我最“有效”(以精确识别测试数据类别的方式)和“最小”(以不包含无关参数的方式)的参数是param1吗?
- 如果上述问题的答案是肯定的,我如何知道哪些参数是有效且最小的?我看到了一些输出文件,但对我来说没有意义。如果答案是否定的,有没有做我想做的事情的标准方法?
回答:
可能找到了答案。
问题1. 这个工具的作用是:给定一组标签/特征参数,通过进行网格搜索,选择最“有效”和“最小”的特征参数。我的理解正确吗?
答案是否定的。grid.py执行网格搜索并估计最佳的cost
和gamma
值。因此,它确实有助于使SVM变得“有效”,但不帮助找到最小的特征集(实际上,可能没有“绝对最小”的特征集,因为准确性和特征数量可能成正比)。
问题2. 如果上述问题的答案是肯定的,我如何知道哪些参数是有效且最小的?我看到了一些输出文件,但对我来说没有意义。如果答案是否定的,有没有做我想做的事情的标准方法?
可能没有标准方法。在决定特征参数时,我们应该首先从领域的角度出发,然后再通过数学方法进行调整。(例如,如果你正在使用SVM来区分恶意软件和良性应用程序,你应该首先考虑恶意软件的行为和趋势,决定“参数候选”,然后应用数学方法,如计算每个特征的平均值和偏差。)