返回信息流最近用了林志仁老师的liblinear,很不错,推荐给大家
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
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #6904同步于 2010/6/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖
推荐liblinear
river
2010/6/23镜像同步17 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
热情一顶
【 在 river (river) 的大作中提到: 】
: 最近用了林志仁老师的liblinear,很不错,推荐给大家
: it features as following:
: 1. it can be able to handle large-scaled dataset
: ...................
为什么不需要计算Kernel呢?因为直接优化原问题么?
【 在 river (river) 的大作中提到: 】
: 最近用了林志仁老师的liblinear,很不错,推荐给大家
: it features as following:
: 1. it can be able to handle large-scaled dataset
: ...................
因为它本身与核根本就没关系,是线性的
【 在 firefox 的大作中提到: 】
: 为什么不需要计算Kernel呢?因为直接优化原问题么?
: 【 在 river (river) 的大作中提到: 】
: : 最近用了林志仁老师的liblinear,很不错,推荐给大家
: ...................
这个方法我也没有研究过,但是liblinear里的两个重要问题都是用这个方法解决的,而且速度很快
【 在 encoreway 的大作中提到: 】
: 没看懂3,科普一下?
: --
: 理想要分N 步走:
: ...................
今天看了下,下面是我的理解,如有偏差请指正:
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夺冠了。
【 在 encoreway 的大作中提到: 】
: 没看懂3,科普一下?
: --
: 理想要分N 步走:
: ...................
【 在 river 的大作中提到: 】
: 最近用了林志仁老师的liblinear,很不错,推荐给大家
: it features as following:
: 1. it can be able to handle large-scaled dataset
: ...................
今天试用了以下liblinear,速度很快(快到我没有想到),
我的实验数据:
训练集:21504 * 1500(1500是样本的数量,21504是维度)
测试集:21504 * 2985
速度用秒来衡量,20次实验总共不到2分钟。
同样的问题我用了libsvm实验速度上相差太大,libsvm实验5次,每次将近10分钟,时间是其次,发现一个问题就是,libsvm比liblinear的结果相差1个百分点,没有读liblinear的文章,不知道问题出在那个地方,libsvm我直接用的默认参数,线性模型。这样必然引起一个问题,如果我想评价线性模型和非线性模型的性能,我不可能一个用liblinear一个用libsvm,如果两个都用libsvm,报告的性能肯定有一些问题。
所以在这赞楼主一下,如果你的问题维度很大(线性模型就有非常好的性能),不妨考虑liblinear.