LIBSVM 是一个广泛使用的支持向量机(SVM)工具包,支持分类、回归和分布估计等任务。以下是其基本使用方法和关键参数注释,帮助用户快速上手。
1. 安装与使用步骤
1.1 安装
下载地址: LIBSVM官网编译:# Linux/Mac 下编译
make
# Windows 使用预编译的 .exe 文件
1.2 数据准备
数据格式: 每行对应一个样本,格式为 标签 特征1:值1 特征2:值2 ... 例如:1 1:0.5 2:0.3 3:0.7
-1 1:0.1 2:0.9 3:0.2
1.3 训练与预测
# 训练模型
svm-train [参数] 训练数据文件 [模型文件]
# 示例: svm-train -c 10 -g 0.1 data.txt model.txt
# 使用模型预测
svm-predict 测试数据文件 模型文件 预测结果文件
# 示例: svm-predict test.txt model.txt predict.txt
2. 核心参数注释
2.1 SVM类型 (-s)
参数值类型适用场景0C-SVC (默认)多类分类1nu-SVC分类,支持 nu 参数2one-class SVM异常检测3epsilon-SVR回归任务4nu-SVR回归,支持 nu 参数
2.2 核函数类型 (-t)
参数值核函数公式0线性核 (Linear)( K(x_i, x_j) = x_i^T x_j )1多项式核( (γ x_i^T x_j + r)^d )2RBF核 (默认)( \exp(-γ |x_i - x_j|^2) )3Sigmoid核( \tanh(γ x_i^T x_j + r) )
2.3 常用参数
参数说明默认值-c惩罚系数 ©,控制过拟合1-g核函数参数 gamma (RBF核关键参数)1/特征数-d多项式核的阶数 (degree)3-r核函数中的截距项 (coef0)0-nnu 参数 (nu-SVC, nu-SVR)0.5-pepsilon 参数 (epsilon-SVR)0.1-e停止准则的容忍误差 (epsilon)0.001-m内存缓存大小 (MB)100
3. 关键参数调优建议
RBF核 (默认):
优先调节 -c (惩罚系数) 和 -g (gamma)。过拟合时:降低 -c,增大 -g;欠拟合时:增大 -c,降低 -g。 交叉验证: 使用网格搜索 (grid.py) 寻找最优 -c 和 -g:
python grid.py -log2c -5,5,1 -log2g -5,5,1 数据文件
数据归一化: 使用 svm-scale 对数据归一化到 [0,1] 或 [-1,1],避免特征量纲差异影响模型。
4. 示例代码
# 数据归一化
svm-scale -l -1 -u 1 -s range.txt data.txt > data.scaled
# 训练模型 (RBF核,C=10, gamma=0.5)
svm-train -s 0 -t 2 -c 10 -g 0.5 data.scaled model.txt
# 预测
svm-predict test_data.scaled model.txt predictions.txt
5. 注意事项
默认核函数: 未指定 -t 时使用 RBF 核,需调参。回归任务: 使用 -s 3 (epsilon-SVR) 或 -s 4 (nu-SVR)。类别不平衡: 通过 -wi 参数调整类别权重,例如 -w1 10 提高类别1的权重。
建议结合官方文档 (LIBSVM Guide) 深入理解参数交互和调优策略。