赞
踩
在“工作SVM”方面 – 什么使SVM工作“更难”是一个更复杂的模型,不容易分离,更高的维度和更大,更密集的数据集.
SVM性能下降:
>数据集大小增加(数据点数)
>稀疏度降低(零个更少)
>维度增加(属性数量)
>使用非线性内核(并且内核参数可以使用
内核评估更复杂)
改变参数
您是否可以更改参数以使SVM花费更长时间.当然,参数会影响您将获得的解决方案的质量,并且可能没有任何意义.
使用C-SVM,变化的C将导致不同的运行时间. (nu-SVM中的相似参数是nu)如果数据集是合理可分的,那么使C更小将导致更长的运行时间,因为SVM将允许更多的训练点成为支持向量.如果数据集不是很可分离,那么使C更大将导致更长的运行时间,因为您实际上告诉SVM您需要一个与数据紧密匹配的窄边距解决方案,并且当数据不容易计算时需要更长的时间来计算分离.
通常,您在进行参数搜索时会发现,有些参数会增加计算时间而精度没有明显提高.
其他参数是内核参数,如果你改变它们以增加计算内核的复杂性,那么SVM运行时自然会增加.线性内核很简单,速度最快;非线性内核当然需要更长的时间.一些参数可能不会增加内核的计算复杂性,但会强制使用更复杂的模型,这可能需要更长的SVM才能找到最佳解决方案.
要使用的数据集:
MNIST handwriting recognition dataset是一个很好用的 – 你可以随机选择数据的子集来创建越来越大的数据集.请记住,链接中的数据包含所有数字,SVM当然是二进制的,因此您必须将数据减少到两位数或执行某种多类SVM.
您也可以轻松生成数据集.要生成线性数据集,随机选择超平面的法向量,然后生成数据点并确定它所在的超平面的哪一侧以标记它.添加一些随机性以允许超平面的特定距离内的点有时被不同地标记.通过增加类之间的重叠来增加复杂性.或者生成一些正态分布点的簇,标记为1或-1,以便分布在边缘重叠.经典的非线性示例是棋盘格.生成点并以棋盘图案标记它们.更难以扩大正方形的数量,增加尺寸并增加数据点的数量.当然,你必须使用非线性内核.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。