在一个简单的分类中,我们有两个类:0 类和 1 类。在某些数据中,我只有 1 类的值,所以没有 0 类的值。现在我正在考虑制作一个模型来为第 1 类的数据建模。因此,当新数据出现时,该模型将应用于新数据并找到一个概率,说明新数据与该模型匹配的可能性有多大。然后与阈值比较,我可以过滤不适当的数据。
我的问题是:
- 这是解决此类问题的好方法吗?
- 可以在这种情况下使用 RandomForest 分类器吗?我是否需要为希望分类器视为噪声的 0 类添加人工数据?
- 任何其他想法可能有助于解决这个问题?
在一个简单的分类中,我们有两个类:0 类和 1 类。在某些数据中,我只有 1 类的值,所以没有 0 类的值。现在我正在考虑制作一个模型来为第 1 类的数据建模。因此,当新数据出现时,该模型将应用于新数据并找到一个概率,说明新数据与该模型匹配的可能性有多大。然后与阈值比较,我可以过滤不适当的数据。
我的问题是:
使用某些方法可以做到这一点,并且肯定是一种有效的方法。不过,我不确定随机森林是否可以做到这一点。
生成人工数据意味着做出额外的假设,如果没有必要就不要这样做。
您可能想要研究的一种技术是所谓的一类 SVM。它完全符合您的要求:它尝试构建一个模型,该模型接受训练点并拒绝来自其他分布的点。
关于一类 SVM 的一些参考资料:
Schölkopf、伯恩哈德等人。“估计高维分布的支持。” 神经计算 13.7 (2001): 1443-1471。本文介绍了该方法。
税,大卫 MJ 和罗伯特 PW Duin。“支持向量数据描述。” 机器学习 54.1(2004):45-66。做同样事情的不同方式,可能更直观。
这两种方法已被证明是等效的。第一个估计一个超平面,它以最大距离将所有训练数据与特征空间中的原点分开。第二个估计包含训练实例的特征空间中具有最小半径的超球面。
一类 SVM 在许多 SVM 包中都可用,包括libsvm、scikit-learn (Python) 和kernlab (R)。
让我添加更多可能性:
一般的想法是,为与类的距离设置阈值可以让您决定样本是否属于该类,而不管是否有其他类。
Richard G. Brereton: Chemometrics for Pattern Recognition (Wiley, 2009) 有一整章是关于一类分类的。