支持向量分类实用指南

说明:本文翻译总结自 Chih-Wei Hsu等的论文 A Practical Guide to Support Vector Classification. 该论文也是libsvm的指导教程,在libsvm的homepage上可以下载阅读。

1 Introduction

  • SVM在数据分类上是很有用的工具。
  • 虽然它比神经网络更易于使用,但不熟悉的使用者在第一次使用时往往得不到好的结果。
  • 一个分类任务需要把数据分成训练集和测试集。
  • 给出训练集的样本对\( (x_i,y_i),i = 1, ...,l , x \in R^n, y \in {1, -1}^l \) 求解最优化问题: \( \min \limits _{ w,b,\xi } { 1 \over 2 } { W^T W + C \sum \limits _{i = 1}^l \xi_i } \) \( \quad subject \ to \quad y_i (W^T\phi(X_i)+b) \ge 1-\xi_i , \xi_i \ge 0\)
  • 四种基本核函数:
    • 线性: \( K (X_i, X_j) = X_i ^TX_j \)
    • 多项式: \( K (X_i,X_j) = (\gamma X_i^TX_j + r)^d , \gamma > 0\)
    • 径向基函数(RBF): \( K(X_i, X_j) = e^{-\gamma||X_i - X_j||^2}, \gamma > 0 \)
    • sigmoid: \(K(X_i,X_j) = tanh(\gamma X_i^TX_j +r) \)

Proposed Procedure

  • 将数据格式转换为SVM工具包支持格式
  • 数据缩放
  • 考虑径向基函数
  • 用交叉验证选择最佳的 \( C \)\( \gamma\).
  • 用所得参数训练数据集
  • 测试

2 Data Preprocessing

  • 如果是类别属性,转换成数值
  • 推荐用m个数表示m个类别,其中只有一个为1, 其余为0
  • 训练集和测试集缩放尺度需要一致
  • 尺度缩放避免一项特征值过大主导其他特征

3 Model Selection

  • 之所以选用径向基函数,是因为:
    • 一般来说,径向基函数能应付类别与属性之间的非线性关系
    • 多项式核函数参数更多,在高维情况可能出现无穷大或0值
    • sigmoid核函数在某些参数是无效的
    • 特别地,如果特征特别多,那就直接用线性核函数
  • 通过 “Grid Search”选参 例如, \( C = 2^{-5},2^{-3},... 2^{15}, \gamma = 2^{-15},2^{-13},...,2^3 \)

4 Discussion

如果特征太多考虑先选择特征再用SVM.

Appendix C 何时用线性核而不是RBF核

  • 样本数远小于特征数,用libSVM 线性核
  • 样本数和特征数都很大,用libLinear,速度快
  • 样本数远大于特征数,通常需要映射到高维空间,如果你一定要用线性核,那就用libLinear吧
支持向量分类实用指南

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax