处理某些类别的标记示例可能不正确(嘈杂)的数据

时间:2013-09-20 17:59:42

标签: machine-learning scikit-learn

我正在使用数据集,如果示例标记为正数,则肯定是正数。不幸的是,对于否定类,如果标签被标记为负数,则不能说同样的(并且它可能会变成正类)。标记为负数的示例数量远远超过标记为正数的示例数量。我正在尝试学习该训练数据集的分类模型。我想知道在这种情况下可以使用哪些技术(特定类的标签可能有噪音)

2 个答案:

答案 0 :(得分:2)

标签的噪音不是问题,大多数分类器都认为,某些数据是错误标记的(如SVM及其软边距)。这里有趣的是,在一个特定类的正确性之间存在不成比例。这可以通过以下几种方式来解决:

  • Use class-weighting scheme并且将比例更大的权重附加到正确的类,因为它的“正确性”你应该更关注正确的分类,而你可以有更多的错误分类的负面类的元素(这也是解决方案)因为班级规模不成比例)
  • 虽然使用了一些适合的参数 - 使用定制的黑客指标,这将衡量积极因素而不是负数(因此你更关心TP和FP,而不关心TN和FN)。最简单的情况是精确度量,它只是忽略TN和FN,但您也可以使用F-beta measure,它在精度和召回之间取得平衡 - 在您的情况下,您应该选择小β(可能与比率成反比)正/负正确性)。一般来说,这个beta参数显示你更多关心召回精确度的次数。
  • 使用新颖性检测代替二元分类,并专注于检测阳性样本。这种任务有许多可能的模型,其中一种是一类SVM。

答案 1 :(得分:1)

您还可以尝试修复数据集中的标签:如果数据集确实过于嘈杂,则会损害分类器的性能(在假设的神标准测试集上进行评估,没有噪音)。

您可以使用分类器输出来帮助您进行标记。如果您正在使用scikit-learn,例如SGDClassifier(loss='log')等某些模型可以使用predict_proba方法为您提供类分配概率。你可以这样:

1-在嘈杂的开发装置上训练第一个模型 2-计算此数据集上的类分配概率 3-假设分类器没有完全过度拟合噪声(如果你有很多真实的负面例子,这对于线性模型来说是不太可能的),按概率对违规行为进行排序:在最重要的位置得到最严重的分类错误:它们最可能是错误的标记的例子 4-按顺序手动检查这些违规行为并相应更新标签

然后进行迭代,直到您对数据质量更满意为止。