svm-train
可执行文件有一个参数e
,它允许设置某个epsilon
值。其描述仅为
设置终止标准的容忍度(默认值为0.001)
我觉得这个描述不够详细,且在网上也找不到相关解释。或许,这是一个众所周知的通用SVM参数,但我对通用SVM的了解还不够深入。
我指的是分类中使用的epsilon,而不是回归中使用的epsilon(“在epsilon-SVR的损失函数中”)并且通过选项-p
指定给libsvm
的epsilon。
回答:
SVM的解是通过数值优化求解的。求解器是迭代的,理论上可以无限重复迭代,直到误差精确为零——找到问题的精确解(由于浮点数舍入误差,这实际上永远不会发生)。在这种情况下,epsilon
是指在停止运行求解器迭代之前,解需要接近零的容忍度。0.001通常是一个不错的值。较小的值会使训练时间更长(需要更多迭代),但不太可能导致更低的错误率,因为初始解已经足够接近。0.01也很常见,这需要更少的训练时间(更少的迭代),但有时在测试数据上的错误率比更精确的解要高。