libsvm 、liblinear:
libsvm 和liblinear 是两个著名的开源机器学习库,两者都是由台湾国立大学所写。语言c++, 接口为C风格。
libsvm 实现了支持核技巧的SVM, 使用的算法是SMO算法;支持分类和回归。
liblinear实现的是线性SVM。使用的训练算法是一致下降算法(coordinate descent algorithm),模型是logistic regression models。
libsvm主页:http://www.csie.ntu.edu.tw/~cjlin/libsvm/
liblinear主页:http://www.csie.ntu.edu.tw/~cjlin/liblinear/
优缺点:
libsvm 支持非线性分类,在样本维数少的情况下,训练效果通常会比liblinear好。但计算量较liblinear大。该分类器在大数据,高维数时运算量剧增,用作分类训练会占用很长的时间。
liblinear为线性分类,其训练速度非常快,但是很消耗内存。适用于维数高,数据样本量大的情况。在大量样本数据和高维数特征的情况下,线性分类器的分类效果并不比libsvm差。
下面的链接中,有网友的类似经验:http://blog.youkuaiyun.com/pkueecser/article/details/8026376
什么时候该用liblinear而不是用libsvm呢?
libsvm和liblinear的主页给了我们一些参考:http://www.csie.ntu.edu.tw/~cjlin/liblinear/
When to use LIBLINEAR but not LIBSVM
There are some large data for which with/without nonlinear mappings gives similar performances. Without using kernels , one can quickly train a much larger set via a linear classifier. Document classification is one such application. In the following example (20,242 instances and 47,236 features; available on LIBSVM data sets ), the cross-validation time is significantly reduced by using LIBLINEAR:% time libsvm-2.85/svm-train -c 4 -t 0 -e 0.1 -m 800 -v 5 rcv1_train.binary Cross Validation Accuracy = 96.8136% 345.569s % time liblinear-1.21/train -c 4 -e 0.1 -v 5 rcv1_train.binary Cross Validation Accuracy = 97.0161% 2.944sWarning: While LIBLINEAR's default solver is very fast for document classification, it may be slow in other situations. See Appendix C of our SVM guide about using other solvers in LIBLINEAR.
Warning:If you are a beginner and your data sets are not large, you should consider LIBSVM first.
svmlight
下面介绍一个学习和使用svm light 的网站:http://www.cs.cornell.edu/People/tj/svm_light/
大部分网友使用之后都有一个共同的感觉: svmlight 要比libsvm要快。 在相同级别的精度下,svmlight 大概要比libsvm 快 2到3倍。
实验测试: