为什么异常值检测算法中不使用标签?

数据挖掘 机器学习 离群值
2022-02-19 16:13:49

我从 sklearn 阅读了这篇文章:https ://scikit-learn.org/stable/modules/outlier_detection.html

虽然这些算法对于异常值检测非常有用,但令我惊讶的是它们没有使用标签来查找异常值。这正常吗?使用它们没有用吗?

异常值检测也称为无监督异常检测

是否有提供监督异常检测算法的现有库?

更多解释:

如何知道一个数据点是否真的是没有标签的异常值?假设我们想预测房子的价格。如果价格较低,则具有许多良好功能(大尺寸、大游泳池、大花园等)的房屋可能是异常值,如果价格高于平均水平,则可能是正常点。

1个回答

如果没有标签,则可以以无监督方式执行异常值检测,如果有一个训练集,其中异常值已经被“专家”标记为此类,则可以以监督方式执行。

无监督异常值检测通常(总是?)基于密度。如果它们与大多数其他观测值相距太远,算法将调用观测值异常值。这对于检测可能是错误或异常情况的情况很有用;最终,例如,从数据集中删除错误。

有监督的异常值检测不太常见。事实上,在现实世界的应用中,确定什么应该是正常情况(例如某些设备的操作模式)相当容易,但定义异常情况却相当复杂。您可能有异常情况的示例,但可能不是所有可能的异常情况。然后,监督学习异常值检测(基本上是正常异常类的二元分类问题)将学习如何检测已知异常情况,但可能会在未知情况下失败。

这就是为什么存在半监督异常值检测(在 scikit-learn 示例中称为新颖性检测)的原因。训练数据集仅包含法线点,模型被训练以定义法线域的边界。然后,在分类步骤,算法可以预测观察是否可以被视为正常。半监督异常值检测技术通常基于观测值是由生成学习数据集的相同未知过程生成的可能性(例如,参见贝叶斯网络或高斯混合模型)。


笔记:

  • 可以组合无监督和半监督技术。例如,您可以使用第一种无监督方法来删除假定的异常值,然后在剩余的观察值上训练一个半监督模型。由此产生的模型可能会比异常值被标记为更健壮,并且监督模型已经在完整数据集上进行了训练。
  • 对于半监督或无监督离群点检测,决策边界位置取决于模型超参数(离群点的预期分数、离群点的距离、可接受的可能性等)