可以使用训练标签置信度来提高预测准确性吗?

数据挖掘 机器学习 分类 回归 scikit-学习 支持向量机
2021-09-26 09:47:07

我有用二进制值标记的训练数据。我还收集了这些标签中的每一个的置信度,即 0.8 置信度意味着 80% 的人工贴标者同意该标签。

是否可以使用此置信度数据来提高分类器的准确性?

下面的工作吗?

  • 1a) 如果标签为 0,并且该标签的置信度数据为 0.8,则为训练数据提供 0.2 的新标签

  • 1b) 如果标签为 1 且该标签的置信度数据为 0.8,则为训练数据提供 0.8 的新标签

  • 2)使用此方法为训练集中的每个条目计算新标签

  • 3) 将问题视为回归问题(标签范围在 0 和 1 之间)

  • 4)根据新标签是否高于或低于特定值对未标记数据进行分类。即如果低于 X,则给所有预测标签类 0,如果高于 X,则给类 1。

我目前正在为我的模型使用带有 RBF 内核的 SVM。

提前致谢!

1个回答

是的,可以使用此置信度数据。但是,我不推荐您提到的方法。相反,让我建议一种不同的方法。实际上,我会推荐两个。第一个在概念上是干净的;第二个可能更容易实现;在实践中它们可能大致相等。

调整损失函数

您可以调整损失函数以反映您对训练数据的置信度得分。

特别是,如果您使用的是交叉熵损失,那么有一种特别干净的方法可以做到这一点。让我解释一下交叉熵损失的一些背景,然后解释一下如何。我们将训练实例上的标签视为标签上的概率分布。在二元分类中,这样的分布可以表示为一个向量(p0,p1)在哪里p0 表示标签为 0 的概率,并且 p1 标签为 1 的概率。通常,我们会得到“硬标签”:如果我们知道实例上的正确标签 X 为0,则对应于概率分布 (1,0); 如果正确的标签是 1,那就是分布(0,1). 然后,交叉熵损失将分类器的预测与该分布进行比较。

交叉熵损失的好处在于它很容易生成比较任何两个分布。因此,如果你有信心0.8 例如,正确的标签 X 为 0,则对应于一个概率分布 (0.8,0.2). 现在,您可以计算分类器预测相对于分布的交叉熵(0.8,0.2),这就是对训练实例损失的贡献 X. 对训练集中的所有实例求和,得到调整后的损失函数。

现在,您可以通过最小化这个调整后的损失函数来训练分类器,这将直接将所有信息合并到您的置信度分数中。

使用权重

或者,您可以使用权重来反映置信度信息。

一些分类器允许您为训练集中的每个实例指定权重这个想法是,对特定实例的错误预测会与其权重成比例地受到惩罚,因此具有高权重的实例对于正确处理更为重要,而具有低权重的实例则不太重要。或者,等效地,训练过程更努力地避免在具有高权重的实例上出现错误。

您可以使用权重来反映置信度信息。假设你有一个实例X在你认为应该有标签 0 的训练集中,有信心0.8. 您将添加一份(X,0)到带有权重的训练集0.8(即,实例是X标签为 0),并添加一份(X,1)到带有权重的训练集0.2(即,实例是X标签为 1)。以这种方式建立训练集。这会使训练集的大小翻倍。现在使用这些权重训练一个分类器。

对于支持权重的分类器,这应该很容易实现。

也可以证明它是有效和合理的。例如,当使用交叉熵损失来训练分类器时,这种使用权重的方法相当于调整上面强调的损失函数。因此,在这种特定情况下,这两种方法实际上是等价的。