load svmlight file用的是什么优化算法

SVM本身是一个二值分类器
  SVM算法最初是为二值分类问题设计的,当处理多类问题时,就需要构造合适的多类分类器。
  目前,构造SVM多类分类器的方法主要有两类
  (1)直接法,直接在目标函数上进行修改,将多个分类面的参数求解合并到一个最优化问题中,通过求解该最优化问题&一次性&实现多类分类。这种方法看似简单,但其计算复杂度比较高,实现起来比较困难,只适合用于小型问题中;
  (2)间接法,主要是通过组合多个二分类器来实现多分类器的构造,常见的方法有one-against-one和one-against-all两种。
一对多法(one-versus-rest,简称OVR SVMs)
  训练时依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样k个类别的样本就构造出了k个SVM。分类时将未知样本分类为具有最大分类函数值的那类。
  假如我有四类要划分(也就是4个Label),他们是A、B、C、D。
  于是我在抽取训练集的时候,分别抽取
  (1)A所对应的向量作为正集,B,C,D所对应的向量作为负集;
  (2)B所对应的向量作为正集,A,C,D所对应的向量作为负集;
  (3)C所对应的向量作为正集,A,B,D所对应的向量作为负集;
  (4)D所对应的向量作为正集,A,B,C所对应的向量作为负集;
  使用这四个训练集分别进行训练,然后的得到四个训练结果文件。
  在测试的时候,把对应的测试向量分别利用这四个训练结果文件进行测试。
  最后每个测试都有一个结果f1(x),f2(x),f3(x),f4(x)。
  于是最终的结果便是这四个值中最大的一个作为分类结果。
  这种方法有种缺陷,因为训练集是1:M,这种情况下存在biased.因而不是很实用。可以在抽取数据集的时候,从完整的负集中再抽取三分之一作为训练负集。
一对一法(one-versus-one,简称OVO SVMs或者pairwise)
  其做法是在任意两类样本之间设计一个SVM,因此k个类别的样本就需要设计k(k-1)/2个SVM。
  当对一个未知样本进行分类时,最后得票最多的类别即为该未知样本的类别。
  Libsvm中的多类分类就是根据这个方法实现的。
  假设有四类A,B,C,D四类。在训练的时候我选择A,B; A,C; A,D; B,C; B,D;C,D所对应的向量作为训练集,然后得到六个训练结果,在测试的时候,把对应的向量分别对六个结果进行测试,然后采取投票形式,最后得到一组结果。
  投票是这样的:  A=B=C=D=0;  (A,B)-classifier 如果是A win,则A=A+1;otherwise,B=B+1;  (A,C)-classifier 如果是A win,则A=A+1;otherwise, C=C+1;  ...  (C,D)-classifier 如果是A win,则C=C+1;otherwise,D=D+1;  The decision is the Max(A,B,C,D)
评价:这种方法虽然好,但是当类别很多的时候,model的个数是n*(n-1)/2,代价还是相当大的。
层次支持向量机
层次分类法首先将所有类别分成两个子类,再将子类进一步划分成两个次级子类,如此循环,直到得到一个单独的类别为止。对层次支持向量机的详细说明可以参考论文《支持向量机在多类分类问题中的推广》(刘志刚,计算机工程与应用,2004)
阅读(...) 评论()你若盛开,清风自来。
svmlight使用说明
svm_light下载地址
svm-light集成进自己的工程大致有3种方式:
1.工程内部system调用两个exe;
2.封装源码嵌入工程。
3、单独把文件拉出来:svmlight的learn需要的文件:
svmlight的classify需要的文件:
在VS中如何测试learn?
首先在官网下载test.dat和model.dat两个文件,
properties--&configuration properties--&DEBUGGING--&COMMAND ARGUMENTS输入[options] example_file model_file
-t 2 test.dat model.dat
其他参数修改类似,可以通过修改options来使训练达到更优
预测:在classify的debugging中输入[options] example_file model_file output_file
【options】test.dat svm_model test.txt
================================================================================================================================
下面对svmlight的主要参数进行介绍
options in train:
Available options are:
General options:
- this help(查看帮助,不输入测试数据文件的情况下将输出这个帮助文件)
- verbosity level (default 1)(主要是调整输入输出参数)
我的理解如下:v=0,不显示任何信息, 不收集信息
v=1,输出诊断信息,保存迭代信息
v=2,只输出诊断信息(具体见下图)
具体如下: Learning options:
-z {c,r,p}
- select between classification (c), regression (r), and preference ranking (p) (see [])
(default classification)
(用来选择分类、回归、复原,分类器中一般只需要用到分类,刚好默认也是分类,个人认为这个参数一般不需要调整)
- C: trade-off between training error and margin (default [avg. x*x]^-1)
(惩罚因子,参考)
它是一个变化范围较大的值,需通过交叉验证来确定,一般情况下,C越大,类似于经验风险系数最小化原则,则C的取值最好
和|w|是一个数量级,默认可选10(来自网友)
- epsilon width of tube for regression
(default 0.1)
w用来改epsilon的值得,是回归参数中的不敏感系数,一般情况下分类用不上
- Cost: cost-factor, by which training errors on
positive examples outweight errors on negative
examples (default 1)(see [])
松弛变量,详见
在libsvm中,这个值是取正负样本的比例~
- use biased hyperplane (i.e. x*w+b0) instead of unbiased hyperplane (i.e. x*w0) (default 1)
假如有一个线性函数,g(x)=wx+b0,当选取b=0时,不使用b0这个参数,g(x)=wx,当b=1时,b0这个参数要
考虑进去,即g(x)=wx+b0
- remove inconsistent training examples and retrain (default 0)
(这个参数可以用来重新训练,当 i = 1时可以把不一致的样本去除,重新训练数据)
Performance estimation options(性能评估选项):
- compute leave-one-out estimates (default 0)(see [5])
- value of rho for XiAlpha-estimator and for pruning leave-one-out computation (default 1.0)
-k [0..100] - search depth for extended XiAlpha-estimator(default 0)Transduction options
(see [], []):
- fraction of unlabeled examples to be classified into the positive class (default is the ratio of
positive and negative examples in the training data)Kernel options:(核函数选项,这是重点要调的参数)
- type of kernel function:
0: linear (default)
1: polynomial (s a*b+c)^d
2: radial basis function exp(-gamma ||a-b||^2) (RBF是比较常用的)
3: sigmoid tanh(s a*b + c)
4: user defined kernel from kernel.h
- parameter d in polynomial kernel
d默认可选3
- parameter gamma in rbf kernel
默认可选1/k
- parameter s in sigmoid/poly kernel
- parameter c in sigmoid/poly kernel
- parameter of user defined kernel(用户可以利用这个参数定义自己的kernel) Optimization options (优化选项 )
(see [], []):
- maximum size of QP-subproblems (default 10)
从最一般的定义上说,一个求最小值的问题就是一个优化问题(也叫寻优问题,更文绉绉的叫法是规划——Programming),
它由两部分组成,目标函数和约束条件,可以用下面的式子表示: (不确定说的是不是这个约束条件的优化?)
更详细内容,请见
- number of new variables entering the working set in each iteration (default n = q).
Set n&q to prevent zig-zagging.
见上面q解释
- size of cache for kernel evaluations in MB (default 40)The larger the faster...
设置cache内存大小,以MB为单位(默认40)libsvm也是默认40
- eps: Allow that error for termination criterion
[y [w*x+b] - 1] = eps (default 0.001)
设置允许的终止判据(默认0.001)
- number of iterations a variable needs to be optimal before considered for shrinking (default 100)
在考虑启发式之前,一个变量优化需要设置的迭代次数
- do final optimality check for variables removed by shrinking. Although this test is usually positive,there
is no guarantee that the optimum was found if the test is omitted. (default 1)
-& if option is given, reads alphas from file with given and uses them as starting point. (default 'disabled')
从文件中读取alphas的值
-& terminate optimization, if no progress after this number of iterations. (default 100000)
设置在这些次数迭代完后停止优化,如默认100000次迭代完后停止优化Output options:
- file to write predicted labels of unlabeled examples into after transductive learning
把未训练的样本预测后写入文件
- write all alphas to this file after learning (in the same order as in the training set)
训练后把所有alphas的值写入文件中(按训练数据集的顺序写入)
Available options are:
Help. (帮助文件)
Verbosity level (default 2).(参看learn的v)
0: old output format of V1.0
输出结果如下所示:
1: output the value of decision function (default)
输出结果如下所示:用测试文件测试出来的输出结果是一样的~
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长![转载]比较libsvm和svm-light
SVM-light2.0是98年出来的,
挺土的,因为那时候还刚开始探索decomposition algorithm.它的算法详见
Joachims, T. (1998). Making large-scale SVM learning practical. In
opf, C. J. C. Burges, and A. J. Smola (Eds.), Advances in Kernel
Methods - S
upport Vector Learning, Cambridge, MA. MIT Press.
&&&同年出现的还有Platt的SMO算法.
SVM-light还没有用上SMO的二维二次规划问题的
解析解法(虽然它也用的两个样本的working set). 但是可能由于它的其他得力机制,如
shrinking和Kernel Cache,在比较中才比SMO快的.(SVMlight用了80M内存,SMO没有用,光
这一点就不平等,我怀疑Joachims的算法实际上没有SMO快的.)
&&&LibSVM2.3是2001年才出来的,其算法详见
Chang, C.-C. and C.-J. Lin (2001c). LIBSVM: a Library for Support
Vector Mac
hines (Version 2.3).
&&&它综合了SVM-light和SMO的算法,而且还是被Keerthy改正过的SMO,
在很多地方比J
oachims的算法考虑得精细得多(比如shrinking机制,确实想得够妙了), 当然Joachims提
出了这些机制的思想,虽然实现得比较粗糙,但对于后来算法的发展有重要意义.
&&&我觉得LibSVM不太可能比SVMlight慢吧,不过我只是这么一想,没做过试验.
是它们的什么版本? LibSVM出来2.4了,不过核心算法还是2.32的没变. SVMlight我不知
道后来又出新版本没有. 要试验比较的话, 注意让它们在同等条件下比较,包括解同样的
问题(这个其实不用说了,数据集,样本数,C值,核函数参数都要一样), 同样的Kernel Ca
che大小(也就是内存使用),同样的终止条件(这里注意LibSVM默认用的双边KKT违反tole
rance=0.001的终止条件,而SVMlight用的单边tolerance,默认大概也是0.001,也就是比
LibSVM松了一倍.) 后面二者对速度影响会很大的. 另外还有它们用的浮点数类型是否一
样, LibSVM默认用float而不是double型存放核函数矩阵的元素, 等于可用内存大了一倍
, 但结果的有效位数会下降.
&&&至于分类效果好坏,
应该跟用哪种解二次规划的算法没什么关系吧. 只要它们用一
样的终止条件卡着, 结果应该都是精确的. 但是支持向量个数及alpha值,b值都会差一点
,这个不奇怪,就是吧样本顺序重排一遍再算结果也会有少许区别的. 如果试验中两个算
法用的一样的终止条件, 分类效果总是一个明显比另一个好,那就实在太奇怪了, 只能说
明我的理解不对了.
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。您当前位置: >
> svmlight使用心得
svmlight使用心得
来源:程序员人生&& 发布时间: 08:38:40 阅读次数:8400次
最近用其svmlight进行movie review文本分类的问题。查阅了1些svmlight软件的使用方法,在此整理以下:
1)下载svm_light软件,分别为svm_classify.exe和svm_learn.exe
2)下载它的训练数据的example,以下面的图所示:
test.dat与train.dat格式相似
3)下面了解1些训练数据的格式
文件格式
文件格式要先交代1下. 你可以参考 libsvm 里面附的 “heart_scale”: 这是SVM&的输入文件格式.
[label]&[index1]:[value1] [index2]:[value2] …
[label]&[index1]:[value1] [index2]:[value2] …
1行1条记录数据,如:
+1 1:0.708 2:1 3:1 4:-0.320 5:-0.105 6:⑴
或说是class, 就是你要分类的种类,通常是1些整数。
是有顺序的索引,通常是连续的整数。
就是用来 train 的数据,通常是1堆实数。
每行都是如上的结构, 意思就是: 我有1排数据, 分别是 value1, value2, …. value, (而且它们的顺序已由 index 分别指定),这排数据的分类结果就是label。
也许你会不太懂,为何会是 value1,value2,…. 这样1排呢? 这牵涉到&SVM&的原理。你可以这样想(我没说这是正确的), 它的名字就叫 Support “Vector” Machine,所以输入的训练数据是 “Vector”(向量),
也就是1排的 x1, x2, x3, … 这些值就是 value,而 x[n] 的n就是由index 指定。这些东西又称为 “(属性)attribute”。
真实的情况是,大部分时候我们给定的数据可能有很多 “特点(feature)” 或说 “属性(attribute)”,所以输入会是1组的。举例来讲,之前面点分区的例子&来讲,我们不是每一个点都有
X 跟 Y 的坐标吗?所以它就有两种属性。假定我有两个点: (0,3) 跟 (5,8) 分别在 label(class) 1 跟 2 ,那就会写成
同理,空间中的3维坐标就等于有3组属性。这类文件格式最大的好处就是可使用稀疏矩阵(sparse matrix),或说有些数据的属性可以有缺失。
以上粉色内容摘自http://blog.sina.com.cn/s/blog_53c2bcbb01008zi5.html
4)Dos进入训练、测试数据所在的文件夹,进行测试
&svm_learn -c 0.5 -g 3.2 train.dat model&
&svm_classify test.txt model predict_result.txt&
其中有1些参数,我以后用到时会再发博客讲授。
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
------分隔线----------------------------
------分隔线----------------------------
积分:4237SVMLight_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
&&svm machine learning svr svc
阅读已结束,下载本文到电脑
登录百度文库,专享文档复制特权,积分每天免费拿!
你可能喜欢

我要回帖

更多关于 svmlight 格式 的文章

 

随机推荐