如何仅以正面案例作为训练来预测结果?

机器算法验证 机器学习 预测模型 无监督学习 监督学习 半监督学习
2022-01-27 02:31:04

为了简单起见,假设我正在研究垃圾邮件/非垃圾邮件的经典示例。

我有一组 20000 封电子邮件。其中,我知道 2000 封是垃圾邮件,但我没有任何非垃圾邮件的例子。我想预测剩下的 18000 是否是垃圾邮件。理想情况下,我正在寻找的结果是电子邮件是垃圾邮件的概率(或 p 值)。

在这种情况下,我可以使用什么算法来做出明智的预测?

目前,我正在考虑一种基于距离的方法,它可以告诉我我的电子邮件与已知的垃圾邮件有多相似。我有什么选择?

更一般地说,我可以使用监督学习方法,还是我必须在我的训练集中有负面案例才能做到这一点?我是否仅限于无监督学习方法?半监督方法呢?

3个回答

这被称为从正面和未标记的数据中学习,或简称 PU 学习,是半监督学习的一个活跃领域。

简而言之,在学习过程中使用未标记的数据很重要,因为它产生的模型比专门针对已知阳性进行训练的所谓单类分类器产生显着改进。未标记的数据可以通过多种方式合并,主要方法如下:

  • 以某种方式从未标记的数据中推断出一组可能的负数,然后训练一个监督模型来区分已知的正数和这些推断的负数。
  • 将未标记的集合视为负数,并以某种方式解释已知存在的标签噪声。

我在这个领域很活跃,与其在这里为你总结,我建议阅读我的两篇论文和其中的参考资料,以了解该领域的概况:

我假设在您的 18000 个案例中没有那么多垃圾邮件案例。要对此使用监督学习方法,您的数据中需要有超过 1 个类别/类。由于您知道 2000 个案例是垃圾邮件,因此您可以将剩余的 18000 个案例标记为“未知类别”,并训练任何监督学习模型来预测案例是属于垃圾邮件还是未知类别。然后检查您的样本外模型准确性,以了解模型在区分这两个类别方面的表现如何。如果它表现良好,那么我假设“未知”类别中的垃圾邮件案例很少。如果它表现不佳,那么您将不得不使用无监督学习器(如 kmeans 等)来聚类并识别数据中单独的同质组。然后确定哪些集群包含 2000 封垃圾邮件中的大部分,哪些没有,分别标记为垃圾邮件和非垃圾邮件。接下来,您可以使用我之前描述的监督学习器继续建模。

OP所说的是一类分类任务,这是一项非常具有挑战性的任务。

在不同的研究领域有很多关于这项任务的论文。我还写了一个An Efficient Intrinsic Authorship Verification Scheme Based on Ensemble Learning很容易适应它来分类垃圾邮件/非垃圾邮件,而不是作者。试一试,如果您需要更多详细信息,请告诉我...