1 -Transfer Learning for Anomaly Detection through Localized and Unsupervised Instance Selection
Vincent Vercruyssen
2020 AAAI
提出LOCIT算法:1、选择源域(带标签)中的子集迁移到目标域(不带标签)中。2、使用半监督最近邻的方法同时考虑带标签和不带标签的实例来计算异常分数。
贡献:
1、使用实例在源域和目标域的分布(d1-局部距离和d2-相关距离)来度量是否可以迁移,使用目标域中的实例(假设了近邻的分布相同,距离很远点的分布不同)来训练一个SVM分类器判断是否可以迁移。
2、同时考虑目标实例近邻中的带标签和不带标签的实例(半监督)来分别计算异常分数,并为这两个异常分数根据label instance的近邻中是否也包含目标实例来分配权重。
LOF(基于密度的离群点检测方法)原理:利用了点O的周围密度和O的邻域内的周围密度的比值,这个值越接近1说明点O和他周围点越相似。这就和上面计算有标签和无标签的权重的方式很像
普通数据集构建:
本文确定的基准包含三个特性:1、出于经验评估的目的,benchmark应该包含大量的源域-目标域的数据对,他们之间的联合分布存在不同程度的差异。2、每一个源域-目标域对应该处于相同的特征空间。3、第三,源和目标域应该包含对分类来说并不简单的正常和异常实例。
生成过程:为了生成目标域,从最大类(第二大类)采样正常目标实例(异常目标实例),为了确保源域和目标域的分布差异,我们从目标域相同或不同类别来采样异常和正常样本来构造源域;follow了Emmott等人的程序来满足这个过程。
时间序列数据集构建:
有三个商店的三年的用水数据(单变量,采样间隔5分钟),首先将每条时间序列按一小时间隔划分成时间窗口,通过特征提取,每个窗口提取出31维特征。由于每天的不同时间的用水量差异很大,所以对于相同的时间间隔,就将他们分成一个组(例如11:00-12:00),这样每个商店就可以得到24个组,为每一个组训练一个异常检测器。
这样是不是相当于把每天内,用水量的时间依赖信息给切断了。
2 -Semi-supervised Anomaly Detection with an Application to Water Analytics
Vincent Vercruyssen
2018 ICDM
提出了一种新的基于约束聚类的异常检测方法,该方法可在无监督和半监督环境下工作
贡献:
1、结合机器学习方法,以设计一种新的半监督的异常检测方法;
该方法首先基于无监督模型,该模型使用基于聚类的方法(COP-k means约束聚类,)来定义典型的正常行为并识别异常(主要工作是基于三个假设定义一个异常分数,此异常分数比原来的分数相比有改进)。我们的系统采用主动学习,因此领域专家可以以真实标签的形式向模型提供反馈(Incorporating expert feedback into active anomaly discovery 2016)。只要提供反馈,该方法就会以半监督的方式运行,并以两种方式利用标签。第一,标签用于以约束形式指导聚类。第二,通过标签传播的方式更新初始的基于聚类的异常评分,以最大化所获取的标签数据的有用性。
2、说明如何将我们的方法应用于用水案例;
3、一项实证研究表明,我们提出的方法优于现有的异常检测方法以及公司的基准方法
4、讨论了已部署的系统体系结构。
在本文的相关工作(related work)中,作者列举了参考的其他方法,包括无监督和半监督,并且在每种方法的最后都强调了下自己方法的不同—-无监督和半监督结合,基于聚类(参考了CBLOF,参数少,并且考虑了聚类中心)等等
划分窗口,特征构建:
实验:
数据集划分:
这里的数据集划分和上面这篇Transfer Learning for Anomaly Detection的方法是相同的,也是将每天相同的小时组成一个组,为了进行评估,将那些包含多于50个带标签窗口的组挑选出来进行试验。
实验设置:
将每个组中带标签的窗口划分成训练集$D{train}$和测试集$D{test}$,将$D’{train}$初始化为空集,逐渐增加$D’{train}$中元素的数量直到等于$D{train}$,用来验证专家标签数量逐步增加对于半监督方法性能的提升有多大。使用$D’{train}$选择最好的参数,来在$D_{test}$中测试。
已部署
3 -Transfer learning for time series anomaly detection
Vincent Vercruyssen
2017 In CEUR Work- shop Proceedings
本文的算法尝试将源域中的带标签的数据迁移到目标域(没有标签)中,迁移的方法利用了异常是低频和不经常发生的观点来决定是否将实例进行迁移。一旦迁移完成,就在目标域中构建最近邻分类器,并将动态时间规整作为相似性度量。在一个真实数据集中进行实验,并发现他的效果超过了无监督的方法。
本文的方法:
4.1 基于两个性质,定义了每个源实例是否迁移的权重,而这个权重需要估计源实例在目标域的概率分布
4.2 基于密度的迁移决策函数
本文的数据是基于单变量时间序列,每条序列长度固定,将每条序列看成是一个长度为 d 的向量,将这些向量进行迁移并进行异常检测。但由于随着向量维度的增加需要指数及增加的样本来进行密度估计,但这样是不现实的,所以为了精确的概率密度估计,将长度为d的向量分割成 $l$ 个等长度 m 的子向量,然后进行密度估计。得到每条子序列的密度估计
由于上面的调整,对于一条时间序列会得到$l$个密度估计值估计,所以需要调整权重的计算方式。计算出最终的权重之后,给权重设置一个阈值,来决定是否进行迁移。
4.3 基于聚类的迁移决策函数
首先对目标域进行聚类,将整个目标域划分成大集合和小集合两个集合,并定义每个聚类的半径。最后,还是基于上面的两个性质来决定是否将源域中的实例迁移到目标域中:对于一个正常标签的实例,如果被划分到目标域中的大集合;对于一个异常标签的实例,满足其中一个条件:这个实例被划分到小集合,或者被划分到大集合,但是该实例到聚类中心的距离大于聚类半径。
4.4 监督异常检测
迁移之后,进行有监督异常检测。我们忽略目标域中没有标签的实例,只使用有标签的实例,用这些带标签的实例,构建1NN(最近邻)-DTW(dynamic time warping)分类器。
贡献:
对于时间序列中基于实例的迁移学习收到很少的关注。本文提出的基于实例的迁移方法不需要目标域有任何的标签,
实验:
本文用到的无监督基线还是CBLOF(cluster based local outlier factor)这个算法。
对于数据集,用到的也是真实数据集(用水),对于数据集的划分,也是同样的方法-由于每天的用水量差异很大,所以也是划分成24个窗口,得到24个数据集,每一个实例都是长度为1小时的时间序列。