如何解释SVM-light结果

时间:2014-05-27 16:08:42

标签: machine-learning svm svmlight

我在教程中使用SVM-light将数据分类为2个类:

训练档案:

 +1 6357:1 8984:1 11814:1 15465:1 16031:1
 +1 6357:1 7629:0.727 7630:42 7631:0.025
 -1 6357:1 11814:1 11960:1 13973:1
 ...

测试文件:

 0 6357:1 8984:1 11814:1 15465:1
 0 6357:1 7629:1.08 7630:33 7631:0.049 7632:0.03
 0 6357:1 7629:0.069 7630:6 7631:0.016
 ...

执行svm_learn.exe train_file model - > svm_classify.exe test_file model output我在output中得到了一些意想不到的值:

 -1.0016219
 -1.0016328
 -1.0016218
 -0.99985838
 -0.99985853

不是列车文件中的类应该是+1或-1吗?或者在-1和+1之间的某种浮点数,以手动选择0作为分类或其他数字的解决方案,但对于我来说,当所有数字都接近-1时,这是非常意想不到的情况其中一些甚至更少。

UPD1 :如果结果编号为负数,则为-1,如果结果为正{ - 1}}。还在质疑这个标志后的价值意味着什么?我刚刚开始探索SVM,所以这可能是一个简单或愚蠢的问题:)如果我预测到我应该采取什么步骤 - 另一个内核?或者可能还有一些其他选项让SVM-light与我的数据更相关?

1 个答案:

答案 0 :(得分:2)

简短回答:只需取结果的标志

更长的回答: SVM接受输入并返回实值输出(这是您所看到的)。

在训练数据上,学习算法尝试将所有正例的输出设置为> = +1,并且对于所有负例,< = -1。这些点没有错误。 -1和+1之间的差距是“边际”。在-1和+1之间的“无人区域”中的点和在完全错误的一侧上的点(如输出> +1的负点)是错误(学习算法试图使训练数据最小化) )。

因此,在测试时,如果结果小于-1,您可以合理地确定它是一个反面的例子。如果它大于+1,你可以合理地确定它是一个积极的例子。如果介于两者之间,则SVM对此非常不确定。通常,你必须做出决定(并且不能说“我不知道”),因此人们使用0作为正面和负面标签之间的界限。