【libsvm参数说明】在使用LIBSVM(一种广泛使用的支持向量机工具包)进行分类或回归任务时,理解其关键参数对于模型性能的优化至关重要。以下是对LIBSVM主要参数的总结,并以表格形式呈现,帮助用户快速掌握其功能和使用方法。
一、参数说明
1. -s:设置分类或回归类型
- `0`:C-SVC(多类分类)
- `1`:nu-SVC(多类分类)
- `2`:one-class SVM(单类分类)
- `3`:epsilon-SVR(回归)
- `4`:nu-SVR(回归)
2. -t:核函数类型
- `0`:线性核(Linear)
- `1`:多项式核(Polynomial)
- `2`:径向基函数核(RBF)
- `3`:Sigmoid核
- `4`:自定义核(需提供内核矩阵)
3. -d:多项式核的次数(仅当 `-t=1` 时有效)
- 默认值为 `3`
4. -g:RBF 核的 gamma 值(仅当 `-t=2` 时有效)
- 默认值为 `1/特征数`
5. -r:多项式核或Sigmoid核的常数项(仅当 `-t=1` 或 `-t=3` 时有效)
- 默认值为 `0`
6. -c:C 参数(用于 C-SVC、epsilon-SVR、nu-SVR)
- 控制正则化强度,值越大越倾向于正确分类,但可能过拟合
- 默认值为 `1`
7. -n:nu 参数(用于 nu-SVC、nu-SVR)
- 在 `nu-SVC` 中,表示支持向量的比例上限
- 在 `nu-SVR` 中,表示误差容忍度的下限
- 取值范围 `[0,1]`
8. -p:epsilon 参数(用于 epsilon-SVR)
- 定义不惩罚的误差范围
- 默认值为 `0.1`
9. -m:缓存大小(内存限制)
- 单位为 MB,影响训练速度和内存占用
- 默认值为 `40`
10. -e:停止条件(精度)
- 用于控制迭代终止的精度
- 默认值为 `0.001`
11. -h:是否对数据进行标准化处理
- `1` 表示启用,`0` 表示禁用
- 默认为 `0`
12. -b:是否输出概率估计
- `1` 表示启用,`0` 表示禁用
- 默认为 `0`
13. -wi:类别权重(用于多类分类)
- 指定不同类别的权重,格式为 `class_id:weight`
- 适用于 C-SVC 和 nu-SVC
二、常用参数表格
参数 | 说明 | 默认值 | 备注 |
-s | 分类/回归类型 | 0 | 0:C-SVC, 1:nu-SVC, 2:One-Class, 3:epsilon-SVR, 4:nu-SVR |
-t | 核函数类型 | 0 | 0:Linear, 1:Poly, 2:RBF, 3:Sigmoid, 4:Custom |
-d | 多项式核次数 | 3 | 仅当 -t=1 时有效 |
-g | RBF 核的 gamma | 1/特征数 | 仅当 -t=2 时有效 |
-r | 多项式/Sigmoid 核的常数项 | 0 | 仅当 -t=1 或 -t=3 时有效 |
-c | C 参数 | 1 | 用于 C-SVC、SVR 等 |
-n | nu 参数 | 0.5 | 用于 nu-SVC、nu-SVR |
-p | epsilon 参数 | 0.1 | 用于 epsilon-SVR |
-m | 缓存大小 | 40 | 单位为 MB |
-e | 迭代精度 | 0.001 | 控制收敛条件 |
-h | 数据标准化 | 0 | 0:不标准化,1:标准化 |
-b | 输出概率估计 | 0 | 0:不输出,1:输出 |
-wi | 类别权重 | - | 可指定多个类别权重 |
三、使用建议
- 选择合适的核函数:RBF 核在大多数情况下表现良好,适合非线性问题;线性核适合高维数据。
- 调整 C 和 gamma:C 控制模型复杂度,gamma 控制 RBF 核的“宽度”,两者都需要通过交叉验证调优。
- 注意数据预处理:标准化数据可以提高模型性能,尤其是在使用 RBF 核时。
- 合理设置缓存大小:大文件建议增加缓存,避免内存不足。
通过合理配置这些参数,可以显著提升 LIBSVM 模型的准确性和泛化能力。