我正在使用 weka 进行分类。在 weka 中,我使用 SMO 对文档进行分类。在某些情况下,SMO 返回错误的类别。
例如,以 2 类计算机和 Cricket 为例。首先我为这 2 个类别训练并创建了模型。然后我将测试一个文档,其中内容与这两个类别以 50:50 的比例相关。SMO 仅返回第一类计算机。如果 50:50 的比例意味着我需要返回这两个类别。
如何在 SMO 分类器中实现多类分类?
我正在使用 weka 进行分类。在 weka 中,我使用 SMO 对文档进行分类。在某些情况下,SMO 返回错误的类别。
例如,以 2 类计算机和 Cricket 为例。首先我为这 2 个类别训练并创建了模型。然后我将测试一个文档,其中内容与这两个类别以 50:50 的比例相关。SMO 仅返回第一类计算机。如果 50:50 的比例意味着我需要返回这两个类别。
如何在 SMO 分类器中实现多类分类?
通常,分类器会给出一个结果。据我了解您的问题,您需要distributionForInstance。这种方法会给你上课的概率。在您的示例中,您应该得到 1/2 和 1/2 的概率。
你提到
是的,只有我得到错误的概率。对于计算机课,我得到 0.63 和板球 0.36。但是两个类别的内容和字数相同
您的解释的问题是您希望类别概率仅来自内容和单词数量。例如对于朴素贝叶斯来说是这样,但对于其他分类器来说通常不是这样。如果您尝试使用朴素贝叶斯进行相同的分类,您可能会看到预期的概率。
您的类概率是根据 SVM 中的支持向量给出的。这意味着根据支持向量,您的 0.63 概率类更有可能。
我知道人们可能会使用不同的术语,但对于您的问题,最普遍接受的术语是“多标签分类”(https://en.wikipedia.org/wiki/Multi-label_classification)。
我认为提到多类分类的维基百科文章写错了,或者是来自不同领域的术语使用了类似的方法。
多类分类通常意味着将数据点仅分类为许多(> 2)类中的一个,而不是多标签分类,这意味着将数据点分类为超过 1个可能的类。
您可以查看Meka - Weka 的扩展,实现了一些多标签分类器。我知道你想使用 weka,但如果没有,你可以试试multilabel libsvm。