异常检测与监督学习
Posted
技术标签:
【中文标题】异常检测与监督学习【英文标题】:Anomaly Detection vs Supervised Learning 【发布时间】:2014-06-11 11:55:37 【问题描述】:我有非常小的属于正类的数据和大量来自负类的数据。根据教授。 Andrew Ng (anomaly detection vs supervised learning),由于数据高度倾斜,我应该使用异常检测而不是监督学习。
如果我错了,请纠正我,但两种技术在我看来是一样的,即在(监督)异常检测和标准监督学习中,我们使用正常和异常样本训练数据并测试未知数据。有什么区别吗?
我应该只对负类进行欠采样还是对正类进行过采样以获得相同大小的两种类型数据?会影响整体精度吗?
【问题讨论】:
有几种类型的监督学习分类器。你具体指的是哪一个?例如,神经网络与逻辑回归有很大不同 我不是很具体,但是如果我使用神经网络呢。 【参考方案1】:实际上,在监督学习中,您将数据集标记为(例如好、坏),并在训练模型时传递标记的值,以便它学习将“好”与“坏”结果区分开来的参数。
在异常检测中,它是无监督的,因为您不传递任何标记值。您所做的是仅使用“非异常”数据进行训练。然后,您选择 epsilon 值并使用数值(例如 F1 分数)进行评估,以便您的模型在真阳性之间获得良好的平衡。
关于尝试过采样/过采样以使您的数据不偏斜,有两件事。
-
Ng 教授提到,如果您的正类仅是 10k 或 100k 中的 10 个,那么您需要使用异常检测,因为您的数据高度倾斜。
如果您通常知道什么是“坏”值,那么监督学习是有意义的。如果您只知道什么是“正常”/“好”,但您的“坏”值每次都可能非常不同,那么这就是异常检测的好案例。
【讨论】:
【参考方案2】:在异常检测中,您可以从得到良好支持的数据部分确定模型参数(正如 Andrew 解释的那样)。由于您的否定类有很多实例,因此您可以将这些数据用于“学习”。核密度估计或 GMM 是通常使用的方法的示例。因此,可以学习“正常”模型,并且可以使用阈值来检测相对于您的派生模型被认为异常的实例。这种方法与传统的监督学习之间的区别在于您仅使用一部分数据(在您的案例中为负类)进行训练。您会期望您的阳性实例在训练后被识别为异常。
至于您的第二个问题,对负类进行采样不足会导致信息丢失,而对正类进行过度采样不会添加信息。我不认为遵循这条路线是可取的。
【讨论】:
以上是关于异常检测与监督学习的主要内容,如果未能解决你的问题,请参考以下文章
ICLR和CVPR双料大作:谷歌自监督学习框架,夺榜多个异常检测
《异常检测——从经典算法到深度学习》15 通过无监督和主动学习进行实用的白盒异常检测
《异常检测——从经典算法到深度学习》15 通过无监督和主动学习进行实用的白盒异常检测
《异常检测——从经典算法到深度学习》16 基于VAE和LOF的无监督KPI异常检测算法