获得 SMO 分类的准确输出值,然后将它们明确划分为类别

Posted

技术标签:

【中文标题】获得 SMO 分类的准确输出值,然后将它们明确划分为类别【英文标题】:Obtaining exact output values of SMO classification, before clearly demarcating them into classes 【发布时间】:2016-10-28 16:47:28 【问题描述】:

在 weka 中运行 SMO 分类器时,如果我将训练标签输入为 0 和 5(二进制集),那么在测试数据上运行分类器模型时,输出的是 0 到 5 之间的一些十进制值在后面的步骤中被清楚地分类为两个二进制标签,还是没有中间十进制值?

如果存在,如何获取这些中间十进制值?

(例如,在上述模型中,smo/svm 分类器是否分配值,例如 1、2、3 和 4,或给定范围内的其他十进制/浮点值,然后将它们适当地分组在 0 和 5 下值类)。

【问题讨论】:

【参考方案1】:

分类中没有“标签值”的概念。标签只是一个标识符,而不是可比较的对象,它分配给您问题中的特定实例。 “0”和“5”也可以是“狮子”和“大象”。

特别是对于 SVM(WEKA 通过让人们将 SVM 称为 SMO 对科学界做了一件可怕的事情,只是因为这是内部使用的求解器算法......)每个标签都被转换为“-1”和“+ 1"。在内部,SVM 确实有一个支持的概念,因为它将线性投影您的数据点,从而从整个 R (-inf, +inf) 中获取一个值,并根据符号分配标签。在非常粗略的意义上,这是一种模型的确定性(但是没有在任何概率意义上进行校准,因此“0.01”除了“小于 0.02”之外没有任何意义,但甚至不能说 0.01 的不确定性比一个 0.02 的点,因为这些值没有合理的缩放比例。

在“纯”weka 中有 classifier.distributionForInstance() 返回这些值。在 classify 选项卡上的 weka explorer 中,单击 More options... 并勾选 Output predictions 以获取它们。

【讨论】:

如果我在分类器中有两个类的输入,那么输出预测是否只提供那些更接近分离 SVM 超平面的点的值?我的分类器似乎只给出了 0.444、0.555 的值,而不是 0。

以上是关于获得 SMO 分类的准确输出值,然后将它们明确划分为类别的主要内容,如果未能解决你的问题,请参考以下文章

Weka SMO 分类器不断返回一个结果

如何提高 Weka 中 SMO 分类器的性能?

使用交叉验证的 KNN 分类器

weka中的SMO置信度测量

将类划分为子类会提高图像分类的预测准确性吗?

字母分类准确率