异常检测——集成学习
Ensembles for Unsupervised Outlier Detection: Challenges and Research Questions
首先,知道一个模型好不好(精确不)
外部指标
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排名取出,然后依次拿出每个模型的第一名,排在一起,然后再拿第二名,以此类推。
总结
成功集成的关键
- 学到好的模型(精确)
- 让模型具有多样性
- 将这些模型结合在一起