1

我下载了适用于 linux 操作系统的 SVM-Light。运行命令。它产生 2 个可执行的 svm_learn 和 svm_classify。train.dat使用它,我尝试test.dat使用以下代码执行示例文件(它包含一个文件)

 ./svm_learn example1/train.dat example1/model.txt
 ./svm_classify example1/test.dat example1/model.txt example1/predictions.txt

之后我得到 2 个文本文件模型和预测。我是 svm 的新手。为什么test.dattrain.dat在示例文件中的格式相同?

test.dat   +1 6:0.0342598670723747 26:0.148286149621374 27:0.0570037235976456
train.dat   1 6:0.0198403253586671 15:0.0339873732306071 29:0.0360280968798065

输出像

 > Scanning examples...done
    Reading examples into                                                                                                                                                                                    memory...100..200..300..400..500..600..700..800..900..1000..1100..1200..1300..1400..1500..1600..1700..1800..1900..2000..OK. (2000 examples read)
Setting default regularization parameter C=1.0000
Optimizing........................................................................................................................................................................................................................................................................................................................................................................................................................................done. (425 iterations)
Optimization finished (5 misclassified, maxdiff=0.00085).
Runtime in cpu-seconds: 0.07
Number of SV: 878 (including 117 at upper bound)
L1 loss: loss=35.67674
Norm of weight vector: |w|=19.55576
Norm of longest example vector: |x|=1.00000
Estimated VCdim of classifier: VCdim<=383.42790
Computing XiAlpha-estimates...done
Runtime for XiAlpha-estimates in cpu-seconds: 0.00
XiAlpha-estimate of the error: error<=5.85% (rho=1.00,depth=0)
XiAlpha-estimate of the recall: recall=>95.40% (rho=1.00,depth=0)
XiAlpha-estimate of the precision: precision=>93.07% (rho=1.00,depth=0)
Number of kernel evaluations: 45954
Writing model file...done

train.dat是训练文件,所以它在执行前被标记,那么为什么test.dat在执行前被标记?你能解释一下输出,尤其是条款吗precision,recall,error

4

2 回答 2

1

测试数据也被标记,因此您的分类器可以被评估。如果测试集没有好的标签,就无法衡量它的质量。分类时不使用此信息,仅用于检查良好分类的数量。错误、精度和召回度量是用于评估分类器的众多指标之一。

  • 错误 = number_of_times_your_model_was_wrong / all_test_cases
  • 精度 = TP / (TP + FP)
  • 召回 = TP / (TP + FN)

在哪里

  • TP = 你的模型猜测的次数 +1 并且确实是 +1
  • FP = 你的模型猜测的次数 +1 但实际上是 -1
  • FN = 您的模型猜测的次数 -1 但实际上是 +1
于 2014-01-20T07:07:31.360 回答
-1

该格式称为LIBSVM 格式,因为它是由另一个 SVM 实现LIBSVM定义的。

为什么需要不同的文件格式用于训练和评估数据?

重复使用相同的格式两次要好得多,而不必支持另一种文件格式。

另外,正如@lejlot 在他的回答中提到的那样,测试文件实际上需要相同的格式进行验证

只有在将 SVM 应用于完全未知的新数据时,您才没有标签。

于 2014-01-20T12:14:56.380 回答