通常在进行多类分类时,我们使用one-hot encoding对类进行编码。例如,在四类分类中,属于第三类的将被编码为[0, 0, 1, 0]。在您的情况下,您似乎在数据中缺少信息,因为您只知道“它不是一级或二级”之类的信息,即[0, 0, ?, ?].
简单的解决方案可能是重新定义问题,并将其视为多标签分类问题,其中对于每个训练示例,您会将非0正类编码为' ,而将正类或未知类编码为'。1
[0, 0, ?, ?] -> [0, 0, 1, 1]
[1, 0, 0, 0] -> [1, 0, 0, 0]
[?, ?, 0, ?] -> [1, 1, 0, 1]
这将使您的算法学会对可能的正面进行分类,因此您可以在其中进行选择以进行正确的分类。
请注意,这使它成为一个嘈杂的标签问题。您有数据,但不精确。想象一下,你有三个非常相似的例子,你会知道第一个是“不是第一类”,第二个是“不是第一类或第四类”,而第三个是“不是第三类或第四类”。由此,你可以推断出这些例子肯定不是来自四班,也可能不是来自一、二班,所以它们很可能来自二班。这就是在给定足够数据的情况下,您的算法可以在给定嘈杂标签的情况下学习正确答案的方式。
如果您还有一部分好的数据,其中所有示例都有适当的标签,那么您可以使用这些数据来学习标准的多类分类器。接下来,您可以组合这两个结果,以便第一个分类器用于过滤可能的类,第二个用于进行分类。例如,如果第一个分类器返回非负概率,第二个分类器返回属于该类的概率,那么您可以将它们组合起来通过取来进行分类(p1,p2,p3,p4)(q1,q2,q3,q4)
argmaxi(p1q1,p2q2,p3q3,p4q4)