我有一组多类训练数据,这些数据是通过聚合手动标记的数据学习得来的,因此有些行会显示类似于[0, 0, 0, 0.4, 0.6]的值。是否有办法直接将这些数据用作分类器的训练数据?我不想诉诸于学习5个回归模型,或者简单地将数据设置为[0, 0, 0, 0, 1]。这两种方法似乎都比直接学习效果差。我知道至少对于逻辑回归来说这是可能的,但似乎没有API支持这一点。(另外,我更希望使用比这更好的分类器。)
回答:
这是一个依赖于模型的问题。特别是,如果你想使用SVM来完成这样的任务,你将需要K个SVM,其中K等于标签的数量(因为SVM是一个二元模型,而不是因为你想使用概率)。一旦你这样做了,你可以使用“样本加权”来包含你所讨论的这类知识。因此,对于SVM来说,答案是是,这是可能的,而且相当容易做到。特别是scikit-learn实现了每样本加权。
这也可以以自然的方式纳入到朴素贝叶斯中。
在不同的模型中,这可能更为复杂,例如,你可以训练一个神经网络,其预期输出为[0,0,0,0.4,0.6],而不是二进制向量,但这可能会导致过拟合(因为这并不意味着“第4类有40%的确定性”,而是“尝试以这种方式建模,以便利用对于这个样本你回答的正是[0,0,0,0.4,0.6]”,所以如果有一个相似的样本,其值为[0,0,0,1,1],它会试图区分它们。同样,这也适用于任何多回归方法。