说明:本文翻译总结自 Chih-Wei Hsu等的论文 A Practical Guide to Support Vector Classification. 该论文也是libsvm的指导教程,在libsvm的homepage上可以下载阅读。
1 Introduction
- SVM在数据分类上是很有用的工具。
- 虽然它比神经网络更易于使用,但不熟悉的使用者在第一次使用时往往得不到好的结果。
- 一个分类任务需要把数据分成训练集和测试集。
- 给出训练集的样本对
(xi,yi),i=1,...,l
,
x∈Rn,y∈{1,−1}l
求解最优化问题:
minw,b,ξ12WTW+C∑i=1lξi
subject toyi(WTϕ(Xi)+b)≥1−ξi
ξi≥0 - 四种基本核函数:
- 线性: K(Xi,Xj)=XTiXj
- 多项式: K(Xi,Xj)=(γXTiXj+r)d,γ>0
- 径向基函数(RBF): K(Xi,Xj)=e−γ||Xi−Xj||2,γ>0
- sigmoid: K(Xi,Xj)=tanh(γXTiXj+r)
Proposed Procedure
- 将数据格式转换为SVM工具包支持格式
- 数据缩放
- 考虑径向基函数
- 用交叉验证选择最佳的 C 和 γ .
- 用所得参数训练数据集
- 测试
2 Data Preprocessing
- 如果是类别属性,转换成数值
- 推荐用m个数表示m个类别,其中只有一个为1, 其余为0
- 训练集和测试集缩放尺度需要一致
- 尺度缩放避免一项特征值过大主导其他特征
3 Model Selection
- 之所以选用径向基函数,是因为:
- 一般来说,径向基函数能应付类别与属性之间的非线性关系
- 多项式核函数参数更多,在高维情况可能出现无穷大或0值
- sigmoid核函数在某些参数是无效的
- 特别地,如果特征特别多,那就直接用线性核函数
- 通过 “Grid Search”选参
例如, C=2−5,2−3,...215,γ=2−15,2−13,...,23
4 Discussion
如果特征太多考虑先选择特征再用SVM.
Appendix C 何时用线性核而不是RBF核
- 样本数远小于特征数,用libSVM 线性核
- 样本数和特征数都很大,用libLinear,速度快
- 样本数远大于特征数,通常需要映射到高维空间,如果你一定要用线性核,那就用libLinear吧