跳到内容

djurikom/预算支持向量机

文件夹和文件

姓名姓名
上次提交消息
上次提交日期

最近一次提交

 

历史

6承诺
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-----------------------------------------------------------------BudgetedSVM:大尺度SVM近似的工具箱-----------------------------------------------------------------BudgetedSVM是一款简单易用且高效的大型软件,通过SVM模型的近似进行非线性、预算分类。本文档解释了BudgetedSVM的使用。用于Matlab/Octave接口帮助请参阅“./matlab/readme.txt”在使用BudgetedSVM之前,请阅读“./LICENSE.txt”许可证文件。此外,工具箱还包括两个源文件(“./src/libsvmwrite.c”和“./src/libsvmread.c”)并使用LibSVM包中的一些代码,请在使用BudgetedSVM获取条款和条件之前,请阅读“./COPYRIGHT.txt”与工具箱的这些部分相关。目录=================-目录-版本历史记录-实现的算法-安装和数据格式-“budgetedsvm-train”用法-“budgetedsvm-predict”用法-示例-图书馆使用-Matlab/Octave接口-其他信息-致谢版本历史记录===============该软件的当前版本是v1.2。与之前的v1.1版本相比,我们添加了以下更改:-增加了Growing AMM(GAMM)算法的实现。-GAMM算法是AMM方法的扩展,由加法控制另外两个参数:克隆概率和克隆概率衰减。该软件的当前版本是v1.1。与以前的v1.0版本相比,我们添加了以下更改:-(过时)该软件不再以GPL v3许可证发布,而是我们在限制较少的LGPL v3许可证下发布BudgetedSVM。-该软件不再根据LGPL v3许可证发布,而是我们在限制较少的Modified BSD许可证下发布BudgetedSVM。-我们更改了选项字符串中某些参数的设置方式,请在使用早期脚本运行BudgetedSVM时要非常小心。参考到的“预算svm-train”用法和“预算svM-predict”用法部分此自述文件,或转至命令提示符帮助以获取更多详细信息。例如,内核宽度不再使用“-G”指定,而是使用“-G”等。-增加了“-r”选项,用于打开/关闭训练数据的随机化。-添加了许多用于基于内核的算法的内核函数,例如作为指数、sigmoid、多项式核。内核的参数使用“-g”、“-d”和“-i”选项控制。请参阅此自述文件的“'budgetedsvm-train'用法”部分,或命令提示帮助以获取更多详细信息。-不再需要指定数据的维度。然而,请注意可以通过“-D”选项直接指定维度加载速度更快。-在BSGD中,我们检查支持向量集中是否有两个相同的向量,以及或者在合并策略的情况下合并这两者,或者删除较新的一种是在随机删除策略的情况下,导致更好的性能。-修复了之前关闭随机化时LLSVM的随机化您仍然可以在运行之间获得不同的结果。-将课堂分数添加到输出中;请参阅的“budgetedsvm-predict”用法关于不同算法的输出分数的更多详细信息。-许多较小的代码更改有望产生更好、更可读的代码。-错误修复(感谢所有报告错误并提供反馈的用户!)。实现的算法==========================BudgetedSVM工具箱实现Pegasos、自适应多超平面机器(AMM)和增长AMM、低秩线性化SVM(LLSVM)和预算随机梯度下降(BSGD)算法。算法属性概述如下表所示:--------------------------------------------------------------------------------------------------------------|算法|分类器类型|多类?|可用内核|==============================================================================================================|Pegasos|线性|多类|线性||(G)AMM |非线性|多类|线性||LLSVM |非线性|二进制|任意||BSGD |非线性|多类|任意用于随机删除,合并支持向量时为高斯|--------------------------------------------------------------------------------------------------------------有关更多详细信息,请参阅他们各自发表的论文。特别地,出版物可在以下位置找到:***“Pegasos:SVM的原始估计亚梯度求解器”,ICML 2007(Pegasos,见http://link.springer.com/article/10.1007/s10107-010-0420-4)***“可扩展性的交易代表性:自适应多超平面机器非线性分类”,KDD 2011(AMM,见“./doc/pdfs_of_algorithm_papers/AMM_paper.pdf”)***“成长型自适应多超平面机器”,ICML 2020(GAMM,见“./doc/pdfs_of_algorithm_papers/GAMM_paper.pdf”)***“在有限资源上扩展核支持向量机:低库线性化方法”,AISTATS 2012(LLSVM,位于“./doc/pdfs_of_algorithm_papers/LLSVM_paper.pdf”)***“打破内核化的诅咒:预算随机梯度下降大型SVM培训”,JMLR 2012(BSGD,见“./doc/pdfs_of_algorithm_papers/BSGD_paper.pdf”)我们的BudgetedSVM论文(JMLR 2013)概述了工具箱并总结了其主要功能,请参阅PDF文件“./doc/pdfs_of_algorithm_papers/BudgetedSVM_paper.PDF”。安装和数据格式============================在Unix系统上,键入“make”以构建“budgetedsvm-train”和“budgetedsvm-prective”程序。键入“make clean”删除生成的文件。在没有用于描述如何使用它们的参数。我们注意到,作者已在以下平台上成功测试了工具箱:>>gcc-vgcc版本4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu5)数据格式-----------培训和测试数据文件的格式如下:<标签><索引1>:<值1><索引2>:<价值2>。。。...每行包含一个实例,并以“\n”字符结尾。对于classification,<label>是一个整数,表示类标签(支持多类)。请参阅“”/例如,a9a_train.txt。有关LIBSVM格式的更多详细信息,请参阅以下网页网址:http://www.csie.ntu.edu.tw/~cjlin/libsvm`budgetedsvm-train的使用=========================为了获得详细的使用说明,请运行budgetedsvm-train函数无需提供任何参数即可获得以下指令:用法:预算svm-train[选项]train_file[模型文件]输入:选项-模型参数train_file—LIBSVM格式的训练文件的urlmodel_file-保存学习模型的文件--------------------------------------------选项按以下格式指定:'-选项1值1-选项2值2…'以下选项可用:;受影响的算法和默认值括号中的值(如果选项影响全部,则不指定算法):A-算法,其中使用大规模SVM近似(2):0-佩加索斯1-AMM批次2-AMM在线3-LLSVM4-BSGDD-维度(如果设置,则加载速度更快,如果从数据中推断省略)B-AMM中每类重量的数量限制,或BSGD中的SV集合总预算,或LLSVM中的里程碑点数(50)L-lambda正则化参数;高值->不太复杂的模型(0.00010)b-偏差项,如果0没有添加偏差(1.0)e-培训期数(AMM、BSGD;5)s-子时段数(AMM批次;1)k-修剪频率,在修剪了多少个观察到的例子之后(AMM;10000)c——修剪阈值;高值->不太复杂的模型(AMM;10.00)K-核函数(0-RBF;1-指数,2-多项式;3-线性,4-乙状结肠;5-用户定义)(LLSVM,BSGD;0)g-RBF或指数核宽γ(LLSVM、BSGD;1/DIMENSIONALITY)d-多项式核度或sigmoid核斜率(LLSVM,BSGD;2.00)i-多项式或sigmoid核截距(LLSVM,BSGD;1.00)m-BSGD中的预算维护(0-删除;1-合并,使用高斯核),或LLSVM中的地标采样策略(0-随机;1-k-均值;2-k-中值)(1)C-AMM中发生错误分类时的克隆概率(0)AMM中发生错误分类时的y克隆概率衰减(0.99)z训练和测试文件以块的形式加载,以便算法可以在较弱的计算机上处理预算文件;z指定示例数加载到单个数据块中(50000)w模型权重被分为块,因此算法可以处理弱计算机上的高维数据;w指定数量存储在一个块中的维度(1000)S-如果设置为1,则假设数据稀疏,如果0数据假设不解析;用于加速内核计算(当百分比非零时,默认值为1特征小于5%,百分比大于5%时为0)r-将算法随机化;1表示随机化,0表示不随机化(1)v——详细输出;1表示算法步骤,0表示安静模式(0)--------------------------------------------模型保存在包含以下行的文本文件中:[算法、尺寸、类别数、标签、重量数、偏差项、核宽、模型]为了压缩内存并有效使用内存,我们按照以下方式对模型进行编码:对于AMM批处理、AMM在线、PEGASOS:存储模型,以便文本文件的每一行都对应一个重量。每个权重的第一个元素是权重的类别,然后是降级重量的百分比。该行的其余部分对应于权重的非零元素,如下所示feature_index:feature_值,采用标准LIBSVM格式。对于BSGD:存储模型,以便每行对应一个支持向量(或权重)。这个每个权重的第一个元素对应于每个类的alpha参数,按以下顺序给出Matlab结构的“标签”成员。然而,由于alpha可以等于0,我们使用LIBSVM格式为了将字母表存储为-classindex:class-specificalpha,我们在前面添加了“-”(减号)用于区分类索引和随后的特征索引的类索引。alphas,在同一行中给出了每个特征的权重元素(或支持向量)LIBSVM格式。对于LLSVM:存储模型,以便每行对应一个地标点。的第一个元素每一行对应于该特定地标点的线性SVM超平面元素。这是然后是LIBSVM格式数据集原始特征空间中的地标点特征。`budgetedsvm-predict'使用===========================为了获得详细的用法描述,请运行budgetedsvm-predict函数无需提供任何参数即可获得以下指令:用法:预算svm-predict[选项]测试文件模型文件输出文件输入:选项-模型参数test_file—LIBSVM格式的测试文件的urlmodel_file-保存学习模型的文件output_file—将写入输出的文件的url--------------------------------------------选项按以下格式指定:“-选项1值1-选项2值2…”以下选项可用(括号中的默认值):z-训练和测试文件分块加载,以便算法可以在较弱的计算机上处理预算文件;z指定示例数加载到单个数据块中(50000)w-模型权重被分为多个部分,因此算法可以处理弱计算机上的高维数据;w指定数量存储在一个块中的维度(1000)S-如果设置为1,则假定数据稀疏,如果0数据假定为非解析,则用于加速内核计算(当百分比非零时,默认值为1特征小于5%,百分比大于5%时为0)o-如果设置为1,输出文件将不仅包含类预测,而且获胜班级的分数以tab分隔(0)v-详细输出;1显示算法步骤,0表示安静模式(0)--------------------------------------------设置“-o”选项时,分数应解释如下。对于LLSVM分数表示测试样本与分离样本之间的距离超平面;对于AMM和BSGD,此分数表示优等成绩和得分第二好的班级的成绩。示例========下面是一个关于如何在提供的成人9a数据集上训练和测试分类器的简单示例,在budgetedsvm-train和budgetedsvm-predict函数编译完成后,运行make。请注意,训练和预测程序将在“./bin”文件夹中创建,即为什么我们需要在函数的调用中附加“bin/”。如果程序在Windows中运行,用户在指定路径时应使用“\”(反斜杠)而不是“/”(正向斜杠)到命令提示符中的程序。在下面的所有示例中,算法应返回准确性大约15%左右。如何训练和测试AMM或GAMM:---------------------------------->>垃圾箱/预算svm-train-A 1-e 5-L 0.001-B 20-D 123-v 1-k 10000-c 10 a9a_train.txt a9a_model.txt>>bin/budgetedsvm-predict-v 1 a9a_test.txt a9a_model.txt a9a _preds.txt文件第一个命令使用AMM批处理(“-A 1”)算法训练多超平面机器5个世纪(“-e 5”),使用0.001的正则化参数lambda(“-L 0.001”,较大的值导致不太复杂的模型,或者,换句话说,更规范化)并将每个类的最大权重数设置为20(“-B 20”)。由于adult9a数据集的维数为123,我们还编写“-D 123”,并选择详细输出(“-v 1”)它打印了算法的详细步骤。最后,我们指定将执行重量修剪每10000次迭代(“-k 10000”,较小的值会导致更积极的修剪),以及修剪参数设置为10(“-c10”,值越大,修剪越积极)。如果您没有指定模型文件的名称,它将被创建为后缀“.model”附加到培训文件(注意,我们在上面的示例中包含了模型文件名,即“a9amodel.txt”)。第二个命令在测试数据集上测试模型,并在测试集上打印精度将预测保存到“a9apreds.txt”。我们还通过写入“-v1”来设置详细输出。如果您想训练GAMM模型,可以通过附加参数“-C”来完成。例如,“-C 0.2”将克隆概率设置为0.2,而克隆概率衰减默认为0.99。如何训练和测试LLSVM:---------------------------->>箱子/预算svm-列车-A 3-L 0.1-K 0-g 0.01-B 100-m 1-D 123-v 1 a9a_train.txt a9a_model.txt>>bin/budgetedsvm-predict-v 1 a9a_test.txt a9a_model.txt a9a预测.txt第一个命令使用LLSVM(“-A 3”)算法来训练分类模型,设置正则化参数为0.1(“-L 0.1”,值越大,模型越不复杂,或,换句话说,更多的正则化),这导致比上述AMM案例。我们使用核宽度为0.01(“-g 0.01”)的高斯核(“-K 0”)。使用“-B 100”选项,我们设置预算,指定模型将包含100个地标通过对加载的训练数据(“-m 1”)运行k-means选择的点。成年9a数据集的维数为123,我们还写“-D123”,并选择详细输出(“-v1”)它打印了算法的详细步骤。如果未指定模型文件的名称,它将被创建为在训练文件的文件名后附加后缀“.model”(注意,我们在上面的示例中包含了模型文件名,即“a9a_model.txt”)。第二个命令根据测试数据集评估模型,并在测试集,同时将预测保存到“a9apredications.txt”。如何训练和测试BSGD:--------------------------->>箱子/预算svm-列车-A 4-g 0.01-e 5-L 0.0001-B 200-m 1-D 123-v 1 a9a_train.txt a9a_model.txt>>bin/budgetedsvm-predict-v 1 a9a_test.txt a9a_model.txt a9a预测.txt第一个命令使用BSGD(“-A4”)算法训练5个时期的分类模型(“-e 5”),使用学习率λ0.0001(“-L 0.0001”),较大的值导致模型不太复杂,或者,换句话说,更多的正则化)和0.01的高斯核的核宽度(“-g 0.01”)。使用“-B 200”选项,我们指定模型将包含200个支持向量,在预算溢出的情况下,将合并两个支持向量(“-m 1”)以保持预算。由于adult9a数据集的维数为123,我们也写“-D123”,并选择详细输出(“-v1”),打印算法的详细步骤。如果您没有指定名称对于模型文件,它将被创建为后缀“.model”被附加到培训文件(注意,我们在上面的示例中包含了模型文件名,即“a9amodel.txt”)。第二个命令根据测试数据集评估模型,并打印准确性同时将预测保存到“a9apredications.txt”。图书馆使用=============查看浏览器中的“./doc/BudgetedSVM_reference_manual.pdf”或打开“./doc/html/index.html”有关实现的详细信息。Matlab/Octave接口=======================有关详细信息,请查看“./matlab”目录中的README.txt文件。其他信息======================工具箱由Nemanja Djuric、Liang Lan和Slobodan Vucetic编写坦普尔大学计算机与信息科学系,以及来自IBM全球商业服务公司的王壮。BudgetedSVM网页位于http://www.dabi.temple.edu/budgetedsvm/.如果您认为我们的工作有用,请引用我们:Djuric,N.、Lan,L.、Vucetic,S.和Wang,Z.(2014)。BudgetedSVM:可扩展的工具箱SVM近似。机器学习研究杂志,14,3813-3817。如有任何问题或意见,请联系Nemanja Djuric<nemanja@temple.edu>.上次更新日期:2020年6月21日致谢===============这项工作得到了国家科学基金会IIS-0546155和IIS-1117433的资助。

关于

用于可缩放SVM近似的C++工具箱

资源

许可证

找到BSD-3-子句、BSD-3-语句许可证

找到的许可证

BSD-3条款
许可证.txt
BSD-3条款
版权.txt

星星

观察者

叉子

发布

未发布版本

包装

未发布包

语言文字