日期:2014-05-16  浏览次数:20420 次

使用Support Vector Machine
使用svm(Support Vector Machine)中要获得好的分类器,最重要的是要选对kernel. 常见的svm kernel包括linear kernel, Gaussian kernel, polynomial kernel 和 string kernel. String kernel多用于文本分类,事实上大多数情况下使用linear或Gaussian kernel就能找到好的分类器。以下是几个选择kernel的方法。假设一个数据集,他的属性集为N,数据量为M:

 1 当N很大M很小,则使用linear kernel
 2 当N小 (N<10) M大 (M>1000), 则使用Gaussian kernel
 3 当N小 (N<10) M很大 (M>10^7), 则使用linear kernel, 并尝试增加属性。
 4 如果属性中的值存在负值,不要使用polynomial kernel;事实上polynomial kernel方法也很不常用。

设置合适的参数C对svm分类器的精度也很有帮助,如果使用libsvm软件,该参数就是C。libsvm是常用的svm软件,在默认设置下它使用radial Gaussian kernel. Libsvm开发者主张使用他们的默认kernel,他们指出如果使用model selection的方法来生成svm分类器,那么就不需要考虑linear kernel, RBF kernel(即gaussian kernel)的表现不会比之差。

最后如果数据集中存在某个属性值的取值范围比其他属性值大很多,那么可以使用scale来对数据进行预处理,这也有助于提高svm分类器的精度。

对于多类分类问题,svm需使用one-vs-the-rest方法,某些缺陷也可能因此带入。譬如说imbalance data的问题在这种方法下会被放大。

Some References:
1 Standford course, Machine learning -- svm
2 A tutorial on support vector machines for pattern recognition, Christopher J.C. Burges