异常检测——集成学习

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

外部指标

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

内部指标

目前暂无

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

多样性的意义

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

多样性的引入

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

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

多样性的评估

目前发现

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

模型的选择

模型的选择有不同的方法,比较有代表性的是启发式的算法。
论文中给了一个贪心的模型选择算法。
在这里插入图片描述
利用weighted Pearson来判断相似性,然后进行贪心的选择。

模型的集成

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

异常分数的Normalization

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

分数向量的合成

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

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

排名的合成

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

总结

成功集成的关键

  • 学到好的模型(精确)
  • 让模型具有多样性
  • 将这些模型结合在一起
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章