异常检测——集成学习

Ensembles for Unsupervised Outlier Detection: Challenges and Research Questions

  • 首先,知道一个模型好不好(精确不)
    • 外部指标
    • 内部指标
  • 其次,提高不同模型的多样性
    • 多样性的意义
    • 多样性的引入
    • 多样性的评估
    • 模型的选择
  • 模型的集成
    • 异常分数的Normalization
    • 分数向量的合成
    • 排名的合成
  • 总结

首先,知道一个模型好不好(精确不)

外部指标

aucroc
top-k正确率
但是这些都是有监督的

内部指标

目前暂无

其次,提高不同模型的多样性

多样性的意义

图中红色的一个点代表一个模型的结果,绿圈代表groundtruth,蓝色代表集成各个模型后的结果。
异常检测——集成学习_第1张图片
当模型具有多样性时,模型之间可以互补,结果会更接近于groundtruth。
异常检测——集成学习_第2张图片
当模型不具备多样性时,多个模型的结果可能聚集在一起,导致最终的结果向该方向偏移,并不会取得很好的结果。
总的来说,每个模型越精确,模型之间越具有多样性,最终得到的结果就越好。

多样性的引入

目前主要通过以下几种方法实现:

  • 每个模型在不同的特征子集上学习
    • 如feature bagging
  • 每个模型在不同的数据子集上学习
    • 比如估计密度时,只用10%的数据,可以大大的提高运算速度,增加多样性
  • 用随机的方法训练/学习
    • 例如isolation forests ,每次subsample时,可以选随机的特征把树split,可以视为随机的方法
  • 用同一种方法学习,但是用不同的参数
    • 不同的参数会带来不同的学习效果
  • 用不同的模型学习
    • 使用时要注意结果的normalization and unification ,避免单模型分数高影响最终结果

多样性的评估

目前发现

  • 使用同一方法,不同参数学习的结果很相似
  • 不同的距离度量方法可以带来多样性
  • 同一家族里的算法具有相似的结果,如LOF和LoOP
  • Feature Bagging可以获得比较uncorrelated结果,能改善集成的结果

模型的选择

模型的选择有不同的方法,比较有代表性的是启发式的算法。
论文中给了一个贪心的模型选择算法。
异常检测——集成学习_第3张图片
利用weighted Pearson来判断相似性,然后进行贪心的选择。

模型的集成

已经获得了准确的、具有多样性的模型,并对其进行选择以后,就要将模型集成在一起了,集成时要注意以下几点。

异常分数的Normalization

避免单模型分数scale不同导致的误差

分数向量的合成

Normalization以后,如何将这些分数向量(1*m,m表示数据的个数)合成在一起,需要考虑实际的状况。

异常检测——集成学习_第4张图片
如果分数大,表示大概率为异常,分数小表示大概率为正常时,选用maximum score会倾向于将数据判断为异常。上图a表示会倾向于表示为异常,图b表示可能某个单个模型的结果会对最终结果造成很大的影响。
通常情况下,选用maximum score不如选用mean。
但是实际上还是根据具体应用具体分析。如果漏掉异常的代价比高的false alarm rate代价高,那么使用maximum score是不错的选择。如果false negative的代价高,而错过一个异常代价低,那么选择minimum也很好。

排名的合成

有时有些模型不输出异常分数,而是输出异常排名。这时候就要进行排名的合成了。这种在数据库和信息检索学中都有比较成熟的方法。
feature bagging 中使用的方法是breadth-first traversal rank combination,这是一种宽度优先的算法,将每个模型的topk排名取出,然后依次拿出每个模型的第一名,排在一起,然后再拿第二名,以此类推。

总结

成功集成的关键

  • 学到好的模型(精确)
  • 让模型具有多样性
  • 将这些模型结合在一起

你可能感兴趣的:(异常检测)