只有一个类的分类器

机器算法验证 机器学习 一类
2022-03-20 11:19:43

在一个简单的分类中,我们有两个类:0 类和 1 类。在某些数据中,我只有 1 类的值,所以没有 0 类的值。现在我正在考虑制作一个模型来为第 1 类的数据建模。因此,当新数据出现时,该模型将应用于新数据并找到一个概率,说明新数据与该模型匹配的可能性有多大。然后与阈值比较,我可以过滤不适当的数据。

我的问题是:

  • 这是解决此类问题的好方法吗?
  • 可以在这种情况下使用 RandomForest 分类器吗?我是否需要为希望分类器视为噪声的 0 类添加人工数据?
  • 任何其他想法可能有助于解决这个问题?
2个回答

使用某些方法可以做到这一点,并且肯定是一种有效的方法。不过,我不确定随机森林是否可以做到这一点。

生成人工数据意味着做出额外的假设,如果没有必要就不要这样做。

您可能想要研究的一种技术是所谓的一类 SVM。它完全符合您的要求:它尝试构建一个模型,该模型接受训练点并拒绝来自其他分布的点。

关于一类 SVM 的一些参考资料:

  1. Schölkopf、伯恩哈德等人。“估计高维分布的支持。” 神经计算 13.7 (2001): 1443-1471。本文介绍了该方法。

  2. 税,大卫 MJ 和罗伯特 PW Duin。“支持向量数据描述。” 机器学习 54.1(2004):45-66。做同样事情的不同方式,可能更直观。

这两种方法已被证明是等效的。第一个估计一个超平面,它以最大距离将所有训练数据与特征空间中的原点分开。第二个估计包含训练实例的特征空间中具有最小半径的超球面。

一类 SVM 在许多 SVM 包中都可用,包括libsvmscikit-learn (Python) 和kernlab (R)。

让我添加更多可能性:

一般的想法是,为与类的距离设置阈值可以让您决定样本是否属于该类,而不管是否有其他类。

  • 马氏距离 => QDA
  • SIMCA(类类比的软独立建模)使用 PCA 分数空间中的距离。
    SIMCA 在化学计量学文献中很常见(尽管很少真正以一类方式建立)。
  • (@Marc Claesen 的回答中已经处理了 SVM)

Richard G. Brereton: Chemometrics for Pattern Recognition (Wiley, 2009) 有一整章是关于一类分类的。