我正在研究一个分类问题,其中我只有一个类的数据,所以我想在“目标”类与“异常值”类的所有其他可能性之间进行分类。因此,我打算使用 One Class Classifier 或 LibSVM 分类器。但这里的问题是:
我需要为“异常值”类提供训练数据吗?如果是的话,有什么办法可以解决这个问题,因为我只有关于 Target 类的数据。
我正在研究一个分类问题,其中我只有一个类的数据,所以我想在“目标”类与“异常值”类的所有其他可能性之间进行分类。因此,我打算使用 One Class Classifier 或 LibSVM 分类器。但这里的问题是:
我需要为“异常值”类提供训练数据吗?如果是的话,有什么办法可以解决这个问题,因为我只有关于 Target 类的数据。
仅使用来自正类的样本来实现此目的的一种方法是密度估计。您可以将参数模型拟合到您的数据(例如,多变量法线)或使用核密度估计器(有点像最近邻的一类版本,具有核化距离度量)。然后,评估新数据在学习模型下的概率,如果它足够低,则将其作为类成员拒绝。
您可以使用 One Class Svm 进行新颖性检测,您只需在目标类上对其进行训练,它会将您的数据分类为与受过训练的类相似或不同您可以在此处
阅读 One Class Svm 的 scikit 文档
一类分类器的要点是没有来自异常类的数据可用。所有 1C 算法都是基于这个假设设计的。使用 1C 分类器的常见情况是机器的健康预测。在这种情况下,通常只有来自健康类的数据,因为从故障类收集数据非常昂贵且难以准确获取,因为它需要破坏设备才能查看传感器的反应。
排除上述 1C-SVM 的可能算法有:
-神经网络自动编码器。在这种情况下,重构误差可用于量化输入是否不再属于某一类。这也可以扩展到变分自动编码器,以准确隔离潜在变量(异常的无监督分类)。
- 神经网络 1C 分类器。
-HELM-1C 网络