2010年3月10日星期三

LibSVM中grid.py的使用

目前在使用LibSVM进行中文问句分类的研究,当中用到了grid.py来搜索分类中所需的参数C和gamma。
首先想和大家讨论一下在文本分类中,应当使用线性核还是RBF核来进行分类。在我的实验中采取RBF核进行试验时,分类的精度只能达到4%左右。后来在网上浏览文章中无意发现有人提到在文本分类中使用线性核进行分类精度较高。遂改为线性核进行试验,确实在实验中使用线性核分类精度提升到70%多。但是为什么会出现这种情况还是不太了解。望有高人指点。
在实验中我使用grid.py进行参数搜索的过程如下:
首先在CMD中进入grid.py的目录,运行命令
grid.py -t 0 [训练文件路径]
这里使用-t参数选择了线性核。
然后在CMD中出现结果:
[local] 5 -7 76.3794 (best c=32.0, g=0.0078125, rate=76.3794)
[local] -1 -7 76.2586 (best c=32.0, g=0.0078125, rate=76.3794)
[local] 5 -1 76.3794 (best c=32.0, g=0.0078125, rate=76.3794)
[local] -1 -1 76.2586 (best c=32.0, g=0.0078125, rate=76.3794)
……
[local] 13 -15 76.3794 (best c=2.0, g=0.0078125, rate=76.3995)
[local] 13 3 76.3794 (best c=2.0, g=0.0078125, rate=76.3995)
[local] 13 -9 76.3794 (best c=2.0, g=0.0078125, rate=76.3995)
[local] 13 -3 76.3794 (best c=2.0, g=0.0078125, rate=76.3995)
2.0 0.0078125 76.3995
(这里最后一行即是结果C=2 gamma=0.0078125分类精度是76.3995)
另外,grid.py默认采用5倍交叉验证,对c采用的搜索范围和步长分别为[-10, 15]和 1,g的为[10, -15]和-1,请根据需要自行修改grid.py。