高空导航

我的支持向量机

mySVM——一种支持向量机

通过斯特凡·吕平,rueping@ls8.cs.uni-dortmund.de

新闻

关于mySVM

mySVM是由V.Vapnik(见[Vapnik/98a]). 它基于的优化算法支持向量机如中所述[Joachims/99a].mySVM可以用于模式识别、回归和分布估计。

许可证

此软件仅免费用于非商业用途。一定不是未经作者事先许可修改和分发。这个作者不对使用本文档的含义负责软件。

如果您将mySVM用于研究目的,请在您的出版物中引用该引用中的软件手册(Stefan Rüping(2000):mySVM手册多特蒙德大学Lehrstuhl Informatik 8,http://www-ai.cs.uni-dortmund.de/SOFTWARE/MYSVM/).

安装

在Unix下安装

  • 下载我的支持向量机.
  • 创建一个新目录,更改到该目录并将文件解压缩到该目录
  • 在典型的UN*X系统上,只需键入制作编译mySVM。在其他系统上,您必须手动调用C++编译器。
如果一切正常,您应该有一个名为箱子和到文件我的虚拟机预测在其子目录中。在某些系统上,您可能会收到有关以下内容的错误消息系统/时间。小时。如果是,请打开文件全球。小时并取消注释该行#取消定义使用时间(_T).

在Windows下安装

如果你得到源代码版本,您必须自己编译mySVM。首先编辑文件全球。小时并取消注释该行#定义窗口1.编译文件学习.cpp获取学习计划和预测cpp用于模型应用程序。mySVM在Visual C++6.0下进行测试。您还可以获得二进制版本.

使用mySVM

有关mySVM的完整参考,请参阅mySVM手册(后记,PDF格式). 以下是简短的用户指南:
  • 我的虚拟机用于在给定示例集上训练SVM并测试结果
  • 预测用于基于已训练的SVM预测新示例的函数值。
mySVM的输入包括以“#”开头的输入行被视为注释。可以在一个或多个文件中提供输入。如果没有给定文件名或文件名“-”,则从stdin读取输入。我的虚拟机在第一个给定的示例集上训练SVM。以下示例集用于测试(如果给出了它们的分类)或计算示例的功能值(如果没有给出分类)。

参数定义

参数定义允许用户选择损失函数的类型、优化器参数和要使用的训练算法。参数定义以行开头@参数.

全局参数:

图案使用SVM进行模式识别时,y必须在{-1,1}中。
回归,回归使用回归SVM(默认)
浮动使用给定值为nu的nu-SVM代替普通SVM(请参见[Schoelkopf/等人/2000a]有关nu-SVM的详细信息)。
分布评估培训示例分发的支持(参见[Schoelkopf/等人/99a]). 必须设置Nu!
冗长[1..5]范围从1(无消息)到3(默认)到5(洪水,仅用于调试)
规模将训练示例缩放为平均值0和方差1(默认值)
无刻度(_S)不要缩放训练示例(数字可能不太稳定!)
格式设置默认的示例文件格式。参见说明在这里.
分隔符设置默认的示例文件格式。参见说明在这里.

损失函数:

C类浮动SVM复杂性常数。如果未设置,则使用1/avg(K(x,x))。
L(左)+浮动用这个因子惩罚正偏差(预测过高)
L(左)-浮动用这个因子惩罚负偏差(预测过低)
ε浮动不敏感常数。如果预测如此接近真实值,则无损失
ε+浮动仅用于正偏差的ε
ε-浮动仅负偏差的ε
二次损失+正偏差使用二次损失
二次损失-负偏差使用二次损失
二次损失正负偏差均使用二次损失

优化器参数:

工作集大小整数在每次迭代中优化这么多示例(默认值:10)
最大迭代次数(_I)整数经过这么多次迭代后停止
收缩_压缩整数如果变量对于这么多迭代来说是最优的,那么将其固定到边界
为零浮动数字精度(默认值:1e-10)
下降浮动在每次迭代中,使目标函数下降很多
会聚_epsilon浮动KKT条件下的精度(默认值:1e-3用于模式识别,1e-4用于回归)
内核缓存整数内核评估的缓存大小im MB(默认值:40)

训练算法

交叉验证(_V)整数用给定的块数对训练示例进行交叉验证
cv订单按照示例给出的顺序进行交叉验证
cv_窗口整数通过在训练数据上移动给定块数的窗口来进行交叉验证。(意味着cv_inder)
搜索_C[上午]通过A类添加或将电流C乘以cdelta
厘米最小值search_C的下限
最大cmaxsearch_C的上限
克德尔塔搜索步长_C

内核定义

内核定义允许您选择要使用的内核函数类型及其参数。它从线条开始@内核

名称内核类型参数
内积没有人
多项式的多项式(x*y+1)^d整数
径向的径向基函数exp(-gamma|x-y|^2)伽马射线浮动
神经的双层神经网络tanh(ax*y+b)浮动,b个浮动
方差分析(RBF)方差核伽马射线float>/em>,度整数
用户用户可定义内核参数_i_1。。。参数_i_5整数,参数_f_1。。。参数_f_5浮动
用户2用户可定义内核2参数_i,参数_f
汇总(_A)其他核的总和number_parts(零件数)整数,范围整数 整数,后面是number_parts(零件数)内核定义
产品汇总其他谷物的产品number_parts(零件数)整数,范围整数 整数,后面是number_parts(零件数)内核定义

示例集

示例集包括每个示例的学习属性、分类(对于模式识别,-1或1)或函数值(对于回归)及其拉格朗日乘数(实际上,您不需要为训练提供拉格朗氏乘数,甚至不需要为预测提供函数值。但您可以)示例可以采用两种不同的格式:密集和稀疏。请注意,您可以更改数据格式

示例集定义以开始@示例注意,每个示例必须在一行中。

警告:给出实数时,也可以使用冒号代替小数点(“1234,56“而不是”1234.56“,德国风格)。因此类似于”1,234.56“不起作用!

通用参数:

格式F类示例格式,其中F类是“稀疏”或包含“x”、“y”或“a”的字符串。格式字符串定义属性的位置x个,功能价值和拉格朗日乘数在一个示例中。必须设置“x”。默认格式为“yx”,但您可以在参数定义中设置另一个默认值。
整数属性的数量。如果未给定尺寸,则从示例中设置尺寸(稀疏格式的最大尺寸,密集格式的第一行尺寸)。
整数示例总数。给出错误数量的示例时发出警告
b条浮动超平面的附加常数
分隔符烧焦分隔示例属性的字符(默认值:空格)。您可以在参数部分设置默认值。如果将分隔符设置为“,”或“.”,请小心!

稀疏格式:

在稀疏数据格式中,只需给出非零属性。对于每个非零属性,您将给出其属性编号(从1开始)及其值,用冒号分隔。函数值由y给出:浮动(此处“y:”是可选的!)和拉格朗日乘子a:浮动.

示例:以下行都定义了相同的示例:

  • 1:-1 2:0 3:1.2 y:2答:0
  • 3:1.2年:2 1:-1
  • 3:1.2 2 1:-1

密集格式

稠密格式由所有属性和(如果定义了)函数值和拉格朗日乘子组成,按格式参数。

示例:以下各行定义了与上面相同的示例:

  • 使用“格式yx“(默认):”2 -1 0 1.2"
  • 使用“格式xya“是的”-1 0 1.2 2 0"
  • 还有“格式xy“和”分隔符“,”“示例如下”-1,,1.2,2"

工具书类

Schoelkopf/金属/2000a Schölkopf、Bernhard和Smola、Alex J.和Williamson、Robert C.和Bartlett,Peter L.(2000)。新的支持向量算法。神经计算,12页1207-1245。
schoelkopf/etl/99a Schölkopf、Bernhard和Williamson、Robert C.和Smola、Alex J.和Shawe-Taylor、John(2000)。分销支持的SV估计。在Solla,S.A.和Leen,T.K.和Müller,K.-R.的编辑中,神经信息处理系统12麻省理工学院出版社。
约阿希姆/99a 托尔斯滕·约阿希姆斯(1999)。使大规模SVM学习实用化。核方法的进展——支持向量学习,第11章。麻省理工学院出版社。[磅/平方英寸] [.pdf]
谢弗/约阿希姆/99a Tobias Scheffer和Thorsten Joachims(1999年)。模型选择的预期误差分析。国际机器学习会议
Vapnik/98a公司 V.Vapnik(1998)。统计学习理论。威利。