liblinear VS libSVM

来源:互联网 发布:象棋打谱软件 编辑:程序博客网 时间:2024/05/22 17:22
转载自:http://blog.sina.com.cn/s/blog_5b29caf701015ra0.html
it features as following:
1. it can be able to handle large-scaled dataset
2. it runs really faster than libsvm because it doesn't have to compute the kernel for any two points
3. trust region method for optimization looks new for machine learning people
1. 关于trust region method:
trust region method是个优化的框架,a dual to line search。一般情况下,优化是个迭代的过程x_k+1 = x_k + alpha * p_k,其中p_k是方向,alpha是步长。在一般使用line search的优化中,先根据泰勒展式的局部模型计算p_k(就是在optimization里占大篇幅的各种方法的最速下降法、牛顿法、拟牛顿法等等),然后在确定p_k的情况下优化alpha,这一步就叫line search。trust region的思维恰恰相反,它是先确定一个region(hyperball),或者说先确定它的半径delta(因为球心就是x_k),然后在此球内优化泰勒展式的局部模型(一般都是二阶)寻找方向p_k,如果优化成功则球心转移,并扩大半径;如果不成功则球心不变,缩小半径。并如此反复。
一个图文并茂的例子:http://www.applied-mathematics.net/optimization/optimizationIntro.html
wiki的介绍:http://en.wikipedia.org/wiki/Trust_region

2. truncated newton method
liblinear所用优化方法也是一种truncated newton method。truncated newton method是指牛顿法中计算H * p_k + g = 0时采用数值迭代解决这个线性系统问题而不是直接高斯消元,其中g和H分别是目标函数的一阶导和二阶导。通常情况下,这里可以用共轭梯度的近似解来逼近。
这里有篇综述,但是似乎不是很简单:http://iris.gmu.edu/~snash/nash/assets/TN_Survey/tn_survey.html

3. liblinear的l2-loss logistic regresssion and svm都是基于trust region newton method for large-scale logistic regression这篇论文的实现。文中的方法就是把1、2两点综合起来,具体可参阅文章。有两个有意思的地方,第一,文中将trust region newton和l-bfgs的复杂度进行了比较,直觉上l-bfgs应该要快一些,但是试验中却恰恰相反;第二,trust region引入了几个参数(sigma, lambda),对于这些参数的取值作者说这都是经验的,不知道为什么在很多问题和数据下这就是最优的。具体的公式推导可以好好看文章,不管文章中的实验结果如何,liblinear的确已经得到界内广泛的认可了,今天的kddcup,这个研究组就用liblinear + feature engineering夺冠了。

liblinear的好处就是速度快,尤其是对稀疏的特征。缺点就是太吃内存了。10G的数据量需要接近50G的内存,数据量再大就没法做了
大数据量的可以用svmperf,也很快,耗内存少,精度嘛,不好比较。。

对于LibSVM:

何时使用线性核而非RBF核

■ 样本数远小于特征数

   例如生物学数据,70多个样本,7000多个特征

■ 样本数和特征数都很大

   例如文本分类,2万多样本,4万多特征

■ 样本数远大于特征数

   该情况作者并非推荐使用线性核,只是用来对比LibLinear和LibSVM的计算速度

原创粉丝点击