Libsvm常见问题及帮助.docx
《Libsvm常见问题及帮助.docx》由会员分享,可在线阅读,更多相关《Libsvm常见问题及帮助.docx(27页珍藏版)》请在冰豆网上搜索。
![Libsvm常见问题及帮助.docx](https://file1.bdocx.com/fileroot1/2023-1/31/30b849e3-da2a-46ea-81d4-59b5aa936449/30b849e3-da2a-46ea-81d4-59b5aa9364491.gif)
Libsvm常见问题及帮助
LIBSVM 常见问题
最后编辑时间:
周日,2011年3月13日十三时30分52秒GMT
OriginalText:
Q:
HowtohandlethenameconflictbetweensvmtraininthelibsvmmatlabinterfaceandthatinMATLABbioinformaticstoolbox?
显示其他翻译
所有的问题(74)
∙Q1:
_Some_sample_uses_of_libsvm
(2)
∙Q2:
_Installation_and_running_the_program(12)
∙3:
_Data_preparation(7)
∙Q4:
_Training_and_prediction(33)
∙Q5:
_Probability_outputs(3)
∙6:
_Graphic_interface(3)
∙7:
_Java_version_of_libsvm(4)
∙Q8:
_Python_interface
(1)
∙9:
_MATLAB_interface(9)
o有些课程已作为一种工具libsvm的
o使用libsvm的一些应用程序/工具
olibsvm的文件在哪里可以找到?
o更改日志和早期版本在哪里?
o如何举LIBSVM?
o我想用我的软件libsvm的。
没有任何许可证的问题吗?
o是否有一个额外的工具库libsvm的基础吗?
oUNIX机器上,我得到了“共享库加载错误”或“无法打开共享对象文件。
” 发生了什么事?
o我已经修改了源和想建立的图形界面“SVM玩具”MSWindows上。
我应该怎样做呢?
o我是一个MSWindows用户,但为什么只有这些预编译的。
exe(SVM玩具),实际运行?
o有什么区别“。
” 和“*”outputed在训练吗?
o为什么偶尔崩溃的程序(包括MATLAB或其他接口),并给出一个分割故障?
o如何建立一个动态库(。
dll文件)MSWindows上吗?
o在某些系统上(例如,Ubuntu的),编译LIBSVM提供了很多的警告信息。
这是一个问题,如何禁用警告消息?
o为什么有时不是所有的数据的属性出现在训练/模型文件?
o如果我的数据都是非数值?
o你为什么考虑稀疏的格式?
将培训密集的数据要慢得多?
o为什么有时我的数据的最后一行不读SVM的火车?
o有一个程序来检查,如果我的数据是正确的格式吗?
o我可以把数据文件的意见?
o如何转换其他数据格式LIBSVM格式?
o培训的C-SVM的输出类似于以下。
他们是什么意思?
o你能解释模型文件?
o我应该使用float或double存储在缓存中的数字?
o我该如何选择内核呢?
olibsvm的线性SVM的特殊待遇吗?
o免费支持向量的数量很大。
我应该怎么办?
o我应该以类似的方式扩展训练和测试数据?
o它使一个很大的区别,如果我每个属性的缩放,而不是[1,1][0,1]?
o预测率是低的。
我怎么能提高呢?
o我的数据是不平衡的。
可以libsvm的处理这样的问题呢?
oNU-SVC和C-SVC的之间的区别是什么?
o程序继续运行(不显示任何输出)。
我应该怎么办?
o程序继续运行(与输出,即多点)。
我应该怎么办?
o训练时间太长。
我应该怎么办?
o始终没有萎缩帮助吗?
o我要如何决定值(S)?
o我如何获得一个点的超平面之间的距离?
o32位的机器上,如果我在Linux机器上使用一个大的缓存(即大米),这就是为什么有时我得到“分割故障?
”
o我如何禁用屏幕输出SVM的火车吗?
o我想用我自己的内核。
任何例子?
svm.cpp,有两个子程序为核心的评价:
k_function()和kernel_function()。
我应该修改哪一个?
o没有什么方法libsvm的使用多类SVM的吗?
你为什么不使用“1对其余”的方法吗?
o做交叉验证后,为何有没有模型文件输出?
o为什么我的交叉验证的结果是从实用指南“中的那些不同呢?
o在某些系统上的简历准确性是一样的,在多次运行。
我怎么能使用不同的数据分区?
换句话说,我该如何设置LIBSVM中的随机种子吗?
o我想解决L2丢失的SVM(即误差项是二次)。
我应该如何修改代码?
o如何选择一类SVM的参数训练数据中只有一类?
o为什么代码给出NaN(不是一个数字)结果呢?
o为什么在Windowsgrid.py有时失败?
o为什么,grid.py/easy.py有时会产生以下警告消息?
o为什么预测的标签和决策值的符号,有时逆转?
o我不知道测试数据的类标签。
我应该在测试文件中的第一列是什么?
o我怎样才能使用OpenMP并行多核/共享内存的计算机上LIBSVM?
o我怎么能知道哪些培训实例支持向量?
o为什么培训的一种概率模型(即,B1)需要更长的时间呢?
o为什么使用-b选项,不给我更好的准确性?
o为什么使用SVM的预测-B0-B1给出了不同的精度值吗?
o我怎样才能挽救绘制SVM玩具的图像?
o我按下“Load”按钮加载数据点,但SVM玩具为什么不能吸引他们呢?
o我想SVM的玩具来处理以上三类数据,我应该怎么办?
oJava版本和C++的libsvm的版本之间的区别是什么?
o是Java版本明显比C++版本慢?
o虽然训练中,我得到以下错误消息:
java.lang.OutOfMemoryError。
什么是错的?
o为什么你有主源文件svm.m4,然后把它转换到svm.java?
o除了Python的C++接口提供的,我能使用Jython调用libsvm的呢?
o我编译MATLAB的接口没有问题,但为何发生错误,同时运行?
o我对64位Windows编译MATLAB的接口没有问题,但为何发生错误,同时运行?
oMATLAB的接口没有提供一个函数来做到缩放?
o我怎么能使用MATLAB的接口参数选择呢?
o我使用MATLAB并行编程工具箱上的参数选择的多核心环境。
为什么程序更慢?
o我如何使用在MATLAB环境下使用OpenMPLIBSVM?
o我怎么能产生线性SVM的原始变量w?
o有libsvm的OCTAVE的接口吗?
o如何处理之间的的svmtrain名称冲突libsvm的MATLAB接口,在MATLAB生物信息学工具箱?
问:
有些课程已作为一种工具libsvm的
∙计算机科学,应用科学学院,德国弗赖堡大学,研究所
∙数学与计算机科学的分工。
faculteitDERExacteWetenschappenVrije大学,荷兰。
∙威斯康星大学麦迪逊分校电气工程和计算机系,
∙Technion工业(以色列理工学院),以色列。
∙美国佛罗里达大学计算机与信息科学系,
∙计算机科学研究所,大学,肯尼亚内罗毕。
∙应用数学与计算机科学,冰岛大学。
∙支持向量机在机器学习暑期学校的教程,芝加哥大学,2005。
[返回顶部]
问:
有些应用程序/使用libsvm的工具
(也许liblinear)。
∙LIBPMK:
金字塔比赛工具包
∙maltparser:
数据驱动的依赖解析系统
∙分类neuroimagesPyMVPA:
蟒蛇工具
∙SOLpro:
蛋白质溶解度预测
∙BDVal:
生物标志物的发现在高吞吐量的数据集。
∙实时识别物体
∙scikits.learn:
在Python的学习机
[返回顶部]
问:
我在哪里可以找到libsvm的文件?
∙正式实施文件:
C.-C. 张和C.-J. 林 LIBSVM:
支持向量机库。
∙使用SVM的流程大概的说明是在一些目录中的README文件
在主目录中的自述:
“所有细节选项,数据格式和库调用
工具/自述:
参数选择和其他工具
∙对于初学者指南:
C.-W. 许C.-C. 张和C.-J. 林。
支持向量机分类的实用指南
[返回顶部]
问:
在哪里更改日志和早期版本?
查看更改日志。
在这里你可以下载早期版本 。
[返回顶部]
问:
如何举LIBSVM?
请举出下列文件:
张稚涌和林之仁,LIBSVM:
支持向量机库,2001年。
在http:
//www.csie.ntu.edu.tw/〜cjlin/libsvm的软件可用
2011-12-01格式
@手册{CC01a
撰文={张致中和林致仁},
标题={{LIBSVM}:
为支持向量机库}
年={2001年}
注={\URL提供的软件{http:
//www.csie.ntu.edu.tw/〜cjlin/libsvm的}}
}
[返回顶部]
问:
我想用我的软件libsvm的。
没有任何许可证的问题吗?
libsvm的许可证(“修改的BSD许可证”),是很多,如GPL的自由软件许可证兼容。
因此,它很容易在您的软件使用libsvm的。
请详细的版权文件。
基本上你需要
1.清楚地表明,使用SVM的流程大概。
2.保留在软件的LIBSVM版权文件。
它也可以在商业产品中使用。
[返回顶部]
问:
是否有一个额外的工具libsvm的基础库?
是的,看到libsvm的工具
[返回顶部]
问:
在UNIX机器上,我得到了“共享库加载错误”或“无法打开共享对象文件。
” 发生了什么事?
这通常发生,如果你在一台机器上编译代码并运行另一个有不兼容的库。
尝试重新编译该机器上的程序或使用静态链接。
[返回顶部]
问:
我已经修改了源代码,并想建立的图形界面“SVM玩具”在MSWindows。
我应该怎样做呢?
通过选择“Win32项目建设作为一个项目。
” 另一方面,“SVM一条龙”和“SVM的预测:
”你要选择“Win32控制台项目。
” libsvm的2.5后,您还可以使用文件Makefile.win。
在自述的细节。
如果你不使用Makefile.win,看看下面的链接错误
LIBCMTD.lib(wwincrt0.obj)的:
错误LNK2001:
无法解析的外部符号
_wWinMain@16
你可能已经选择了一个错误的项目类型。
[返回顶部]
问:
我是一个MSWindows用户,但为什么只有那些预编译EXE(SVM玩具),实际运行。
?
你需要打开一个命令窗口,然后键入svmtrain.exe看到所有选项。
一些例子是在README文件。
[返回顶部]
问:
什么是区别“。
” 和“*”outputed在训练吗?
“。
” 意味着每1000个迭代(或每迭代#数据是你的#数据小于1000)。
“*”是指使用一个较小的缩水问题的迭代后,我们重置为使用全套。
看到 执行文件详情。
[返回顶部]
问:
为什么偶尔崩溃的程序(包括MATLAB或其他接口),并给出一个分割故障?
该计划很可能会消耗太多的内存比什么操作系统可以提供。
尝试使用较小的数据,如果程序仍然崩溃。
[返回顶部]
问:
如何建立一个动态库(dll文件。
)在MSWindows?
最简单的方法是使用Makefile.win。
在自述的细节。
另外,您可以使用VisualC++ 下面是示例使用VisualStudio.NET2008。
1.创建一个Win32的空的DLL项目和集(项目>$PROJECT_NAME属性->配置)“。
释放” 关于如何创建一个新的动态链接库,请参阅
2.将svm.cpp,svm.h添加到您的项目。
3.添加_WIN32__“和_CRT_SECURE_NO_DEPRECATE处理器定义(项目>$PROJECT_NAME属性...->的C/C++->预处理器)
4.设置不使用预编译头(项目->$PROJECT_NAME属性...->的C/C++->预编译头)创建/使用预编译头
5.设置调制定义文件svm.def的路径(在项目->$PROJECT_NAME属性->链接器->输入
6.建立DLL。
7.重命名的dll文件到libsvm.dll和移动到正确的路径。
[返回顶部]
问:
在某些系统(如Ubuntu的),编译LIBSVM使许多警告消息。
这是一个问题,如何禁用警告消息?
警告消息是什么样
svm.cpp:
2730:
警告:
忽略返回值的intfscanf(文件*,常量字符*,...),与属性warn_unused_result声明
但是,这不是一个问题。
在未来,我们可以修改代码,使这些信息不会出现。
在这一刻,禁用警告消息,您可以替换
CFLAGS=墙Wconversion-O3-fPIC的
同
CFLAGS=墙Wconversion-O3-fPIC的,U_FORTIFY_SOURCE
在Makefile。
[返回顶部]
问:
为什么有时不是所有的数据的属性出现在训练/模型文件?
libsvm的使用所谓的“疏”的格式,其中零值并不需要存储。
因此,一个数据与属性
1020
表示为
1:
13:
2
[返回顶部]
问:
如果我的数据都是非数值?
目前libsvm的只支持数值数据。
您可能必须改变非数值数据数值。
例如,您可以使用多种的二进制属性代表一个明确的属性。
[返回顶部]
问:
为什么你认为稀疏的格式?
将培训密集的数据要慢得多?
这是一个有争议的问题。
稀疏向量(即内积)内核的评价是速度较慢,所以总的训练时间可以至少两次或3次,用密集的格式。
但是,我们不能支持只有密集的格式,那么我们就不能处理极为稀少的情况下。
简单的代码是另一个值得关注。
现在,我们决定只支持稀疏的格式。
[返回顶部]
问:
为什么有时我的数据的最后一行不读通过SVM火车?
我们假设你的'\n'在每行结束。
所以,请按输入你的最后一行结束。
[返回顶部]
问:
是否有一个程序来检查,如果我的数据在正确的格式吗?
在libsvm的的SVM火车方案进行输入数据只是一个简单的检查。
libsvm的2.85后,做了详细的检查,你可以使用Python的脚本工具/checkdata.py的。
有关详细信息,请参阅工具/自述。
[返回顶部]
问:
我可以把数据文件的评论?
我们不正式支持。
但,cureentlyLIBSVM是能够处理以下格式的数据:
11:
22:
1#您的意见
需要注意的是字符“:
”不应该出现在您的意见。
[返回顶部]
问:
如何转换其他数据格式LIBSVM格式?
这取决于你的数据格式。
我们有一个简单的C代码,空格/冒号分隔的格式传送到libsvm的格式。
如果需要的话,请联系我们。
另外,一个简单的方法是使用libsvm的MATLAB/八度接口libsvmwrite。
采取一个CSV(冒号分隔的格式)文件为例,在UCI机器学习库。
下载SPECTF.train。
标签是在第一列。
下面的步骤产生的libsvm的格式的文件。
MATLAB>SPECTF=csvread(“SPECTF.train);%读取csv文件
MATLAB>标签:
=SPECTF
(1);%,从第一列标签
MATLAB>特性=SPECTF(2底);
MATLAB因素>features_sparse=稀疏(功能);%功能必须是在一个稀疏矩阵
MATLAB>libsvmwrite(SPECTFlibsvm.train,标签,features_sparse的);
tranformed数据存储在SPECTFlibsvm.train。
[返回顶部]
问:
培训输出的C-SVM是像以下。
他们是什么意思?
优化完成,#ITER=219
NU=0.431030
OBJ=-100.877286,ρ=0.424632
NSV=132,nBSV=107
共有NSV=132
obj是双SVM问题的最优目标函数值。
Rho是在决策函数SGN(W^TX-RHO)的偏见的任期。
NSV和nBSV是支持向量的和有界支持向量数目(即,alpha_i=C)NU-SVM的C-SVM是有点等价形式,其中C是由NU取代。
怒江只显示相应的参数。
更多细节 libsvm的文件。
[返回顶部]
问:
你能否解释模型文件?
参数后,每一行代表一个支持向量。
支持向量列在前面列出的“标签”的顺序。
(即,在“标签”列表中的第一类的分组第一,依此类推。
)如果k是班级总数在J类支持向量前,有K-1系数Y*阿尔法阿尔法是以下两个类问题的解决方案:
双
J,1比2比j,...,J-1和j,J和J+1,j与j+2...,J与k
在第j-1系数和y=1,Y=在余下的KJ系数为-1。
例如,如果有4类,文件看起来像:
-+-+-+--------------------+
|1|1|1||
|V|V|V||1类支持向量
|2|3|4||
-+-+-+--------------------+
|1|2|2||
|V|V|V|支持向量2级|
|2|3|4||
-+-+-+--------------------+
|1|2|3||
|V|V|V||3类支持向量
|3|3|4||
-+-+-+--------------------+
|1|2|3||
|V|V|V|支持向量由4级|
|4|4|4||
-+-+-+--------------------+
还看到 一个例证,利用MATLAB/倍频程。
[返回顶部]
问:
我应该使用float或double存储在缓存中的数字?
我们已经漂浮作为默认存储在缓存中,你可以更多的数字。
一般这是不够好,但一些困难的情况下(例如C非常大)的解决方案是大量的地方,它可能是可能的数值精度是不够的使用仅浮法。
[返回顶部]
问:
如何选择内核呢?
一般情况下,我们建议您先尝试RBF核。
Keerthi和林(由最近的成果 在这里下载文件)显示,如果径向基函数模型选择与使用,那么就没有必要考虑线性内核。
使用乙状结肠内核矩阵未必是正定的,它的精度是一般不超过RBF神经更好。
(林和林(看到 这里的文件下载文件)。
多项式内核是确定的,但如果使用高度,数值困难,往往发生(思想关于DTH功率(<1)0
(1)变为到无穷大)。
[返回顶部]
问:
请问libsvm的线性SVM的特殊待遇吗?
没有,libsvm的线性/非线性SVMs的以同样的方式来解决。
一些技巧可以节省培训/测试时间,如果使用线性核,libsvm的是不是特别线性SVM高效,尤其是当C是大的数据的数量远远比属性的数量较大。
您可以
∙只使用小C。
我们已经表明在以下文件后,C是大于某一阈值,决定功能是相同的。
ss全部Keerthi 和 C.-J.的 林。
高斯核支持向量机的渐近行为 。
神经计算,15(2003),1667年至1689年。
∙检查liblinear,这是大型线性分类设计。
另请参阅我们的SVM指南 使用RBF和线性内核的讨论。
[返回顶部]
问:
免费支持向量的数量非常大。
我应该怎么办?
这通常发生数据时overfitted。
如果您的数据的属性是在大范围内,尽量扩大它们。
然后在适当的参数区域可能会更大。
需要注意的是在libsvm的规模方案。
[返回顶部]
问:
我应该扩大训练和测试数据,以类似的方式?
是的,你可以做到以下几点:
SVM大规模-Sscaling_parameterstrain_data>scaled_train_data
>SVM大规模-Rscaling_parameterstest_data>scaled_test_data
[返回顶部]
问:
如果我每个属性的缩放,而不是[1,1][0,1],是否有很大的差别?
线性缩放方法,如果使用RBF核进行参数选择,没有什么区别。
假设宓公里,分别是第i个属性的最大和最小的值。
缩放到[0,1]的方法
x'=(X-MI)/(MI-MI)
为[-1,1],
X''=2(X-MI)/(米英里)-1。
在RBF核,
x'-Y'=(XY)/(米-MI),X''Y''=2(XY)/(MI-MI)。
因此,使用(C,G)[0,1]规模的数据是一样(C,G/2)在[-1,1],规模数据。
虽然性能是相同的,计算时间可能有所不同。
对于许多零项的数据,[0,1]缩放保持输入数据的稀疏性,因此可以节省时间。
[返回顶部]
问:
预测率是低的。
我怎么能提高呢?
尝试使用模型选择工具grid.py在Python目录,找到了良好的参数。
看到模式选择的重要性,请参阅我的谈话:
支持向量机分类的实用指南
[返回顶部]
问:
我的数据是不平衡的。
可以libsvm的处理这样的问题呢?
是的,有一个无线网络选项。
例如,如果您使用
>SVM一条龙-0-C10-W1-W-115data_file
类“-1”的刑罚是较大的。
请注意,-W选项只用于C-SVC。
[返回顶部]
问:
NU-SVC和C-SVC的之间的区别是什么?
他们基本上是一回事,但用不同的参数。
C的范围是从零到无穷大,但女始终是[0,1]之间。
怒江的一个很好的属性,它关系到支持向量率和训练误差比。
[返回顶部]
问:
该程序保持运行(不显示任何输出)。
我应该怎么办?
您可能要检查你的数据。
每次训练/测试数据必须在同一行。
不能分开的。
此外,你必须删除空行。
[返回顶部]
问:
该程序保持运行(与输出,即多点)。
我应该怎么办?
在理论上libsvm的保证收敛。
因此,这意味着你正在处理病态的情况下(如过大/小参数),所以数值发生困难。
[返回顶部]
问:
培训的时间太长。
我应该怎么办?
对于大的问题,请指定足够的高速缓存大小(即米)。
收敛速度慢,可能会出现一些困难的情况下(如-C大)。
您可以尝试使用-E停止容忍宽松。
如果仍然不起作用,你可以训练,只是数据的一个子集。
您可以使用目录中的“工具”的的方案subset.py获得一个随机子集。
如果你有非常大的数据,面对这一困难,请与我们联系。
我们将很乐意来讨论可能的解决方案。
当使用-E大,你可能要检查,如果H0(无收缩)或-h1(收缩)是更快。
看到下面相关的问题。
[返回顶部]
问:
是否萎缩总是帮助吗?
如果迭代次数是高的,然后缩小经常帮助。
但是,如果迭代次数是小(例如,你指定一个较大的-E),那么很可能使用-H0(无收缩)是更好的。
看到 执行文件详情。
[返回顶部]
问:
我如何决定值(S)?
我们打印出决定回归值。
分类,我们解决几个二进制SVMs的多类案件。
您可以通过轻松地调用子程序svm_predict_values,价值观。
可以从svm_get_labels获得其相应的标签。
详情libsvm的README文件包。
我们不建议以下。
但是,如果你想获得价值为2级分类标签+1和-1(注:
如5日和10+1和-1,但不事)最简单的方法,只