如果没有标签,则可以以无监督方式执行异常值检测,如果有一个训练集,其中异常值已经被“专家”标记为此类,则可以以监督方式执行。
无监督异常值检测通常(总是?)基于密度。如果它们与大多数其他观测值相距太远,算法将调用观测值异常值。这对于检测可能是错误或异常情况的情况很有用;最终,例如,从数据集中删除错误。
有监督的异常值检测不太常见。事实上,在现实世界的应用中,确定什么应该是正常情况(例如某些设备的操作模式)相当容易,但定义异常情况却相当复杂。您可能有异常情况的示例,但可能不是所有可能的异常情况。然后,监督学习异常值检测(基本上是正常和异常类的二元分类问题)将学习如何检测已知异常情况,但可能会在未知情况下失败。
这就是为什么存在半监督异常值检测(在 scikit-learn 示例中称为新颖性检测)的原因。训练数据集仅包含法线点,模型被训练以定义法线域的边界。然后,在分类步骤,算法可以预测观察是否可以被视为正常。半监督异常值检测技术通常基于观测值是由生成学习数据集的相同未知过程生成的可能性(例如,参见贝叶斯网络或高斯混合模型)。
笔记:
- 可以组合无监督和半监督技术。例如,您可以使用第一种无监督方法来删除假定的异常值,然后在剩余的观察值上训练一个半监督模型。由此产生的模型可能会比异常值被标记为更健壮,并且监督模型已经在完整数据集上进行了训练。
- 对于半监督或无监督离群点检测,决策边界位置取决于模型超参数(离群点的预期分数、离群点的距离、可接受的可能性等)