背景
什么是 LSCP ?
Locally Selective Combination in Parallel Outlier Ensembles(LSCP),一个多个异常检测算法的并行集成框架,可以对多个异常检测模型进行集成,提高性能与稳定性。
什么是并行(parallel)的集成?
如果多个模型之间是独立生成的,互不干扰,则能够并行执行,即并行的集成。它的对立面即是另一种集成方式即 —— 顺序(sequential)的集成,即模型之间是相互依赖,需要迭代训练得到的,比如像 boosting 这样的思想,但是由于异常检测属于无监督任务,即没有 ground truth,故无法使用类似的方式。
为何提出 LSCP?解决什么问题?
- 现有的组合方式不对模型进行选择,导致组合中存在较差的模型会影响组合之后的性能,导致组合之后只能得到一个比较平庸的结果
- 现在的大部分算法都忽略了数据中的局部特征
一个异常检测模型可能无法涵盖多种离群点的情况,故将多个模型组合起来是一种很好的解决方式。但是异常检测是一种无监督的任务,即数据没有标签,没有 ground truth,故无法像集成有监督模型一样,在集成的过程中,得到误分类的样本或者选择出准确率更高的模型。
现有的模型组合方式,都是不对模型进行选择,最后直接选择所有模型产出的异常分的平均值/最大值等指标作为样本最终的异常分数。但是不对模型进行选择的话,一些性能差的模型,将会影响组合后的模型的性能。
(LSCP 支持组合异构模型,也支持组合同构模型;组合异构模型可以让模型具有多样性,组合同构模型,通过设置不同的超参,也能实现多样性,论文利用组成多个超参不同 LOF 为例)
异常检测可以粗略分为局部异常和全局异常。全局异常即是整理考虑全部数据,找到与大盘数据偏离较远的点,即只有当异常点与全局数据分布差异非常大的时候,效果才比较好。而局部异常包含了部分在局部较异常,局部密度低,而在全局数据中观察较正常的情况。目前大部分算法都是全局异常算法,但是全局特征不能表示数据在局部的异常,所以在异常检测算法中,需要关注局部异常。
LSCP 最后达到的结果?
能够对不同的测试数据,利用不同的 base model 进行训练。即假设共有 10 个 base model,第一个测试数据可以用前三个模型进行,第二个测试数据利用后四个模型进行训练。
LSCP 框架介绍
给定训练集 X t r a i n ∈ R n × d X_{train} \in R^{n \times d} Xtrain∈Rn×d,包含 n n n 个 d d d 维样本;R 个 base models: C = { C 1 , C 2 , … , C R } C = \{ C_1, C_2, \ldots, C_R \} C={
C1,C2,…,CR}
第一步:首先利用训练集 X t r a i n X_{train} Xtrain 分别训练 R 个模型
第二步:当测试数据 X t e s t ( j ) ∈ R 1 × d X_{test}^{(j)} \in R^{1 \times d} Xtest(j)